意外的查询行为

2023-11-29

我正在尝试执行以下代码:

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));
   }
}

注释掉这两行后效果很好。但如果我取消注释它们,它将不再运行,也不会显示任何错误消息。

据我所知,ProjType 是一个枚举,我确信我刚刚在 SQL 中检查了固定价格值。


这个 hack 对于理解查询生成的 SQL 很有用:

query.literals(true);
info(query.datasourceNo(1).toString());

在之前添加行while循环(也许注释掉循环)。
输出将是一个几乎合法的 SQL 语句(尽管一些 X++ 仍然闪耀)。

X++ 的相应 hack 给出了确切的 SQL 语句:

ProjTable projTable;
select generateonly forceliterals from projTable 
    where ProjTable.Type == ProjType::FixedPrice;
info(projTable.getSQLStatement());

输出是完全合法的 SQL,可以复制/粘贴到查询编辑器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

意外的查询行为 的相关文章

  • 字符游戏 贪吃蛇(2)

    首先是一些准备工作 include
  • 实战C/C++ 的依赖管理工具 – Conan

    在高级编程语言中 C C 广受开发人员的亲睐 在语言排名上也名列前茅 生命力旺盛 而作为一个C C 程序猿 随着开源模块 车轮 的不断创造 你在使用什么工具或方法管理你的依赖和模块化你的开发成果 创造属于你的世界车轮 你还在用 GIT SV
  • 有限域GF(2^8)内乘法代码实现以及原理

    在密码学中经常用到有限域的乘法 一般在AES中用到的是GF 2 8 有限域内乘法 什么是有限域呢 有限域通俗的讲就是函数的运算结果全都包含在一个域中 不同于实数域 有限域有一个最大值 所有超过这个最大值的数都会经过一定的方法使他回到这个域中
  • QT日常积累1:QT_BEGIN_NAMESPACE和QT_END_NAMESPACE

    QT BEGIN NAMESPACE class QAbstractButton class QAbstractSlider class QComboBox QT END NAMESPACE 学习QT过程中遇到了上面的问题 不明白是什么意思
  • 如何查看X++ select语句的SQL表达式?

    我在 AX 的一份工作中有以下声明 select RecId from pjiTable join pID Type PrId from sjTable where pjiTable Prid sjTable PrId sjTable Ty
  • 如果一个字段已填满,是否可以禁用另一个字段的输入?

    如果另一个字段包含 MS Dynamics AX 2012 中的数据 我想禁用表字段的输入 更新1 如果 Field1 有输入 Field2 和 Field3 必须为空 字段1 字段2 字段3 客户编号 身份证号 1 0000000001
  • AX 形式的图像

    在 Dynamics AX 中 我们在自定义表单中出于各种目的使用大量图像和图标 目前 我们必须在每台客户端计算机上单独安装图像 图标包才能使一切正常工作 有没有一种方法 或最佳实践 来处理 Dynamics 中的图像和图标 这样就不需要在
  • 如何从类 ID 中识别 Axapta 类名称?

    请问有人可以帮我理解批量疯狂吗 我正在尝试调试具有大约 50 个批处理作业的 Axapta 3 0 实现 大多数批处理类没有实现description 方法 所以当你查看批次清单表单 基本 gt gt 查询 gt gt 批次列表 描述字段为
  • 如何在表单中使用 RecId 作为外键

    我有一个项目表 每个项目都引用另一个表中的另一个项目 我们会说这些项目是人 而相关的项目是最喜欢的食物 表 A 鲍勃 1 莎莉 1 苏 3 表 B 1 苹果 2 香蕉 3 橙子 人 通过 People 表中引用的食物 RecId 与他们最喜
  • Axapta 2009 X++ 从网站下载文本文件

    我想从网站下载一个文本文件 因为我知道它的 URL 有几个例子在Axaptapedia com 加载网络文档 http www axaptapedia com Load Web Documents 这些示例使用 Microsoft NET
  • X++ 中的“this”与“element”关键字

    在 X 中编写代码时有时需要引用this functionYouWant 有时是element FunctionYouWant 有时两者都在范围内 我经常尝试其中一种 如果没有我想要的功能 我会尝试另一种 是否有规则解释何时使用this以及
  • 如何使用来自多个数据源的字段创建查找?

    我需要在表单字段中创建动态查找 该字段应显示来自两个不同数据源的字段 我尝试将其执行为 public void lookup query new Query sysTableLookup SysTableLookup newParamete
  • 查询范围不等于0

    我在 AX 2012 R2 环境中 我想向 HcmEmployment 表添加查询范围并过滤掉 LegalEntity 值 0 的行 以下代码在运行时失败 并出现 无效范围 异常 qbrLegalEntity qbds addRange f
  • 如何在 Axe 2012 中重命名对话框按钮或创建新按钮?

    是否可以重命名对话框按钮 例如关于 okCancel 我可以重命名吗 ok 按钮为 continue 如果没有 请指导我如何创建自己的对话框 先谢谢了 按钮具有 文本 属性 您可以设置该属性或通过代码执行此操作 okButton text
  • 查找物料/仓库的总可用量和可用实物

    我有一个显示字段的方法 它执行以下操作 return InventSum find salesLine ItemId InventDim salesLine InventDimId AvailPhysical 这为我提供了该线路站点 仓库
  • 隐藏特定用户组的表单选项卡

    需要隐藏表单上某些用户组的某些选项卡 问题是 隐藏选项卡中的所有字段似乎不起作用 任何想法表示赞赏 使用 AX 2009 如果有人需要用视觉来回答这个问题 在 AX 中 您可以通过属性表为选项卡分配安全密钥 Then you can eit
  • D365 FO 到期合同简单查询

    我需要创建简单的查询 该查询将显示将在未来 3 个月内到期的所有合同 我知道如何使用 SQL 执行此操作 但在创建查询时如何在 Visual Studio 中执行此操作 我添加了数据源合同表 添加了范围 过期日期所在的列是 VALIDTO
  • 在 Dynamics ax 中读取逗号分隔值 (csv) 文件

    如何在dynamic ax中打开并解析csv文件 static void TestCommaTextIO Args args File CommaTextIo commaTextIo FileIOPermission permission
  • 如何在 Axapta 3.0 中创建 X++ 批处理作业?

    我想在 X 中为 Microsoft Axapta 3 0 Dynamics AX 创建批处理作业 我如何创建一个执行像这样的 X 函数的作业 static void ExternalDataRead Args args 以下是在 AX 中
  • Select 语句与在 Axe 中查找语句

    在编写代码时 我们可以使用 select 语句或选择字段列表或表上的 find 方法来获取记录 I wonder which of the statement helps in better performance 这实际上取决于您的实际需

随机推荐