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.
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.