查询的关系数据库建议

时间:2014-03-18 17:01:12

标签: database syntax field table-relationships epicorerp

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

2 个答案:

答案 0 :(得分:0)

我使用Epicor905.700c

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

答案 1 :(得分: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中的数据不满足所有这些关系字段,如果您单击两者之间的关系线并且选中“&34;外部连接”框,它们将重新出现。如果这样做,您将看不到来自新BO的字段数据,因为该特定数据不存在该关系,但它不会从已经工作的BO中排除数据。在上面的示例中,如果您将OrderHed与OrderDtl链接,并且您看到某些订单行消失,则表明您选择的订单行没有订单标题,或者您错误地定义了这些对象之间的关系。
  5. 正如另一位用户所说的那样,不要使用右键单击>翻转父级子项来翻转父级子项,因为在我所见过的所有Epicor版本中,这个功能似乎都被窃听了。如果遇到这些问题,请删除业务对象和关系,保存并重新添加它们。虽然Epicor似乎在完成这一过程时更加一致地处理自动关系群体,但我实际上并不建议首先添加父BO。我会使用我在#4中描述的方法,在每次添加之间保存。
  6. 遵循这些规则,它应该解决所有BAQ问题。

    我希望这有帮助!

    资料来源: Epicor BAQ Development已有1。5年。