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

請問有關Query的BeforePost的問題!

答題得分者是:william
新手上路
一般會員


發表:17
回覆:7
積分:4
註冊:2002-11-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-04 15:42:03 IP:211.23.xxx.xxx 未訂閱
我在Query1的BeforePost裏頭加了一個Query2 目的是用來判斷當資料庫中此筆資料已存在時, 產生訊息來告知使用者, 這樣的作法在新增的時候沒有問題, 可是如果是做Update的話, 也會產生告知的訊息! 我曾試著將Query2加在AfterInsert,BeforeInsert,AfterEdit,BeforeEdit 但似乎都不太對, 請問各位前輩, 我應該將Query2放在何處才正確? 謝謝!
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-04 15:55:19 IP:147.8.xxx.xxx 未訂閱
You may want to check the "State" property of the dataset, e.g. if DataSet.State=dsInsert then begin end;    BTW, what is wrong with using BeforeInsert?
andersonhsieh
版主


發表:33
回覆:531
積分:439
註冊:2002-06-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-04 15:56:37 IP:211.20.xxx.xxx 未訂閱
多加一個flag在新增時將flag設為TRUE,EDIT時將FLAG設為FALSE,在BEFOREPOST判斷如FLAG為TRUE時就跑你原來的判斷程式 @@~~飛翔在天際的精靈~~@@
------
@@~~飛翔在天際的精靈~~@@
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-04 16:06:59 IP:211.74.xxx.xxx 未訂閱
你的Form應該有一個叫做存檔的按鈕在該按鈕click時先做檢查,
procedure TForm1.Button1Click(Sender: TObject);
begin
//這裡開始作你的檢查
Query2.Close;
.
.
//如果不重覆
begin
Query1.post;
Query1.applyupdates;
end
else//重覆
begin
SHOWMESSAGE('已重覆!!');
ned;
end;
TYR TRY SEE
引言: 我在Query1的BeforePost裏頭加了一個Query2 目的是用來判斷當資料庫中此筆資料已存在時, 產生訊息來告知使用者, 這樣的作法在新增的時候沒有問題, 可是如果是做Update的話, 也會產生告知的訊息! 我曾試著將Query2加在AfterInsert,BeforeInsert,AfterEdit,BeforeEdit 但似乎都不太對, 請問各位前輩, 我應該將Query2放在何處才正確? 謝謝!
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-04 16:32:20 IP:61.220.xxx.xxx 未訂閱
可以在存檔的時候檢查 另外檢查的重點在於對query1的state 是dsinsert 或 dsedit 去檢查    舉例
  query2.Close ;
  query2.Open;
  query2.First;      with query2 do
  begin
    while not Eof do
    begin
      if query1.State in [dsinsert] then
      begin
        //做檢查                
      end
      else if query1.State in [dsEdit] then
      begin
        //做檢查        
      end;
      Next ;
    end;
  end;
天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-05 00:07:29 IP:61.70.xxx.xxx 未訂閱
引言: 我在Query1的BeforePost裏頭加了一個Query2 目的是用來判斷當資料庫中此筆資料已存在時, 產生訊息來告知使用者, 這樣的作法在新增的時候沒有問題, 可是如果是做Update的話, 也會產生告知的訊息!
我想你是在修改資料時,做Query的檢查要查到目前這筆才會這樣!! 我的做法是檢查Key欄位是否有改變,如改變了才去執行Query做檢查 如下: procedure TFrmBA01.TolDBSaveClick(Sender: TObject); begin if self.ADO_Master.FieldByName('客戶編號').value <> self.ADO_Master.FieldByName('客戶編號').OldValue then Begin self.ADOQuery1.SQL.Clear; self.ADOQuery1.SQL.Add('Select * From bsCustomer'); self.ADOQuery1.SQL.Add('where 客戶編號="' self.ADO_Master.FieldByName('客戶編號').value '";'); showmessage(ADOQuery1.SQL.Text); self.ADOQuery1.Active:=True ; if self.ADOQuery1.RecordCount >0 Then Begin showmessage('客戶編號己存在') ; abort ; exit; end; end; inherited; end;
系統時間:2024-07-03 5:38:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!