Showing posts with label DATASOURCE. Show all posts
Showing posts with label DATASOURCE. Show all posts
Friday, December 23, 2016
DIFFERENCE BETWEEN REFRESH(),REREAD(),RESEARCH() & EXECUTEQUERY() :DYNAMICS AX 2012 REFRESH AND REREAD
1. Refresh
This method basically refreshes the data displayed in the form controls
with whatever is stored in the form cache for that particular datasource
record. Calling refresh () method will NOT reread the record from the database.
So if changes happened to the record in another process, these will not be
shown after executing refresh ().
2. refreshEx
This method should be used sparingly, in cases where multiple rows from the
grid are updated, resulting in changes in their display Options, as an example.
So you should avoid using it as a replacement for refresh (), since they
actually have completely different implementations in the kernel.
3. Reread
Calling reread () will query the database and re-read the current record
contents into the datasource form cache. This will not display the changes on
the form until a redraw of the grid contents happens
4. Research
Calling research() will rerun the existing form query against the database,
therefore updating the list with new/removed records as well as updating all
existing rows. This will honor any existing filters and sorting on the form
that were set by the user.
5. Execute Query
Calling executeQuery () will also rerun the query and update/add/delete the
rows in the grid. The difference in behavior from research is described below.
ExecuteQuery should be used if you have modified the query in your code and
need to refresh the form to display the data based on the updated query.
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;
}
Labels:
args,
AX,
ax 2009,
ax 2012,
AX2012,
DATASOURCE,
dax,
DAX 2012,
delete,
DIALOG,
dynamics ax,
edt,
FORM,
GETFROMDIALOG,
number,
number sequence,
sequence,
X++
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();
}
Labels:
add,
args,
AX,
ax 2009,
ax 2012,
DATASOURCE,
dax,
delete,
dynamics ax,
edt,
FORM,
number,
number sequence,
number sequnce,
sequence
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 ()
Labels:
2012,
a,
AX,
CALLED,
CODE IN AX 2012,
CREATE,
CREATED/UPDATED,
DATASOURCE,
FORM,
FORMS,
IN,
INIT,
INITVALUE,
IS,
METHODS,
OPENED/CLOSED,
OR,
RECORD,
VALIDATEWRITE,
WHEN
Subscribe to:
Posts (Atom)