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

TQuery.DataSource 在Run-Time 時不能再次被更改?

答題得分者是:hagar
anny
一般會員


發表:1
回覆:5
積分:1
註冊:2003-04-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-28 16:12:21 IP:210.243.xxx.xxx 未訂閱
請教各位先進: 我想在Run-Time時, 經由user選定來改變TQuery.DataSource 的值(也就是原本是Master-Detal的型態變成獨立TQuery)。但在執行時發現,若程式一開始run 時,指定的TQuery.DataSource 沒問題,但接著應USER需求,要更改TQuery.DataSource 就會出現 'Circular datalinks are not allowed' 的錯誤訊息!不知是否在TQuery.DataSource 指定後就不能被更改?或有其他方法?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-28 16:24:14 IP:202.39.xxx.xxx 未訂閱
可能是這種情形: Query1.DataSource := Query2; Query2.DataSource := Query1; 於是就造成 Circular datalinks 了.    --- 每個人都是一本書
anny
一般會員


發表:1
回覆:5
積分:1
註冊:2003-04-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-28 16:45:36 IP:210.243.xxx.xxx 未訂閱
hi, hangar: 我改變的是TQuery裡的DataSource,但我不是同時間指定,我原本的用意是寫在一個查詢程式裡給 user 使用,Query1 is master Query, Query2 is Detail Query 在正常情況下是在Query 1 裡指定 nil, 但我想user 有反查資料的需求,所以如果 user 要從Query2查Query1的資料時,我將把Query1.DataSource 改為 DataSource2。資料在 RUN 時,若我先查正常情況,再反查資料,就會出現上述錯誤訊息。不知是否有方法可能我在 RUN-TIME時改變 TQuery.DataSource 的值!
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-28 16:56:59 IP:218.16.xxx.xxx 未訂閱
1. 先關掉兩個 Query 2. 設好Datasources, 同一時間只能一個 Query 的 DataSources 指向另一個, 另一個的 DataSources 要設 nil 3. Open 現在的 Master (DataSources = nil 那個) 4. Open 現在的 Detail 這樣應不會出現 'Circular datalinks are not allowed'
anny
一般會員


發表:1
回覆:5
積分:1
註冊:2003-04-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-28 17:09:14 IP:211.21.xxx.xxx 未訂閱
Hi, Justmade : 是的,我的確有關閉Query, 但還是不行!以下為我程式大致內容: procedure TMainForm.BitBtn2Click(Sender: TObject); begin Query1.Close; Query2.Close; with Query1 do begin if RB1_1.Checked then //正常查詢 begin DataSource := nil; end else begin DataSource := DataSource2; end; end; With Query2 do begin if RB1_2.Checked then //反向查詢 begin Datasource := nil; end else begin DataSource := DataSource1; end; end; if RB1_1.Checked then begin Query1.Open; Query2.Open; end else begin Query2.Open; Query1.Open; end; end;
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-28 17:22:37 IP:202.39.xxx.xxx 未訂閱
procedure TMainForm.BitBtn2Click(Sender: TObject);
begin
  Query1.Close; 
  Query2.Close;
// 加這兩行呢?

  Query1.DataSource := nil;
  Query2.DataSource := nil; 

  with Query1 do
  begin
    if RB1_1.Checked then //正常查詢
    begin
      DataSource := nil;
    end else begin
     DataSource := DataSource2;
    end;
  end;
  With Query2 do
  begin
    if RB1_2.Checked then //反向查詢
    begin
      Datasource := nil;
    end else begin
      DataSource := DataSource1;
    end;
  end;
  if RB1_1.Checked then
  begin
    Query1.Open;
    Query2.Open;
  end else begin
    Query2.Open;
    Query1.Open;
  end;
end;
--- 每個人都是一本書
anny
一般會員


發表:1
回覆:5
積分:1
註冊:2003-04-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-28 17:29:00 IP:210.243.xxx.xxx 未訂閱
Hi, Hangar:    是的,不會出現錯誤訊息了,真是太感謝各位了!
系統時間:2024-05-18 13:16:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!