Skip links

Using a normal table as temporary table


Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 117

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 118

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 117

Notice: Trying to access array offset on value of type bool in /var/www/vhosts/dmrbt.com/httpdocs/wp-content/themes/boo/rella/extensions/aq_resizer/aq_resizer.php on line 118
Using a normal table as temporary table

Standard Dynamics AX contains numerous temporary tables, which are used by the
application and could be used in custom modifications too. Although new temporary tables
could also be easily created using AOT, sometimes it is not effective. One of the cases could
be when the temporary table is very similar or exactly the same as an existing “real” one. The
goal of this recipe is to demonstrate an approach to how standard non-temporary tables could
be used as temporary.

As an example, we will use the vendor table to insert and display a couple of temporary
records without affecting actual data.
How to do it…
1. In AOT, create a new class called VendTableTmp with the following code:
class VendTableTmp
{
}
server static void main(Args _args)
{
VendTable vendTable;
;
vendTable.setTmp();
vendTable.AccountNum = ‘1000’;
vendTable.Name = ‘Vendor 1’;
vendTable.PartyId = ‘1’;
vendTable.doInsert();
vendTable.clear();
vendTable.AccountNum = ‘1002’;
vendTable.Name = ‘Vendor 2’;
vendTable.PartyId = ‘2’;
vendTable.doInsert();
while select vendTable
{
info(strfmt(
“%1 – %2”,
vendTable.AccountNum,
vendTable.Name));
}
}
2. Run the class to see results:
1000 Vendor 1
1002 Vendor 2
How it works…
The principle of this recipe is in the setTmp() method. It is available on all tables, and it
declares the current table instance to behave as a temporary table in the current scope. So in
this recipe, we first call setTmp() on the vendTable table to make it temporary in the scope
of this method. That means any data manipulations will be lost once the execution of this
method is over and actual table content will not be affected.
Next, we insert couple of test records. Here, we use doInsert() to bypass any validation
rules that are not required in this recipe.
The last thing to do is to check for newly created records by listing the vendTable table. We
can see that although the table contains many actual records, only the ones which we have
inserted here are listed.
Source
Microsoft Dynamics AX 2009 Development Cookbook Dec 2009

Opinions

  1. Post comment

    i tried stuff like this with salesquotationline table, but after i insert the record by doInsert(), till here is ok, but i load the data in form , datasource is load by research() method, the dataareadid field is changed to ‘DAT’ which is not current company,
    any suggestions to keep current company as it is?

    Permalink

Join the Discussion