Crystal Reports中强制加入选项的好处是什么?

Ema*_*tar 4 crystal-reports

SAP Crystal报表中的优势使链接对话框中的加密默认选项为"未强制执行"?

这是性能问题吗?因为我注意到如果你没有从连接表中选择字段,它将仅生成SELECT查询,只包含所选表的字段而没有任何连接.

以下是有关强制加入选项的一些信息:

  • 未强制执行:选择此选项时,仅在Select语句明确要求时才使用您创建的链接.这是默认选项.您的用户可以无限制地基于所选表创建报告(即,不基于其他表执行).

  • 强制自:当您选择此选项时,如果使用链接的"到"表,则会强制执行该链接.例如,如果使用Enforce From创建从表A到表B的链接并仅选择表B中的字段,则Select语句仍将包括对表A的连接,因为它是强制实施的.相反,仅从具有相同连接条件的表A中进行选择将不会导致强制执行到表B的连接.

  • 强制执行:选择此选项时,如果使用链接的"发件人"表,则会强制执行该链接.例如,如果使用Enforce To创建从表A到表B的链接并仅选择表A中的字段,则将强制执行到表B的连接,并且生成的Select语句将包括两个表.

  • 强制执行两者:选择此选项时,如果使用"from"表或此链接的"to"表,则会强制执行该链接.

Mar*_*arc 9

"强制"部分用于强制包含包含未在报告/选择条件中使用的字段的表.

好吧,这就是你所说的.

我的理解:

如果你有两个表(tbl_A,tbl_B)w /一个可链接字段,并且你没有使用第二个表中的任何字段,它可以从select中删除,并且连接的"常规"效果可能会消失.

Select 
   'You're account is in default!' as Message,
   tbl_A.full_name, tbl_A.street_address, tbl_A.city, tbl_A.blah_blah
From
   all_customers tbl_A, 
   delinquent_accounts tbl_B
Where
   tbl_A.account_no = tbl_B.account_no
Run Code Online (Sandbox Code Playgroud)

如果没有强制加入,可能会结束

Select 
   'You're account is in default!' as Message,
   tbl_A.full_name, tbl_A.street_address, tbl_A.city, tbl_A.blah_blah
From
   all_customers tbl_A, 
Run Code Online (Sandbox Code Playgroud)

换句话说,您最终可能会将催款信件设置为整个客户群而不仅仅是欠款帐户.(这就是我们在实施之前测试报告的原因,我猜).

  • 有趣的想法,多年来,我一直想知道“强制”是什么意思(我一直忽略它)。那么,为什么无论如何,Crystal都还要将此代码编码为选项呢?根据您的描述,这听起来像是一个不必要的选择,它偶尔会保护错误的SQL编写者免受自身错误的侵害,有时还会为使用巧妙代码的优秀SQL编写者造成错误。 (2认同)