如何在 运行 时间 AX 2012 期间更新临时 table 数据
How to update temp table data during run time AX 2012
我是 X++ 开发新手。我正在尝试在供应商老化报告中添加一个字段。它是按例外情况完成的。
我的问题是在 运行 时间内更新字段值。
场景,
我们有一个发票字段包含 "AA_BBBBBB"。我需要做的是我需要将值拆分为 AA、BBBBBB,并将 BBBBBB 更新为发票字段,将 AA 更新为新字段(发票类型)。
问题,
一旦我在方法 VendAgingReportDP\insertVendAgingReportTmp 中获得了可诱惑 VendAgingReportTmp 的值,我就尝试更新上述场景,但 code is not selecting the records from VendAgingReportTmp
。谁能帮我完成这件事。
在VendAgingReportDP
classinsertVendAgingReportTmp
最后一行标准代码是vendAgingReportTmp.insert();
如果您的代码在 vendAgingReportTmp.insert();
之前,则无需执行更新。如果你把 vendAgingReportTmp.update();
放在 vendAgingReportTmp.insert();
之前,你会得到那个错误。
将您的代码放在 //YourCode
和 //YourCode END
中,不要 vendAgingReportTmp.update();
示例:
/// <summary>
/// Inserts records into the temporary <c>VendAgingReportTmp</c> table.
/// </summary>
/// <param name="_reverseAmountsAndHeadings">
/// A boolean value which indicates whether the column values should be reversed.
/// </param>
private void insertVendAgingReportTmp(boolean _reverseAmountsAndHeadings)
{
vendAgingReportTmp.AsOfDate = strFmt("@SYS84682", date2StrUsr(contract.parmZeroDate(), DateFlags::FormatAll), contract.parmDateTransactionDuedate());
vendAgingReportTmp.HeadingAccount = strFmt("@SYS24500");
vendAgingReportTmp.HeadingName = strFmt("@SYS7399");
switch (contract.parmDateTransactionDuedate())
{
case DateTransactionDuedate::DocumentDate : vendAgingReportTmp.HeadingDate = "@SYS2587";
break;
case DateTransactionDuedate::TransactionDate : vendAgingReportTmp.HeadingDate = "@SYS67";
break;
case DateTransactionDuedate::DueDate : vendAgingReportTmp.HeadingDate = "@SYS14588";
break;
default : vendAgingReportTmp.HeadingDate = "@SYS14588";
break;
}
if (_reverseAmountsAndHeadings)
{
this.setVendAgingReportTmpInReverse();
}
else
{
this.setVendAgingReportTmp();
}
vendAgingReportTmp.TransDate = tmpAccountSum.TransDate;
vendAgingReportTmp.InvoiceId = tmpAccountSum.InvoiceId;
vendAgingReportTmp.Voucher = tmpAccountSum.Voucher;
vendAgingReportTmp.AccountNum = tmpAccountSum.AccountNum;
vendAgingReportTmp.Name = vendTable.name();
vendAgingReportTmp.VendAccount = tmpAccountSum.AccountNum;
vendAgingReportTmp.Txt = tmpAccountSum.Txt;
vendAgingReportTmp.Balance = 100;
vendAgingReportTmp.CurrencyCode = tmpAccountSum.CurrencyCode;
vendAgingReportTmp.VendGroup = vendTable.VendGroup;
//YourCode
//...
//...
//...
//YourCode END
vendAgingReportTmp.insert();
}
我在下面添加了一个解决方案,
- 添加了 InvoiceType 字段到 temptable VendTmpAccountSum 因为这被声明为全局变量。
- 将我们的自定义发票类型更新为 VendTmpAccountSum 中的 InvoiceType 字段。
- 然后使用[=36=将VendTmpAccountSumtable中的全部数据插入VendAgingReportTmp ] 以提高性能。
谢谢,
我是 X++ 开发新手。我正在尝试在供应商老化报告中添加一个字段。它是按例外情况完成的。
我的问题是在 运行 时间内更新字段值。
场景, 我们有一个发票字段包含 "AA_BBBBBB"。我需要做的是我需要将值拆分为 AA、BBBBBB,并将 BBBBBB 更新为发票字段,将 AA 更新为新字段(发票类型)。
问题,
一旦我在方法 VendAgingReportDP\insertVendAgingReportTmp 中获得了可诱惑 VendAgingReportTmp 的值,我就尝试更新上述场景,但 code is not selecting the records from VendAgingReportTmp
。谁能帮我完成这件事。
在VendAgingReportDP
classinsertVendAgingReportTmp
最后一行标准代码是vendAgingReportTmp.insert();
如果您的代码在 vendAgingReportTmp.insert();
之前,则无需执行更新。如果你把 vendAgingReportTmp.update();
放在 vendAgingReportTmp.insert();
之前,你会得到那个错误。
将您的代码放在 //YourCode
和 //YourCode END
中,不要 vendAgingReportTmp.update();
示例:
/// <summary>
/// Inserts records into the temporary <c>VendAgingReportTmp</c> table.
/// </summary>
/// <param name="_reverseAmountsAndHeadings">
/// A boolean value which indicates whether the column values should be reversed.
/// </param>
private void insertVendAgingReportTmp(boolean _reverseAmountsAndHeadings)
{
vendAgingReportTmp.AsOfDate = strFmt("@SYS84682", date2StrUsr(contract.parmZeroDate(), DateFlags::FormatAll), contract.parmDateTransactionDuedate());
vendAgingReportTmp.HeadingAccount = strFmt("@SYS24500");
vendAgingReportTmp.HeadingName = strFmt("@SYS7399");
switch (contract.parmDateTransactionDuedate())
{
case DateTransactionDuedate::DocumentDate : vendAgingReportTmp.HeadingDate = "@SYS2587";
break;
case DateTransactionDuedate::TransactionDate : vendAgingReportTmp.HeadingDate = "@SYS67";
break;
case DateTransactionDuedate::DueDate : vendAgingReportTmp.HeadingDate = "@SYS14588";
break;
default : vendAgingReportTmp.HeadingDate = "@SYS14588";
break;
}
if (_reverseAmountsAndHeadings)
{
this.setVendAgingReportTmpInReverse();
}
else
{
this.setVendAgingReportTmp();
}
vendAgingReportTmp.TransDate = tmpAccountSum.TransDate;
vendAgingReportTmp.InvoiceId = tmpAccountSum.InvoiceId;
vendAgingReportTmp.Voucher = tmpAccountSum.Voucher;
vendAgingReportTmp.AccountNum = tmpAccountSum.AccountNum;
vendAgingReportTmp.Name = vendTable.name();
vendAgingReportTmp.VendAccount = tmpAccountSum.AccountNum;
vendAgingReportTmp.Txt = tmpAccountSum.Txt;
vendAgingReportTmp.Balance = 100;
vendAgingReportTmp.CurrencyCode = tmpAccountSum.CurrencyCode;
vendAgingReportTmp.VendGroup = vendTable.VendGroup;
//YourCode
//...
//...
//...
//YourCode END
vendAgingReportTmp.insert();
}
我在下面添加了一个解决方案,
- 添加了 InvoiceType 字段到 temptable VendTmpAccountSum 因为这被声明为全局变量。
- 将我们的自定义发票类型更新为 VendTmpAccountSum 中的 InvoiceType 字段。
- 然后使用[=36=将VendTmpAccountSumtable中的全部数据插入VendAgingReportTmp ] 以提高性能。
谢谢,