Skip to main content

Populating a form Grid through a Temp table using a query

The following is my code.
classDeclaration:
public class FormRun extends ObjectRun
{
CustInvoiceTrans custInvTransTmp;
CustInvoiceJour custInvJourTmp;
InventDim inventDimTmp;
CustTable custTableTmp;

TmpSales_by_State_Table tmpDS;
}

populateRecords()
void populateRecords()
{
Query query;
QueryRun queryRun;
QueryBuildDataSource qbds1,qbds2,qbds3,qbds4;
QueryBuildRange qr;

;

delete_from tmpDS;

query = new Query();
qbds1 = query.addDataSource(tableNum(CustInvoiceTrans));
qbds2 = qbds1.addDataSource(tableNum(CustInvoiceJour));
qbds2.relations(true);
qbds2.joinMode(JoinMode::InnerJoin);

qbds3 = qbds1.addDataSource(tableNum(InventDim));
qbds3.relations(true);
qbds3.joinMode(JoinMode::InnerJoin);

qbds4 = qbds2.addDataSource(tableNum(CustTable));
qbds4.relations(true);
qbds4.joinMode(JoinMode::InnerJoin);
qr = qbds1.addRange(fieldNum(CustInvoiceTrans, InvoiceDate));

queryRun = new QueryRun(query);


if (queryRun.prompt())
{
while (queryRun.next())
{
custInvTransTmp = queryRun.get(tableNum(CustInvoiceTrans));
custInvJourTmp = queryRun.get(tableNum(CustInvoiceJour));
inventDimTmp = queryRun.get(tableNum(InventDim));
custTableTmp = queryRun.get(tableNum(CustTable));

tmpDS.InvoiceId = custInvJourTmp.InvoiceId;
tmpDS.OrderAccount = custInvJourTmp.OrderAccount;
tmpDS.InvoiceDate = custInvTransTmp.InvoiceDate;
tmpDS.SalesId = custInvJourTmp.SalesId;
tmpDS.ItemId = custInvTransTmp.ItemId;
tmpDS.ExternalItemId = custInvTransTmp.ExternalItemId;
tmpDS.LineAmount = custInvTransTmp.LineAmount;
tmpDS.Qty = custInvTransTmp.Qty;
tmpDS.PurchaseOrder = custInvJourTmp.PurchaseOrder;
tmpDS.DueDate = custInvJourTmp.DueDate;
tmpDS.DeliveryName = custInvJourTmp.DeliveryName;
tmpDS.DlvCountryRegionId = custInvJourTmp.DlvCountryRegionId;
tmpDS.DeliveryCity = custInvJourTmp.DeliveryCity;
tmpDS.DlvState = custInvJourTmp.DlvState;
tmpDS.DlvZipCode = custInvJourTmp.DlvZipCode;
tmpDS.DeliveryAddress = custInvJourTmp.DeliveryAddress;
tmpDS.InventLocationId = inventDimTmp.InventLocationId;
tmpDS.InvoiceAccount = custInvJourTmp.InvoiceAccount;
tmpDS.InvoicingName = custInvJourTmp.InvoicingName;
tmpDS.InvCountryRegionId = custInvJourTmp.InvCountryRegionId;
tmpDS.InvoiceCity = custInvJourTmp.InvoiceCity;
tmpDS.InvState = custInvJourTmp.InvState;
tmpDS.InvZipCode = custInvJourTmp.InvZipCode;
tmpDS.InvoicingAddress = custInvJourTmp.InvoicingAddress;

tmpDS.insert();

}
}
TmpSales_by_State_Table.setTmpData(tmpDS);
}

init():
public void init()
{

super();

this.populateRecords();

}

It turned out that the Grid's DataSource property was lost after removing and readding fields to the grid. After resupplying this property, the grid successfully displays data.

Popular posts from this blog

What does this mean: "The form datasource query object does not support changing its AllowCrossCompany property after the form has executed the query."?

I have made a form with datasources vendtable and vendtrans. Inside vendtable_ds.executequery() looks like this: QueryBuildDataSource queryBuildDatasource ,queryBDS_VendTrans_Invoice; ; queryBuildDatasource = this.query().dataSourceTable(tablenum(vendtable)); queryBDS_VendTrans_Invoice = this.query().dataSourceTable(tablenum(vendtrans)); if (curext() == "MASTERCOMP") { this.query().allowCrossCompany(true); } else { this.query().allowCrossCompany(false); } //FilterVendorName = stringedit control on form if (FilterVendorName.text()) { queryBuildDatasource.addRange(fieldNum(VendTable,Name)).value(strfmt("*%1*", FilterVendorName.text())); } else { queryBuildDatasource.clearRange(fieldNum(VendTable,Name)); } //FilterInvoiceNumber = stringedit control on form if (FilterInvoiceNumber.valueStr() == "") { queryBDS_VendTrans_Invoice.enabled(false); } else { queryBDS_VendTrans_Invoice.enabled(true); queryBDS_VendTrans_In...

Print Report in Microsoft Dynamics AX 2009 through X++

I am trying to print sales confirmation report on a button click which I have added on Sales Order Detail form in Microsoft Dynamics AX 2009. On click event of that button, I have written following code: void clicked() {     Args                args;     ReportRun           reportRun;     SalesFormLetter     salesFormLetter;     PrintJobSettings    printJobSettings;     CustConfirmJour     custConfirmJour;     RecordSortedList    list                = new RecordSortedList(55);     SalesTable          salesTableUpdate;     ;     SELEC...