Skip to main content

How to Manage Serial# through database Sequence

How to Manage Serial# through database Sequence

Create sequence invoice_serial
MINVALUE 1
maxvalue 99999999
increment by 1;
If you need to modify the sequence to start with particular number
Create sequence invoice_serial
start with 8
increment by 1
maxvalue 99999999;
Now write a PRE_INSERT trigger to access the sequence through form.
select invoice_serial.nextval 
into :invoice_details.serial#
from dual;
Note: In the above case database sequence updated and serial is displayed when you save the record.

How to Control the sequence through database Table:
Create a form as well as database table and sequence from where from where you want to handle the sequence.
CREATE TABLE INVOICE_SEQUENCE
(
SEQ_COMP NUMBER(1),
SEQ_YEAR NUMBER(4),
SEQ_TYPE NUMBER(2),
SEQ_SEQ NUMBER(10));
PRIMARY KEY: SEQ_COMP, SEQ_YEAR, SEQ_TYPE
CREATE SEQUENCE INVOICE_SEQ
   MINVALUE 1
   MAXVALUE 99999999
   START WITH 1
   INCREMENT BY 1
   CACHE 20;
Then create the required form to handle the sequence. Here in below example we have created the ‘INVOICE’ form in which we will handle the invoice# number automatically incremented with each transaction.
Then write a PRE-INSERT TRIGGER on block to update/insert the sequence.
---- update the sequence ----
BEGIN
      UPDATE INVOICE_SEQUENCE SET  SEQ_SEQ=SEQ_SEQ+1
      WHERE SEQ_YEAR=TO_NUMBER(TO_CHAR(:INVOICE_HEADER.INV_DATE,'YYYY'))
      AND SEQ_COMP = 1 AND SEQ_TYPE = 0;
exception
      when   others then
      show_message(2,2);
END;
BEGIN
  SELECT MAX(TO_NUMBER(TO_CHAR(:INVOICE_HEADER.INV_DATE, 'YY')))
  into   :INVOICE_HEADER.YY
  FROM   INVOICE_HEADER;
exception
      when   others then
      show_message(2,2);
END;
--Get the new sequence----
BEGIN
      select SEQ_SEQ
      into   :INVOICE_HEADER.INVOICE#
      from   INVOICE_SEQUENCE
WHERE SEQ_YEAR=TO_NUMBER(TO_CHAR(:INVOICE_HEADER.INV_DATE,'YYYY'))
      AND SEQ_COMP = 1 AND SEQ_TYPE = 0;
 exception
      when   no_data_found then
            show_message(1,'Could not retrieve the Serial Number!');
            raise form_trigger_failure;
      when   others then
             show_message(2,2);
END;

How Manage Form details auto Serial Number:
To display Master/Details Form serial number automatically in the form.
Just open the property of the item and change
item_name: serial#
item_type: display item
database item: yes
Calculation Mode: Formula
Formula: :system.trigger_record; or system.cursor_record;
-or- you can write the same things into POST_INSERT or WHEN_NEW_RECORD_INSTANCE trigger
:invoice_details.serial# = :system.trigger_record;
Note: It will display your serial automatically when inserting new record before save.


Comments

Popular posts from this blog

Tablespace Management using Toad

You can view all of your tablespace information using toad tablespace screen from Database –> Administer –> Tablespaces Here each table describes different detailed information across all the tablespaces in database. If you open this screen from the toad DBA module then you are also able to see the “space history” and “IO history” tab along with Files, Free space, object, Fragmentation. With these tab you are able to able perform space monitoring and planning steps. These tab permits you check graphically space and IO usage over time. Through this way DBA are also able to estimate ‘Object size’ based on this estimation. From the below “alter tablespace” tab you can §          Modify the tablespace and datafile size. §          Add new datafile to the tablespace.

Import Excel Data into Oracle using Oracle form Button

Import Excel Data into Oracle using Oracle form Button 1. Create a button on the form with the name "IMPORT_EXCEL" and write a pl/sql on "WHEN BUTTON PRESSED" trigger. BEGIN IF :System.Cursor_Block<>'GL_DAILY_COMPOUND_HEADER' THEN   Go_Item('GL_DAILY_COMPOUND_HEADER.V_DATE'); END IF; IF :System.Mode = 'NORMAL' AND :System.Record_Status IN ('NEW','INSERT') THEN   IMPORT_EXCEL_PROC;   ---Form procedure ELSE  MESSAGE('Import allowed only for new entry!!!');  MESSAGE('Import allowed only for new entry!!!'); END IF; END; 2. Now write the procedure "IMPORT_EXCEL_PROC" into the program unit. Don't forget to create required table and folder for procedure IMPORT_EXCEL_PROC PROCEDURE IMPORT_EXCEL_PROC IS application    OLE2.Obj_Type; workbooks      OLE2.Obj_Type; workbook       OLE2.Obj_Type; worksheets      OLE2.Obj_Type; worksheet       OLE2.Obj_Type; ce...

Changing National Character Set AL16UTF16 to UTF8

Changing National Character Set AL16UTF16 to UTF8 The national character set is used for data that is stored in table columns of the types NCHAR, NVARCHAR2, and NCLOB.  In contrast, the database character set is used for data stored in table columns of the types CHAR, VARCHAR2 and CLOB. Like the database character set, the national character set is defined when the database is initially created and can usually no longer be changed, at least not easily or without involving quite a lot of work (export, recreate database, import). Except when creating the database, where the national character set is defined explicitly, it can change implicitly even when upgrading the database from Oracle8i to Oracle9i (or Oracle10g). You require SYSDBA authorization to change the national character set. Changing the national character set means changing an Oracle Dictionary entry, but no data is changed.  $sqlplus /nolog SQL> CONNECT / AS SYSDBA SQL> Select property_...