我發現了一些教程,但他們仍然給我提問。主/細節如何工作?
讓我們以2個表格爲例,其中一個表示客戶詳細信息,另一個表示訂單詳情。
的customers
數據庫中的表有:
- 的自增整數
customer_id
作爲主鍵 - 客戶名稱的文本字段
- 詳細聯繫方式的文本字段
而且orders
表格有:
- 的整數
customer_id
其爲外鍵引用customers
表 - 一些其他的東西,一堆項目號
- 的整數
order_value
存儲順序的現金價值的這種基準
我需要兩個數據集組件,兩個查詢和一個連接。
到目前爲止,這麼好?或者我錯過了什麼?現在
,教程說,我必須設置的,其coresponds到數據庫網格顯示orders
表是對應於customers
表和MasterFields
數據源,在這種情況下,數據源的的MasterSource,以customer_id
。
還有其他嗎?我是否應該例如將對應於customers
表的數據源的查詢的Detailfields
設置爲customer_id
?
我應該使用屬性還是a paramaterized query?
好的,在這一點上,我們遵循經典教程,可以滾動瀏覽customers
數據庫網格,並查看orders
數據庫網格中顯示的當前客戶的所有訂單。當用戶點擊customers
數據庫網格時,我必須關閉();然後打開(); orders
查詢刷新其對應的DB網格。
但是,這些教程似乎總是假定一個靜態數據庫,其內容永遠不會改變。
當我問anothter問題,我給我在那裏用命令的例子INSERT INTO orders...
,被告知這是一個壞Thing`,我應該:
- OrdersQuery.Append();
- OrdersQuery.FieldByName('customer_id'):= [some value]';
- OrdersQuery.FieldByName('item_numbers'):= [some value]';
- OrdersQuery。FieldByName('order_value'):= [some value]';
- OrdersQuery.Post();
是正確的嗎?
我問,因爲在我看來,一個命令把數據在和查詢應該只把它出來,但我可以看到一個命令不會通過數據源的查詢有關聯的數據庫網格。
這是一個選擇的問題,或必須使用的查詢?
如果是這樣,看起來我不能在查詢中使用簡單的SQL函數,如SUM,MIN < AVG,MAX,並且必須將它們移動到我的代碼中。
如果我必須使用查詢,如何實現SQL UPDATE
和DROP
?
最後,我可以有主/細節/細節關係嗎?
比方說,我希望有一個3 DB網格,其中顯示了客戶總數和所有訂單的平均水平。它從orders
表中獲取數據(但不能使用SUM和AVG),每次用戶選擇不同的客戶時都會更新這些數據,從而提供Master/Detail/Detail關係。我只是將它設置爲兩個主/從關係?即,在DB網格,數據源,查詢總量和平均訂單僅指orders
並沒有提及customers
,即使它使用customer_id
?
在此先感謝您的幫助和澄清。我希望這個問題將成爲未來其他人的參考(所以,請隨時編輯它)。
> *「或者我錯過了某些東西?」* - 訂單表的主鍵。 – 2013-03-13 02:09:40
這對於單個帖子來說太多了。每個人都可以回答10個部分,並且全部都是正確的,沒有任何人可以爲每個部分提供答案。請修改此內容,將其限制爲單個問題,並針對其他部分單獨發佈問題。 SO用於**特定的簡明問題** - 有關更多信息,請參閱[faq#dontask]。 (在許多版本的Delphi-Master-Detail應用程序中都有示例;例如,D2007將它們放在'C:\ Users \ Public \ Documents \ RAD Studio \ 5.0 \ Demos \ DelphiWin32 \ VCLWin32 \ Db'中。) – 2013-03-13 02:29:57
True ,但是如果Mawg要編輯和改進(簡化,減少),那裏有一個簡單的問題可能對其他人有幫助。既然他已經接受了我的答案,我建議他基本上問「主細節的技術組成部分是什麼,以及如何決定是否在SQL數據庫中使用它」。 – 2013-03-14 13:01:49