Skip to main content

Use temporary table as form datasource in D365FO

In this article, we will learn how we can use the temporary table as a form datasource in D365. In our scenario, we will populate the temporary table at runtime and bind it with the form datasource. firstly, we will pass an argument on the clicked event and write the form datasource  init  method to populate the data in it.  In our scenario we will work on the CustTable form, we will populate the customer group in the temporary table which we create on the selected customer while clicking the button. Step 1:  Create a new table of type TempDB and add two new fields i.e., CustGroupId and CustGroup. Step 2:  We will create a new form with the pattern (List Type), then add our previously created temporary table as a datasource, and then drag both the fields CustGroupId and CustGroup on the form grid part. After the form creation, we will also create the display menu item of type  form  and use our form on it. Step 3:  We will create an extension of t...

Insertion using RecordInsertList in D365

The RecordInsertList class facilitates array insertion functionality within the kernel. This feature enables the simultaneous insertion of multiple records into the database, thereby minimizing communication overhead between the application and the database.

When iterating through a while loop, it's optional to insert each record individually and hit the database while inserting every single iteration. An alternative and efficient approach is to utilize RecordInsertList because It will minimize the number of hits to the database. It can speed up your performance of insertion.

Here is an example of set based RecordInsertList class in which I am inserting data into my temp table:


MDTableTmp             mdTableTmp;
CustTable              custTable;
CustGroup              custGroup;
RecordInsertList       recordInsertListTmpTable;

recordInsertListTmpTable = new RecordInsertList(tableNum(MDTableTmp),
                                                false,
                                                false,
                                                false,
                                                false,
                                                false,
                                                mdTableTmp);

ttsbegin;
while select AccountNum, Currency, TaxGroup 
    from custTable   
    join Name 
    from custGroup
        where custTable.CustGroup == custGroup.CustGroup
          &&  custGroup.CustGroup == custGroupId    
    {
        mdTableTmp.clear();
        mdTableTmp.AccountNum = custTable.AccountNum;
        mdTableTmp.Currency   = custTable.Currency;
        mdTableTmp.TaxGroup   = custTable.TaxGroup;
        mdTableTmp.Name       = custGroup.Name;
        recordInsertListTmpTable.add(mdTableTmp);
    }
recordInsertListTmpTable.insertDatabase(); 
ttscommit;

Comments

Popular posts from this blog

Use temporary table as form datasource in D365FO

In this article, we will learn how we can use the temporary table as a form datasource in D365. In our scenario, we will populate the temporary table at runtime and bind it with the form datasource. firstly, we will pass an argument on the clicked event and write the form datasource  init  method to populate the data in it.  In our scenario we will work on the CustTable form, we will populate the customer group in the temporary table which we create on the selected customer while clicking the button. Step 1:  Create a new table of type TempDB and add two new fields i.e., CustGroupId and CustGroup. Step 2:  We will create a new form with the pattern (List Type), then add our previously created temporary table as a datasource, and then drag both the fields CustGroupId and CustGroup on the form grid part. After the form creation, we will also create the display menu item of type  form  and use our form on it. Step 3:  We will create an extension of t...

Display method and their alternative in D365

In this article, we will learn how to add a field to the VendTable form in Dynamics 365 using the display method and the alternative of using view. The field would be populated on two different locations whose navigations are as below: Navigation 1: Account payable -> Vendors -> All vendors Navigation 2:  Account payable -> Vendors -> All vendors -> Payment tab Add field using Display Method Display Method:  Any method which has a display keyword as a modifier is a display method. You can use the display method on formdatasource, tables, and forms. Display methods are used where we want to show additional information on the forms or reports such as field computation, getting value from different tables without creating active relationships on the datasource level, and so on.  Step 1: We will create an extension of table VendTable and after creating an extension we will create a COC of the table which contains our custom display method. To improve the perfor...

Inserting Data in Table using Query::insert_recordset

When dealing with performance, there is a query system control named Query::Insert_Recordset.  This allows multiple records to be inserted into a table in the same way the Insert_Recordset command works. This will also eliminate the  need to loop over hundreds of records, as well as roundtrips between the SQL server and the AOS server.  Here is a quick demo of how it works:  Query query = new Query(queryStr(MDTrvExpenseDetailsQuery)); QueryRun queryRun; QueryBuildDataSource qbdsTrvExpTrans, qbdsTrvExpTable, qbdsProjTable, qbdsHcmWorker, qbdsDirPerson; Map fieldMapping; HcmPositionWorkerAssignment hcmPositionWorkerAssignment; HcmPosition hcmPosition; MDTrvExpenseDetailsContract contract = this.parmDataContract() as MDTrvExpenseDetailsContract; paymentStatus...