在大多数情况下,AX表单似乎遵循AOT布局并按顺序显示.但是,在某些情况下,表单项看似以任意顺序出现,而在其他情况下,AOT中的项目甚至不会重新排序.无论您如何拖放AOT中的项目,它们始终处于相同的顺序.这个问题偶尔发生在AX 2009中,但在AX 2012中似乎更糟.我发现绕过它的唯一方法是删除非重新排序的项目并重新创建它们.
还有其他人有类似的经历吗?任何人都有修复?
我正在尝试使用addselectionfield选择4个字段.来自那4个字段2的是聚合(和)字段.
我正在做以下事情:
date fromDate = systemDateGet();
date toDate = (systemDateGet() + 25);
query = new Query();
qbds = query.addDataSource(tableNum(MyTable));
qbds.addSelectionField(fieldNum(MyTable, DateField));
qbds.addSelectionField(fieldNum(MyTable, USDAmountField), SelectionField::Sum);
qbds.addSelectionField(fieldNum(MyTable, CurrencyNameField));
qbds.addSelectionField(fieldNum(MyTable, EURAmountField), SelectionField::Sum);
qbr = qbds.addRange(fieldNum(MyTable, DateField));
qbr.value(queryRange(fromDate, toDate));
queryRun = new QueryRun(query);
Run Code Online (Sandbox Code Playgroud)
在调试时,我在queryRun中得到以下select语句:
SELECT SUM(EURAmountField) FROM MyTable(MyTable_1)
WHERE ((DateField >= {ts '2014-04-01 00:00:00.000'}
AND DateField <= {ts'2014-04-26 00:00:00.000'}))
Run Code Online (Sandbox Code Playgroud)
那么是什么原因它只选择最后一个addSelectionField以及我必须做什么来获取我在addSelectionFields中编写的所有字段?
我有这个功能可以从CSV文件更新价格清单,但需要花费太长时间才能完成(9小时aprox.).
结构文件有2个主要部分,记录行(行)和10个可能的维度(不是AX维度)的价格类型(列).
它已经在运行,但客户要求替代方案,因为该过程需要太多时间才能完成.
我的代码在我的Dialog:
//other code
dialog.addText(strFmt("Delete this field's value: %1?", MyTable.FieldTable));
//other code
Run Code Online (Sandbox Code Playgroud)
我的输出看起来像:

我知道这个strUpr功能:
dialog.addText(strFmt("Delete this field's value: %1?", strUpr(MyTable.FieldTable)));
Run Code Online (Sandbox Code Playgroud)
是否存在仅将FIELDValue转换为粗体文本的方法或函数?
我正在尝试执行以下代码:
static void ProjTableQuery(Args _args)
{
Query query;
QueryBuildDataSource qbds1;
QueryBuildDataSource qbds2;
QueryBuildRange qbr1;
QueryBuildRange qbr2;
QueryRun queryRun;
ProjTable projTable;
query = new Query();
qbds1 = query.addDataSource(tableNum(ProjTable));
qbds1.addSortField(
fieldNum(ProjTable, Name),
SortOrder::Ascending);
//qbr1 = qbds1.addRange(fieldNum(ProjTable, Type));
//qbr1.value(queryValue(ProjType::FixedPrice));
qbr2 = qbds1.addRange(fieldNum(ProjTable, ProjId));
qbr2.value(queryValue('0') + '*');
qbds2 = qbds1.addDataSource(tableNum(ProjEmplTrans));
qbds2.relations(true);
qbds2.joinMode(JoinMode::InnerJoin);
queryRun = new QueryRun(query);
while (queryRun.next())
{
projTable = queryRun.get(tableNum(ProjTable));
info(strFmt("%1 %2 %3", projTable.ProjId, projTable.Name, projTable.Type));
}
}
Run Code Online (Sandbox Code Playgroud)
注释掉的那两行可以正常工作.但是,如果我取消注释它们,它将不再运行,并且不会显示任何错误消息.
就我所见,ProjType是一个枚举,我确信我在SQL中检查了FixedPrice值.
我想为AX 2012提供样本数据,并为每个数据类型字段添加3年:datetime.
我知道有dateadd函数,我可以单独更新每个字段,只是不确定如何搜索数据库并找到datetime类型的每个字段并执行更新.
也许构建一个包含该类型所有字段的临时表?
我是sql的新手所以请温柔...
开发人员可以确定每个人都有写和读的特权,从Ax 2012导出文件的最佳途径是什么?
我发现,在开发期间,对同一服务进行多次部署时,AIF服务会中断,当您访问入站端口时会出现神秘错误.您可以通过打开AIF服务表单(AOT,表单,AIF服务)并单击"刷新"按钮来刷新AIF服务.完成大约需要15分钟.
关于为什么需要这么长时间以及实际做什么的任何想法?
谢谢.
我正在尝试从CSV文件将一些值导入AX(GEACAccounts)中的自定义表.
现在,下面的代码按预期工作,除非我尝试加载包含表中已存在的GEACaccount(容器项#3)编号的CSV文件.在这种情况下,AX抛出一个错误,说"将记录插入表中时出错.记录已存在.
在我看来,这个错误正在发生,因为表上有一些设置不允许表中的重复值,但我不知道这个设置可能是什么.将不同的字段设置为主键(RecID).GEACAccount字段也与另一个表相关.这会导致我的错误或其他什么?
此外,此功能是正确的,此表上应该只允许一个唯一的GEACAccount值.我只是问,因为我很好奇这可能会受到控制.
任何关于下一步的建议都将不胜感激.
代码如下.
static void Job11(Args _args)
{
TextIo ioReader;
FileIOPermission fioPermission;
str sTempPath;
GEACAccounts Accounts;
container readCon;
try
{
info("Begin reading file " +'C:\\\\testload.txt');
fioPermission = new FileIOPermission('C:\\\\testload.txt',"RW");
fioPermission.assert();
ioReader = new TextIo('C:\\\\testload.txt',"R");
ioReader.inFieldDelimiter(num2char(44));
ioReader.inRecordDelimiter('\n');
readCon = ioReader.read();
if(ioReader)
{
//readCon = ioReader.read();
// i++;
while(ioReader.status() == IO_Status::Ok)
{
i++;
info(conPeek(readCon,1));
info(conPeek(readCon,2));
info(conPeek(readCon,3));
info(conPeek(readCon,4));
ttsBegin;
accounts.clear();
accounts.initValue();
accounts.GEACAccountGroup = 5637144826;
accounts.AddlSecType = conPeek(readCon,1);
accounts.CashflowMovement = conPeek(readCon,2);
accounts.GEACAccountNumber = conPeek(readCon,3);
accounts.GEACFlipSign = 0;
accounts.SecurityGroup = …Run Code Online (Sandbox Code Playgroud)