Showing posts with label FORM. Show all posts
Showing posts with label FORM. Show all posts

Thursday, November 10, 2016

DIALOG AND GET VALUE FROM DIALOG BOX USING AXAPTA X++ DYNAMICS AX

DIALOG AND GET VALUE FROM DIALOG BOX USING AXAPTA
Below is a Code how  to add dialog and get value from dialog box in dynamics Axapta. This is very simple you just need to create one method which is overridden method is dialog. Dialog method used to initialized dialog box for your form or report but without using get from dialog method you can not get value of dialog control.

So both method is important dialog and getfromdialog.

 public Object dialog(Object _dialog)
 {
 DialogRunbase dialog = _dialog;
 DialogGroup dateGroup;
 ;
 dateGroup = dialog.addGroup("");
 dateGroup.frameType(1);
 dateGroup.columns(2);
 fromdate = LedgerPeriod::findOpeningDate(systemdateget());
 toDate= systemdateget();
 dialog.addGroup("@SYS4083",dateGroup);
 dialogFromDate = dialog.addFieldValue(typeid(FromDate),fromDate,'',"@SYS67");
 dialog.addGroup("@SYS8828",dateGroup) ;
 dialogToDate = dialog.addFieldValue(typeid(ToDate),toDate,'',"@SYS67");
 dialog.addGroup("@SYS24500");
 dialogPageChange = dialog.addFieldValue(typeid(NoYes),pageChange,"@SYS15349","@SYS24755");
 dialogResetPage = dialog.addFieldValue(typeid(NoYes),resetPage,"@SYS9358","@SYS24756");
 dialog.addGroup("@SYS12608");
 dialogDetailSummary = dialog.addFieldValue(typeid(DetailSummary),detailSummary,'',"@SYS24757");
 dialogNoneBeginTransEnd = dialog.addFieldValue(typeid(NoneBeginTransEnd),noneBeginTransEnd,
 "@SYS1046","@SYS69638");
 dialogIncludeOpening = dialog.addFieldValue(typeid(NoYes),includeOpening,"@SYS23250","@SYS54008");
 dialogIncludeClosing = dialog.addFieldValue(typeid(NoYes),includeClosing,"@SYS14844","@SYS82258");
 dialog.addGroup("Opening Balance Account");
 dialogOpeningBalance = dialog.addField(typeId(LedgerAccount)
 ,"Opening Balance Account");
 return dialog;
 }
 public boolean getFromDialog()
 {
 ;
 fromDate = dialogFromDate.value();
 toDate = dialogToDate.value();
 detailSummary = dialogDetailSummary.value();
 pageChange = dialogPageChange.value();
 resetPage = dialogResetPage.value();
 noneBeginTransEnd = dialogNoneBeginTransEnd.value();
 includeOpening = dialogIncludeOpening.value();
 includeClosing = dialogIncludeClosing.value();
 OpLedgerAccount = dialogOpeningBalance.value();
 return true;
 }  

DYNAMICS AX CREATE CUSTOM NUMBER SEQUENCE X++ CODE SAMPLE

|| DYNAMICS AX NUMBER SEQUENCE ||

Suppose we want create number sequence for Test field on form in General  ledger module
Consideration: EDT-Test, Table-NumSeqTable and Form- NumSeqTable

Step1. Create new EDT with name Test
Step 2. Modify load module() method on  NumberSeqModuleLedger class

{
     datatype.parmDatatypeId(extendedTypeNum(Test));
     datatype.parmReferenceHelp(literalStr("Test"));
     datatype.parmWizardIsManual(NoYes::No);
     datatype.parmWizardIsChangeDownAllowed(NoYes::No);
     datatype.parmWizardIsChangeUpAllowed(NoYes::No);
     datatype.parmWizardHighest(999);
     datatype.parmSortField(30);
     datatype.addParameterType(NumberSeqParameterType::DataArea, true, false);
     this.create(datatype);
}

Step 3.Create a method on LedgerParameters Table

     client server static NumberSequenceReference numRefTest()
{
     return NumberSeqReference::findReference(extendedTypeNum(Test));
}

Step 4.Write and run following job

static void NumberSeqLoadAll(Args _args)
{
         NumberSeqApplicationModule::loadAll();
}


Step 5.Then run the wizard

Organization Administration -> CommonForms -> Numbersequences->Numbersequences-> Generate -> run the wizard.

Step 6.Now we have to check the number sequence  is correctly working  for that write a job:

static void NumSeq(Args _args)
{
    NumberSeq  numberSeq;
    Test num;
    ;
    numberSeq = NumberSeq::newGetNum(ProjParameters:: numRefTest ());
    num = numberSeq.num();
    info(num);
}


Step 7.Now we want that Number Sequence in form level(Test Table):


 Write below code in class declaration  
public class FormRun extends ObjectRun
{
    NumberSeqFormHandler numberSeqFormHandler;

}

 Step 8.Write the NumberSeqFormHandler() in form methods node.

NumberSeqFormHandler numberSeqFormHandler()
{
    if (!numberSeqFormHandler)
    {
       numberSeqFormHandler = NumberSeqFormHandler::newForm(LedgerParameters:: numRefTest ().NumberSequenceId,
                                                             element,
                                                             NumSeqTable_DS,
                                                             fieldNum(NumSeqTable, Test)
                                                            );
    }
    return numberSeqFormHandler;
}


Step 9.Write the  Create(),Delete(),Write() , Validate Write(),Link Active() on the Data source methods node.
 Create() Method
void create(boolean append = false,
            boolean extern = false) 
{
    element.numberSeqFormHandler().formMethodDataSourceCreatePre();

    super(append);

    if (!extern)
    {
        element.numberSeqFormHandler().formMethodDataSourceCreate(true);
    }
}

Delete() Method

public void delete()
{
    element.numberSeqFormHandler().formMethodDataSourceDelete();
    super();
}

Write()Method

public void write()
{
    super();
    element.numberSeqFormHandler().formMethodDataSourceWrite();
}



Validate Write() Method

public boolean validateWrite()
{
    boolean         ret;
    ret = super();
    ret = element.numberSeqFormHandler().formMethodDataSourceValidateWrite(ret) && ret;
    if (ret)
    {
        NumSeqTable.validateWrite();
    }
    return ret;
}

Link Active() Method

public void linkActive()
{
    ;
    element.numberSeqFormHandler().formMethodDataSourceLinkActive();
    super();
}
Step 10.Finally add Close() method on form 
void close()
{
    if (numberSeqFormHandler)
    {
        numberSeqFormHandler.formMethodClose();
    }
    super();
}


Saturday, October 15, 2016

METHODS CALLED WHEN A FORM IS OPENED/CLOSED OR A RECORD IS CREATED/UPDATED IN AX 2012 FORMS

Sequence of methods called in AX from a FORM


Hi...
This gives the information of method calls in the form level while
1. Opening the Form.
2. Creating/Updating/Deleting the record in the Form.
3. Closing the Form.
Sequence of Methods calls while opening the Form
Form --- init ()
Form --- Datasource --- init ()
Form --- run ()
Form --- Datasource --- execute Query ()
Form --- Datasource --- active ()
Sequence of Methods calls while closing the Form
Form --- canClose ()
Form --- close ()
Sequence of Methods calls while creating the record in the Form
Form --- Datasource --- create ()
Form --- Datasource --- initValue ()
Table --- initValue ()
Form --- Datasource --- active ()
Sequence of Method calls while saving the record in the Form
Form --- Datasource --- ValidateWrite ()
Table --- ValidateWrite ()
Form --- Datasource --- write ()
Table --- insert ()
Sequence of Method calls while deleting the record in the Form
Form --- Datasource --- validatedelete ()
Table --- validatedelete ()
Table --- delete ()
Form --- Datasource --- active ()
Sequence of Methods calls while modifying the fields in the Form
Table --- validateField ()

Table --- modifiedField ()

Friday, April 15, 2016

HOW TO DEBUG AX 2012 SSRS REPORT CODE BREAKPOINT SrsReportDataProviderPreProcess

HOW TO DEBUG AX 2012 SSRS REPORT 


1)   Open the DP class of the report.
2)  Extend SrsReportDataProviderPreProcess instead of SrsReportDataProviderBase
 in class declaration.
 Temp table properties should be

     (a) Table type : Regular instead of tempDB

     (b)  Created by : Yes

     (c) Created Transaction Id : Yes

Make sure  two checkboxes of user breakpoints and global breakpoints for debugging is enabled  in configuration .


AX FORM TABLE LOOKUP X++ CODE TABLE LOOKUP FORM LOOKUP

AX FORM TABLE LOOKUP X++ CODE TABLE LOOKUP FORM LOOKUP 


public void lookup()
{
 //   SysTableLookup sysTableLookup; // systemclass to create //customlookup
    Query query;
    QueryBuildDataSource qbd;
    SysTableLookup sysTableLookup = sysTableLookup::newParameters(tableNum(VIKASTable), this);
    ;
   // sysTableLookup = SysTableLookup::newParameters(tablenum(VIKASconfLocationTable));//_formcontrol);

    // Construct query on the table,
    // whose records you want to show as lookup.
    query = new Query();
    qbd = query.addDataSource(tablenum(VIKASTable));


    // add the fields to the lookup list
    sysTableLookup.addLookupfield(fieldnum(VIKASconfLocationTable,LocationID));
    sysTableLookup.addLookupfield(fieldnum(VIKASconfLocationTable,LocationName));

    // pass the query as parameter
    // system will show the records in the lookup
    // as per your query
    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();
}


Form main datasource ka lookup
public void lookup(FormControl _formControl, str _filterStr)
{


   SysTableLookup sysTableLookup; // systemclass to create //customlookup
    Query query;
    QueryBuildDataSource qbd;
   // SysTableLookup sysTableLookup = sysTableLookup::newParameters(tableNum(VIKASTable), this);
    ;
    sysTableLookup = SysTableLookup::newParameters(tablenum(VIKASTable),_formcontrol);

    // Construct query on the table,
    // whose records you want to show as lookup.
    query = new Query();
    qbd = query.addDataSource(tablenum(Table)); 
    // add the fields to the lookup list
    sysTableLookup.addLookupfield(fieldnum(VIKASTable,Location));
   // sysTableLookup.addLookupfield(fieldnum(VIKASTable,LocationName));

    // pass the query as parameter
    // system will show the records in the lookup
    // as per your query
    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();
}

add table lookup in form
public void lookup(FormControl _formControl, str _filterStr)
{
    SysTableLookup              sysTableLookup;
    Query                              query;
    QueryBuildDataSource    queryBuildDataSource;
    QueryBuildRange             queryBuildRange;
    ;
    sysTableLookup  = SysTableLookup::newParameters(tablenum(EmplTable), _formControl);
    sysTableLookup.addLookupfield(fieldnum(EmplTable, EmplId));
    sysTableLookup.addLookupfield(fieldnum(EmplTable, legacyEmplId));
    sysTableLookup.addLookupMethod(identifierstr(name));
    query                              =  new Query();
    queryBuildDataSource    =  query.addDataSource(tablenum(EmplTable));
 
    sysTableLookup.parmQuery(query);
    sysTableLookup.performFormLookup();
}

Related Posts Plugin for WordPress, Blogger...