DataModule的觀念問題 |
尚未結案
|
Paicaso
中階會員 發表:140 回覆:124 積分:52 註冊:2002-09-04 發送簡訊給我 |
請問
1.如果有一資料庫,針對不同功能需求而設計有多個From,如果僅設計一個DataMoudule,並在其中有Query1作查詢.Query2作資料更新.且所有的From都取用該二個Query作查詢與更新資料.這樣著觀念是否正確.
2.在DataMoudule上設有一onDataChange來取出資料.
如:
procedure TData.DataSourceDataChange......
Form2.EDIT.Text := Query1.FieldByName('BBBB').AsString;
另在Form2上亦設計可由EDIT.Text更新(修改)資料.
但修改完後必須重新取出資料,才會看到最新的資料
如此資料庫一大是否就會變得很慢.請問先進有何建議.
2.又同上,因必須重新取出資料(Close & Open)則DBGrid & Query會移置首筆
是否需在onDataChange上先紀錄key值,當Form資料修改完,重新Open後再重新 取回,我做了以下但是仍不行,請先進指教
procedure TData.DataSourceDataChange......
i := Query1.RecNo; Form1........
Data.Query1.Close;
Data.Query1.Open
Data.Query1.RecNo := StrToINT(i) 謝謝指教..
|
Paicaso
中階會員 發表:140 回覆:124 積分:52 註冊:2002-09-04 發送簡訊給我 |
|
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
|
Paicaso
中階會員 發表:140 回覆:124 積分:52 註冊:2002-09-04 發送簡訊給我 |
thanks......
DataMoudule>>
---------------------------------------------
有DataBase..DataSource..Query1(有取出Fields)..Query2..元件
---------------------------------------------
procedure TData.DataSourceDataChange(Sender: TObject;
Field: TField);
var i:String;
begin
i := POSQuery.RecNo;
Form1.Edit1.Text := Query1.FieldByName('BBBB').AsString;
end;
---------------------------------------------
Form1>>>>有DBGrid取出該資料庫
目的:再DBGrid移動游標,會將值填入Edit1中,並可於Edit1直接更新資料 procedure TForm1.BTupdateClick(Sender: TObject);
begin
Data.Query2.SQL.Clear;
Data.Query2.SQL.Add('Update ABC ');
Data.Query2.SQL.Add('SET ');
Data.Query2.SQL.Add('BBB = ''' Edit1.Text ''', ');
Data.Query2.SQL.Add('T_R = ''' BoolToStr(CheckBox1.Checked) ''', ');
Data.Query2.SQL.Add('QTN = ''' QTN.Text ''' ');
Data.Query2.SQL.Add('Where BNO = ''' Data.Query1.FieldbyName('BNO').AsString ''' ');
Data.Query2.ExecSQL; Data.POSQuery.Close;
Data.POSQuery.Open;
Data.Query2.RecNo := StrToINT(i);
//更新後如何維持再此修改列??而不移到首筆
end; 另有一Form2
其中類似上述有作Insert & Update
亦使用同一Query1與Query2
============================================
Question(1)
更新後如何維持再此修改列??而不移到首筆
不知要如何利用RecNo等
Question(2)
該二Form單獨執行都正常,但當先執行Form2後,再開啟Form1.
Form1上之Dbgrid會沒有資料 先執行Form1後,再開啟Form2.則會產生錯誤
是否為FormClose沒有完全釋放,或再另行作Query不要共用
FormClose時我用
Data.Free;
Form1.Release;
|
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
引言: thanks...... DataMoudule>> --------------------------------------------- 有DataBase..DataSource..Query1(有取出Fields)..Query2..元件 --------------------------------------------- procedure TData.DataSourceDataChange(Sender: TObject; Field: TField); var i:String; begin i := POSQuery.RecNo; Form1.Edit1.Text := Query1.FieldByName('BBBB').AsString; end; --------------------------------------------- Form1>>>>有DBGrid取出該資料庫 目的:再DBGrid移動游標,會將值填入Edit1中,並可於Edit1直接更新資料 procedure TForm1.BTupdateClick(Sender: TObject); begin Data.Query2.SQL.Clear; Data.Query2.SQL.Add('Update ABC '); Data.Query2.SQL.Add('SET '); Data.Query2.SQL.Add('BBB = ''' Edit1.Text ''', '); Data.Query2.SQL.Add('T_R = ''' BoolToStr(CheckBox1.Checked) ''', '); Data.Query2.SQL.Add('QTN = ''' QTN.Text ''' '); Data.Query2.SQL.Add('Where BNO = ''' Data.Query1.FieldbyName('BNO').AsString ''' '); Data.Query2.ExecSQL; Data.POSQuery.Close; Data.POSQuery.Open; Data.Query2.RecNo := StrToINT(i); //更新後如何維持再此修改列??而不移到首筆 end; 另有一Form2 其中類似上述有作Insert & Update 亦使用同一Query1與Query2 ============================================ Question(1) 更新後如何維持再此修改列??而不移到首筆 不知要如何利用RecNo等 RecNo不可行,最好是先用變數在BEFORD EDIT記下key值在AFTER POST利用LOCALTE移到該筆資料 Question(2) 該二Form單獨執行都正常,但當先執行Form2後,再開啟Form1. Form1上之Dbgrid會沒有資料 先執行Form1後,再開啟Form2.則會產生錯誤 是否為FormClose沒有完全釋放,或再另行作Query不要共用 FormClose時我用 Data.Free; DATAMOUDLE己被你FREE掉了當然會出現問題 Form1.Release;@@~~飛翔在天際的精靈~~@@
------
@@~~飛翔在天際的精靈~~@@ |
Paicaso
中階會員 發表:140 回覆:124 積分:52 註冊:2002-09-04 發送簡訊給我 |
|
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
引言: 謝謝您的回覆.但我還有不太了解的地方 1.要如何記下key值.如果設在該Query1.會不會造成其他的Form產生問題 可以利用動態ASSGIN程式碼方式做,請參考先前的討論 2.不是當FormClose時把DataMoule關閉.而當FormCreate時再重新連結嗎? 除非你的DATAMOUDLE是動態產生的,否則這樣做會有問題,因為我看不到你有CREATE DATAMOUDLE的程式碼 3.我做二個Query(Query1作查詢.Query2作資料更新).這樣子的觀念對嗎 但修改完後必須重新取出資料,才會看到最新的資料 如此資料庫一大是否就會變得很慢.請問先進有何建議. 其實不用這麼麻煩,因為你是單檔維護,所以其實只要利用一個QUERY即可 謝謝您的指教@@~~飛翔在天際的精靈~~@@
------
@@~~飛翔在天際的精靈~~@@ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |