全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:971
推到 Plurk!
推到 Facebook!

動態的建立,與解除Master/Detail

尚未結案
Jadugarr
一般會員


發表:3
回覆:1
積分:0
註冊:2003-11-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-07 02:59:44 IP:61.223.xxx.xxx 未訂閱
我使用MsSql7.0 TAdoTable 在 Master/Detail 架構下 我希望能在程式執行中,動態 的建立,與解除Master/Detail 的關係,我用 Detail.MasterFields:=''; Detail.MasterSource:=nil; Detail.First; 可以讓我解除 Master/Detail 但是我用先前備份的 MasterFields MasterSource 來重建,卻讓 Detail 的所有資料跑出來,也就是超出 目前Master 的Cursor 所對應到的資料。 除非,我移動 Cursor, 在程式碼中,我嘗試用 Master.Frist, or Master.Next and Prior 是可行的,希望能找到比較可用的方法 因為這樣的話,要考慮很多種情況
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-07 09:58:03 IP:61.62.xxx.xxx 未訂閱
Hi, 測試完你說的狀態, 並沒有這種異常的現象, 隨著 detail 資料表的 MasterDataSource 及 MasterFields 的設定, 會使得 detail 資料表會發生對應的功能無誤, 唯一會發生不理想的現象僅為當解除 detail 和 master 的關連時, detail 資料表會顯示出所有資料的現象. 解決的方法可以改用 ADOQuery 來進行, 或是在解除 detail 和 master 關連時, 連帶將 detail 資料表 close 起來即可, 在重建關連時, 再 open 即可, 如下:    其中 Button2 為解除關連, Button1 為建立關連, ADOTable2 為 detail 資料表, ADOTable1 為 master 資料表.
myrel: string;    procedure TForm1.Button2Click(Sender: TObject);
begin
  // dismiss master/detail
  myrel := ADOTable2.MasterFields;
  ADOTable2.MasterFields := '';
  ADOTable2.MasterSource := nil;
  //ADOTable2.First;
  ADOTable2.Close;
end;    procedure TForm1.Button1Click(Sender: TObject);
begin
  // assemble master/detail
  ADOTable2.MasterFields := myrel;
  ADOTable2.MasterSource := DataSource1;
  ADOTable2.Open;
end;
至於你說重建關連後還必須將 master 移動一下才能將 detail 的資料表內容修正為對應資料列, 這個現象, 即使不透過上面的 detail close 再 open 也不會發生, 是否你的程式尚有其他的程式碼與此段有關造成這樣的現象呢, 弟試過是不會這樣子, 當設定完關連後, detail 資料表會馬上出現對應資料列, 沒有問題.
Jadugarr
一般會員


發表:3
回覆:1
積分:0
註冊:2003-11-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-07 13:37:50 IP:61.223.xxx.xxx 未訂閱
我想這可能是 我用MSsql7.0的關係 你的程式應該不是用 MsSql7.0 所以沒有發生問題。
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-07 17:55:49 IP:61.62.xxx.xxx 未訂閱
若是這樣的話, 你可以試著在除去關連時 close detail, 於設定好關連後再將 detail open 起來, 應該可以解決你的問題. 至於是否為 mssql 7.0 的問題, 弟猜測應該不太會, 不過我會再找個 7.0 的環境來測試看看.
系統時間:2024-11-22 15:58:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!