線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1585
推到 Plurk!
推到 Facebook!

兩個TABLE的同時運作

答題得分者是:P.D.
tonyrao
一般會員


發表:3
回覆:2
積分:1
註冊:2008-12-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-01-25 02:05:21 IP:122.117.xxx.xxx 訂閱
假設有兩個TABLE , 一個是主檔 , 一個是明細檔
主檔的欄位有 1.編號 2.名稱
明細檔的欄位有 1.編號 2.數量 3.日期 4,流水號
主KEY是 編號
如果一個Form 我同時要對這兩個TABLE運作
EX: 先對主檔作查詢的動作 , 然後再把明細檔內同個編號的內容全部列出來

邏輯上我是不是這麼做

1.先在Form擺上兩個 TTable 或者是 TQuery ,各指向主檔跟明細檔 , 再擺TDataSource 也是分別指向TTable或者TQuery
2.然後程式碼裡面寫 : 先在主檔的那個 TdataSource 取出一個編號的資料
3.再把主檔的那個編號的資料丟給 明細檔的那個 TDataSource
4.然後明細檔用Step 3 的那個主檔編號再做一次搜尋

以上四個步驟 是不是就能夠達成兩個Link起來的Table 做同步的動作


那可以請問 還有更快的做法嗎??
例如 Delphi本身就能夠在執行程式之前就Link好Table

謝謝各位大大的回答
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-01-30 21:53:36 IP:219.68.xxx.xxx 未訂閱
在Delphi中的Database MenuItem 中\有一個Form Wizard 可以很快的連結 master-detail 的方式, 只要把兩個Table做為key值的欄位建立主索引(Primary IndexKey) 就可以透過4-5個步驟完成, 但你想要快一點的, 其實你的程式原法就已經是一個基本型了, 透過Delphi的方式只是少寫了一些程式碼, 會有多快, 嗯! 只要你爽就好啦!
tonyrao
一般會員


發表:3
回覆:2
積分:1
註冊:2008-12-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-01-31 04:03:57 IP:122.117.xxx.xxx 訂閱
謝謝版主的回答, 其實我翻了以前的文章, 原來這個稱之為"Master Detail" , 我翻了以前的文章才知道這樣的名稱

其實我要問這問題最主要的目的是 , 當我要做新增刪除的動作 , 有可能會違反MD規則的問題
如果是新增 , 當然可以由畫面來控制如果沒有主檔資料 ,使用者當然沒辦法建立明細檔

那刪除就會有問題了, 如果使用者直接刪除主檔 , 也一並要刪除明細檔的資料 如果沒刪除當然就是違反 MD 規則
我上面的作法是可以做刪除的動作 , 那小弟所謂的有更快的作法是當我刪除主檔時,明細檔必需要一並刪除~~

程式如果沒有寫這段, 是否可行?

版主有提到 DataBase MenuItem的Form Wizard 可以做到這樣,那小弟我再去試看看
先謝謝版主



===================引 用 P.D. 文 章===================
在Delphi中的Database MenuItem 中\有一個Form Wizard 可以很快的連結 master-detail 的方式, 只要把兩個Table做為key值的欄位建立主索引(Primary IndexKey) 就可以透過4-5個步驟完成, 但你想要快一點的, 其實你的程式原法就已經是一個基本型了, 透過Delphi的方式只是少寫了一些程式碼, 會有多快, 嗯! 只要你爽就好啦!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-02-01 13:06:49 IP:219.68.xxx.xxx 未訂閱
1. Form Wizard 只是單純的M/.D連結, 刪除動作我記得沒錯的話, 並不會同步刪除, 所以還是要靠自己操作
2.刪除要先刪 Detail, 成功後再刪 Master, 否則相反的話會造成 Master被刪後,Key Index 已消滅, 自然Detail就會殘留在資料庫中
3.要刪除, 利用 while 方式是最慢的, 你可以針對自己的資料庫, 找一下是否有整批刪除的方式, 會比迴圈快很多
===================引 用 tonyrao 文 章===================
謝謝版主的回答, 其實我翻了以前的文章, 原來這個稱之為"Master Detail" , 我翻了以前的文章才知道這樣的名稱

其實我要問這問題最主要的目的是 , 當我要做新增刪除的動作 , 有可能會違反MD規則的問題
如果是新增 , 當然可以由畫面來控制如果沒有主檔資料 ,使用者當然沒辦法建立明細檔

那刪除就會有問題了, 如果使用者直接刪除主檔 , 也一並要刪除明細檔的資料 如果沒刪除當然就是違反 MD 規則
我上面的作法是可以做刪除的動作 , 那小弟所謂的有更快的作法是當我刪除主檔時,明細檔必需要一並刪除~~

程式如果沒有寫這段, 是否可行?

版主有提到 DataBase MenuItem的Form Wizard 可以做到這樣,那小弟我再去試看看
先謝謝版主
tonyrao
一般會員


發表:3
回覆:2
積分:1
註冊:2008-12-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-02-01 13:59:44 IP:122.117.xxx.xxx 訂閱
非常謝謝版主大大的回答 ~~ 謝謝
系統時間:2024-05-07 11:09:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!