0

我正在与 EPICOR 合作并设计 BAQ 报告。我的基本报告总是很好。现在我已经开始构建更复杂的查询,我想知道是否有任何提示可以帮助它们工作。虽然我的语法是正确的,并由程序验证,但我的查询仍然没有填充。关于寻找什么的任何建议?哪些问题可能导致延误?

4

2 回答 2

0

如果您没有看到 BAQ 中的所有数据(并且您没有添加限制条件),那么这意味着您在业务对象之间编写了不正确的关系。我发现内部 Epicor 工具通常不会验证关系,因为理论上您可以使用这样的联接(对于多公司统计,完全外部联接转储许多表以进行存档,我都不推荐)

一些与编写 BAQ 和修复业务对象之间的关系相关的快速提示,这些提示应该可以解决您的数据填充问题:

  1. 始终链接到 BO.Company = BO.Company,然后是最大部分,然后是较小部分,等等。例如,链接到 OrderDtl 的 OrderHed 应该链接到 Company,然后是 OrderNum,然后是 OrderLineNum,然后是 OrderRelNum。如果您的业务对象未链接到公司,它将不会在索引之外运行,并且会使查询变得非常缓慢。
  2. 如果查询遇到性能问题,请确保您的关系已编入索引。您可以通过转到系统管理-> 数据字典查看器并搜索您正在使用的表来查看此内容。尝试仅使用您在此处看到的索引将两个业务对象连接在一起,否则性能会受到影响。如果您有进度系统,则这些索引无法根据我的知识进行更新-因此请确保使用它们。
  3. 一般来说,如果你在关系方向背后没有特殊的推理,总是让你的基础业务对象成为最小的细节单元,并将父级指向子级。例如,如果您正在制作一份列出公司所有订单发布信息的报告,请添加 OrderRel,然后添加 OrderDtl 并确保 OrderDtl 指向 OrderRel,然后添加 OrderHed 并确保 OrderHed 指向 OrderDtl。Epicor 将其转换为实际查询的方式取决于此顺序。
  4. 具体来说,从少量业务对象开始,遵循#3 中提出的模型,并确保您的查询正在返回数据。一个一个地添加业务对象,直到您看到返回的记录更少。这意味着您添加的BO中的数据并不满足所有这些关系字段,如果您单击两者之间的关系线并选中“外部连接”框,它们会重新出现。如果您这样做,您将不会看到来自新 BO 的字段数据,因为该特定数据不存在关系,但它不会排除已经工作的 BO 中的数据。在上面的示例中,如果您将 OrderHed 与 OrderDtl 关联,并且您看到一些订单行消失了,这表明您选择的订单行没有订单标题,
  5. 正如另一位用户所说,不要使用右键单击->翻转父子来翻转父子,因为这个功能似乎在我见过的所有版本的 Epicor 中都存在错误。如果您遇到这些问题,请删除业务对象和关系,保存并重新添加它们。虽然 Epicor 似乎在完成此操作后更一致地处理关系的自动填充,但我实际上并不建议先添加父 BO。我会使用我在#4 中描述的方法,在每次添加之间进行保存。

遵循这些规则,它应该可以解决您所有的 BAQ 问题。

我希望这有帮助!

资料来源: Epicor BAQ Development 1.5 年。

于 2014-07-25T17:53:46.907 回答
0

我使用 Epicor905.700c

我注意到,如果你必须翻转父子关系,baq 几乎永远不会工作。所以最好先将你想成为父级的表添加到设计器中。即XFileRef 默认是XFileAttch 的子级,因此在添加XFileAttch 之前将XFileRef 拉入设计器。这是我浪费了几个小时试图弄清楚的一件事。

于 2014-04-25T23:21:55.700 回答