Vous êtes sur la page 1sur 9

Generation of AutoNumber using Number Sequence

Note: AutoNumber will generate on Form Level not on Table Level.

Step 1: Add New Element in NumberSeqModule Base Enum.

Step2: Create New Class for the module created in Step 1 inherits from
NumberSeqReference.

Step3: Add Two Methods named loadModule and numberSeqModule in the Class
created in Step 2.

// Code For numberSeqModule

public static client server NumberSeqModule numberSeqModule()

return NumberSeqModule::ItemCode;
// Change ItemCode by Element you created in Step1.

//Code For loadModule

protected void loadModule()

NumberSequenceReference numRef;

/* Item Code */

numRef.dataTypeId = typeId2ExtendedTypeId(typeid(ItemCode1));

// Change ItemCode1 by the EDT of your Field.

numRef.referenceHelp = literalStr("@SYS72708");

numRef.wizardContinuous = true;

numRef.wizardManual = NoYes::No;

numRef.wizardAllowChangeDown = NoYes::No;

numRef.wizardAllowChangeUp = NoYes::No;

numRef.wizardHighest = 999999;

this.create(numRef);

// you can add more than one Data Type in same manner like here Item Code.

Step4: Add two methods named numberSeqModule and numberSeqReference in


Parameter Table, and also add methods for all code you entered in loadModule
in Step3.

//Code for numberSeqModule

client server static NumberSeqModule numberSeqModule()

return NumberSeqReference_ItemCode::numberSeqModule();
// Change NumberSeqReference_ItemCode by Class Name you created in Step2.

//Code for numberSeqReference

client server static NumberSeqReference numberSeqReference()

return NumberSeqReference::construct(

ParameterItem::numberSeqModule());

//Change ParameterItem by your Parameter Table Name

//Code for the Item Code created in Step3.

client server static NumberSequenceReference numRefItemCode()

return NumberSeqReference::findReference(

typeId2ExtendedTypeId(typeid(ItemCode1)));

//Change ItemCode1 by your EDT specified in Step3.

Step5: Add method named numberSequenceCode in the table on which Auto Number
Generates.

//Code for numberSequenceCode

server static NumberSequenceCode numberSequenceCode()

return ParameterItem::numRefItemCode().NumberSequence;

// Change ParameterItem by your parameter table name used in Step4.

Step6: Add NumberSeqFormHandler in ClassDeclaration of Form.


Step7: Add numberSeqFormHandler method in Form.

//Code for numberSeqFormHandler

NumberSeqFormHandler numberSeqFormHandler()

if (!numberSeqFormHandler)

numberSeqFormHandler = NumberSeqFormHandler::newForm

(ParameterItem::numRefItemCode().NumberSequence,

element, Item_DS, fieldnum(Item, ItemCode));

/*Change ParameterItem By your Parameter Table and Item_DS by your DataSource

Name Item and ItemCode in fieldnum by your table and field on which Auto Number
generates.*/

return numberSeqFormHandler;

Step8: Override following methods of DataSource Table on the form.

i) Active
ii) Create
iii) Linkactive
iv) Delete
v) Write

// Here is Code which to be placed.


//For Active

public int active()

int ret;

ret = super();

//TO DO Remove re read from here and place it in a suitable event.

Item_DS.reread();

Item_DS.refresh();

return ret;

//linkActive

public void linkActive()

element.numberSeqFormHandler().formMethodDataSourceLinkActive();

super();

//For Delete

public void delete()

ttsbegin;

element.numberSeqFormHandler().formMethodDataSourceDelete();

super();

ttscommit;

// For write

public void write()


{

ttsbegin;

element.numberSeqFormHandler().formMethodDataSourceWrite();

super();

ttscommit;

// For Create

void create(boolean append = false,

boolean extern = false) // If created externally

//SET FOCUS TO THE FIELD

element.numberSeqFormHandler().formMethodDataSourceCreatePre();

super(append);

if (!extern)

element.numberSeqFormHandler().formMethodDataSourceCreate();

Step9: You must modify the construct() and moduleList() methods on


NumberSeqReference itself to add references to your new module class.
// Change NumberSeqReference_ItemCode by class name created in step2.
//change NumberSeqReference_ItemCode by class name created in step2.

Step10: At Last run wizard from NumberSequence under the node NumberSequences.

Vous aimerez peut-être aussi