D365 query

2024-09-05 18:44
文章标签 query d365

本文主要是介绍D365 query,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 简单查询
  • 多个表联接


简单查询

Query  query;
QueryBuildDataSource    qbds;
QueryBuildRange qbr,
QueryRun                queryRun;query = new Query(); //新建查询对象
qbds = query.addDataSource(tableNum(SalesTable))
qbr= qbds.addRange(fieldNum(SalesTable, salesId));
qbr.value(queryValue(salesId));queryRun = new queryRun(query);
queryRun.allowCrossCompany(true);if (queryRun .prompt())
{while (queryRun .next()){SalesTable salesTable= queryRun.Get (tableNum(SalesTable)); // 从queryrun中获取记录info(salesTable.salesId);}

多个表联接

A
|-B (1:n, innerJoin)
|–C (1:n, innerJoin)

Query q = new query();
QueryRun qr;
QueryBuildDataSource qbds;
QueryBuildDataSource qbds2;
QueryBuildDataSource qbds3;
QueryBuildRange qbr;qbds = q.addDataSource(tableNum(A));qbds3 = qbds.addDataSource(tableNum(B));
qbds3.relations(false);
qbds3.joinMode(JoinMode::InnerJoin);
qbds3.addLink(fieldnum(A, RecId),fieldnum(B, ARecId));qbds2 = qbds.addDataSource(tableNum(C));
qbds2.relations(false);
qbds2.joinMode(JoinMode::InnerJoin);
qbds2.addLink(fieldnum(B, RecId),fieldnum(C, BRecId));qr = new QueryRun(q);while (qr.next()){//Insert code here}

等价于

Select AJoin B where B.ARecId == A.RecIdJoin C where C.BRecId == B.RecId;

A
|-B (1:n, innerJoin)
|-C (1:n, innerJoin)

Query q = new query();
QueryRun qr;
QueryBuildDataSource qbds;
QueryBuildDataSource qbds2;
QueryBuildDataSource qbds3;
QueryBuildRange qbr;qbds = q.addDataSource(tableNum(A));qbds3 = qbds.addDataSource(tableNum(B));
qbds3.relations(false);
qbds3.joinMode(JoinMode::InnerJoin);
qbds3.addLink(fieldnum(A, RecId),fieldnum(B, ARecId));qbds2 = qbds.addDataSource(tableNum(C));
qbds2.relations(false);
qbds2.joinMode(JoinMode::InnerJoin);
qbds2.addLink(fieldnum(A, RecId),fieldnum(C, BRecId));qr = new QueryRun(q);while (qr.next()){//Insert code here}

等价于

Select A Join B where B.ARecId == A.RecId;
Select A Join C where C.BRecId == A.RecId;

A
|-B (1:n, innerJoin)
|-C (1:n, innerJoin)
两个子表是在同一个level的

Query q = new query();
QueryRun qr;
QueryBuildDataSource qbds;
QueryBuildDataSource qbds2;
QueryBuildDataSource qbds3;
QueryBuildRange qbr;qbds = q.addDataSource(tableNum(A));qbds3 = qbds.addDataSource(tableNum(B));
qbds3.relations(false);
qbds3.joinMode(JoinMode::InnerJoin);
qbds3.addLink(fieldnum(A, RecId),fieldnum(B, ARecId));qbds2 = qbds.addDataSource(tableNum(C));
qbds2.relations(false);
qbds2.joinMode(JoinMode::InnerJoin);
qbds2.addLink(fieldnum(A, RecId),fieldnum(C, BRecId));qr = new QueryRun(q);while (qr.next()){//Insert code here}

等价于

先查询:Select A;
再查询:Select A Join B where B.ARecId == A.RecId;
最后:Select A Join C where C.BRecId == A.RecId;

A
|-B (1:1, innerJoin)
|-C (1:1, innerJoin)
两个子表是在同一个level的

Query q = new query();
QueryRun qr;
QueryBuildDataSource qbds;
QueryBuildDataSource qbds2;
QueryBuildDataSource qbds3;
QueryBuildRange qbr;qbds = q.addDataSource(tableNum(A));qbds3 = qbds.addDataSource(tableNum(B));
qbds3.relations(false);
qbds2.fetchmode(QueryFetchMode::One2One);//fetchmode
qbds3.joinMode(JoinMode::InnerJoin);
qbds3.addLink(fieldnum(A, RecId),fieldnum(B, ARecId));qbds2 = qbds.addDataSource(tableNum(C));
qbds2.relations(false);
qbds2.fetchmode(QueryFetchMode::One2One);//fetchmode
qbds2.joinMode(JoinMode::InnerJoin);
qbds2.addLink(fieldnum(A, RecId),fieldnum(C, BRecId));qr = new QueryRun(q);while (qr.next()){//Insert code here}

等价于

Select AJoin B where B.ARecId == A.RecIdJoin C where C.BRecId == A.RecId;

将FetchMode设置为 “1:1”时,才可以得到这样的查询语句

这篇关于D365 query的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1139769

相关文章

构建现代API:FastAPI中Query与Body参数的最佳搭配

在FastAPI中,Query 和 Body 是两种不同的依赖注入器,它们的应用场景取决于你的具体需求。以下是它们各自常见的使用场景: Query 参数 使用场景: 当你需要从URL中获取一些简单的参数时,例如过滤、排序、分页等。 当数据量不大,且可以作为URL的一部分安全传输时。当数据不需要复杂的结构时。 Body 参数 使用场景: 当你需要发送较为复杂的数据结构时,例如包含多个字段

【硬刚ES】ES基础(二十) 单字符串多字段查询:Dis Max Query

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的ES部分补充。

【硬刚ES】ES基础(十九) Query Filtering 与多字符串多字段查询

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的ES部分补充。

[LeetCode] 303. Range Sum Query - Immutable

题:https://leetcode.com/problems/range-sum-query-immutable/description/ 题目 Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive. Example: Given nums

Oracle - ORA-01789: Query block has incorrect number of result columns

一、原因     这个错误一般是在执行表之间的相加(union),相减(minus)等SQL语句时,两个个查询块具有不一致的结果列数所导致的。 二、方案     只要将两段SQL语句的列数调整为一致就可以解决。使用union时,要注意数据库字段的格式要一致,如varchar和nvarchar是不一样的。

Vue(十三) 路由、路由嵌套、query、param传参、propos、replace属性。编程式路由导航,特有的生命周期函数,路由守卫

文章目录 路由1. 基本使用2. 多级(嵌套)路由3. 路由query传参4. 命名路由5. 路由param传参6. propos属性7. replace属性8. 编程式路由导航9. 缓存路由组件10. actived,deactived生命周期函数11. 路由守卫1、全局路由2、独享路由3、组件内路由守卫 12. 路由器工作的两种模式 路由 路由就是一组key-value的

Power Query 查询参考

目录 引言 什么是Power Query 查询参考? 例子 查询参考的工作原理 查询参考 vs 复制查询 查询参考的优势 如何使用查询参考 1. 创建原始查询 2. 创建查询参考 3. 应用转换步骤 4. 多次引用 5. 修改原始查询 实战案例:查询参考在实际项目中的应用 项目背景 解决方案 具体步骤 1. 创建原始查询 2. 创建按地区分组的查询参考 3

FastAPI 中的 Query:优化你的数据获取策略

在 FastAPI 中,Query 是一个依赖项类,用于处理来自 HTTP 请求的查询参数。查询参数是 URL 的一部分,通常用于 GET 请求,它们在 URL 的路径之后,以 ? 开头,参数之间用 & 分隔。例如:http://example.com/api/items?name=foo&age=42。 Query 的作用和用途: 类型声明:Query 允许你为查询参数声明一个预期的数据类

FastAPI Query 类详解:参数验证与高级用法

在 FastAPI 中,Query 类用于定义查询参数,并提供了多种参数来限制和描述这些参数。以下是一些常用的参数,它们可以用来限制和描述 Query 类的实例: default: 描述:设置参数的默认值。类型:任何类型。示例:default=None alias: 描述:为参数设置一个别名,这在 URL 中使用的名称与函数参数名称不一致时非常有用。类型:str示例:alias="my_al

Pandas-数据操作-数值型(三):逻辑筛选【逻辑运算符号】【逻辑运算函数:query()、isin()】

2.1 逻辑运算符号 例如筛选data[“open”] > 23的日期数据 data[“open”] > 23返回逻辑结果 data["open"] > 232018-02-27 True2018-02-26 False2018-02-23 False2018-02-22 False2018-02-14 False # 逻辑判断的结果可以作为筛选的