Database 查询的关系数据库建议

Database 查询的关系数据库建议,database,syntax,field,table-relationships,epicorerp,Database,Syntax,Field,Table Relationships,Epicorerp,我与EPICOR合作,设计BAQ报告。我的基本报告总是很好。现在我已经开始构建更复杂的查询,我想知道是否有一些技巧可以帮助它们工作。虽然我的语法正确,经过程序验证,但我的查询仍然没有填充。关于找什么有什么建议吗?哪些问题可能导致延迟?我使用Epicor905.700c 我注意到,如果你不得不改变亲子关系,baq几乎永远不会起作用。因此,最好先将要作为父级的表添加到设计器中。i、 默认情况下,e XFileRef是XFileAttch的子级,因此在添加XFileAttch之前,将XFileRef拉

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

我使用Epicor905.700c


我注意到,如果你不得不改变亲子关系,baq几乎永远不会起作用。因此,最好先将要作为父级的表添加到设计器中。i、 默认情况下,e XFileRef是XFileAttch的子级,因此在添加XFileAttch之前,将XFileRef拉入设计器。这是我花了几个小时试图弄清楚的一件事。

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

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

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

    我希望这有帮助


    来源:Epicor BAQ开发1.5年。

    问题是什么?什么是表定义和索引?请阅读有关提问的帮助-