2011-05-25 44 views
3

使鏈接對話框中的SAP Crystal報告強制加入默認選項的好處是「未強制」?在Crystal Reports中強制加入選項的好處是什麼?

性能問題?因爲我注意到如果你不從聯接表中選擇字段,它將只生成SELECT查詢,只有選定表的字段沒有任何聯接。

這裏是關於強制聯接選項的一些信息:

  • 不強制:當您選擇此選項, 你所創建的鏈接被用來只有當它的 通過選擇 明確要求聲明。這是默認的 選項。您的用戶可以基於所選表創建報告 ,而不受限於 限制(即,基於其他表的無執行 )。

  • 強制從:當您選擇此選項 ,如果「到」用於表的 鏈接,該鏈接被執行。 例如,如果您創建從表A的鏈接 表B強制使用從 並只選擇 B表的字段,SELECT語句將 還包括因爲它是強制執行的連接表A 。相反, 只從表A中選擇與 相同的連接條件不會導致 與表B的連接被強制執行。

  • 強制至:當您選擇此選項 ,如果「從」用於表的 鏈接,該鏈接被執行。 例如,如果您創建使用強制 ,並從表 一個只選擇字段從表A中的鏈接 表B,聯接到表B將 執行,並且所生成的Select語句 將包括兩個 表。

  • 強制兩者:當您選擇此選項 ,如果有一個「從」表或 的「到」被用來表這個鏈接, 鏈接被執行。

回答

8

「強制執行」部分用於強制列入包含未在報告/選擇條件中使用的字段的表。

好吧,這就是你說的。

我的理解:

如果你有兩個表(tbl_A,tbl_B)W/A鏈路能夠字段,你不從第二個表中使用的任何領域,可以從選擇下降,並且連接的「常規」效果可能會消失。

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 

沒有強制加入,可能會風作爲

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, 

換句話說,你可能會風催款信設置爲你的整個客戶羣,而不僅僅是拖欠賬戶。 (這就是爲什麼我們在實施它們之前測試報告,我猜)。

+1

有趣的想法,我想了多年來「強制」意味着什麼(我總是忽略它)。那麼,爲什麼Crystal甚至會打擾編碼作爲一個選項呢?根據您的描述,這聽起來像是一個不必要的選項,偶爾會保護不好的SQL編寫人員免於他們自己的錯誤,並且有時會爲具有聰明代碼的優秀SQL編寫人員創建錯誤。 – PowerUser 2011-05-26 16:04:00

+0

呃....記住,CR已經存在了幾十年(?),許多他們想象不到的「特徵」仍然存在。只是一個想法。順便說一句,那個特別的人以前曾經咬過我。哦!另一個非常痛苦的叮咬:如果你有自己的鏈接去公式,CR會「幫助」你的鏈接到你的子報告中。那個真的很痛。 – Marc 2011-05-27 17:53:34

+0

是的,考慮到未被強制執行錯誤的可能性,似乎有必要養成立即將所有鏈接改爲「強制執行」的習慣。至少這是我(嘗試)做的。我沒有看到用於非強制加入的用途,除了以打開全新潛在錯誤類別爲代價的懶惰之外。 – 2016-03-02 12:41:18