請問有關Query的BeforePost的問題! |
答題得分者是:william
|
新手上路
一般會員 發表:17 回覆:7 積分:4 註冊:2002-11-19 發送簡訊給我 |
|
william
版主 發表:66 回覆:2535 積分:3048 註冊:2002-07-11 發送簡訊給我 |
|
andersonhsieh
版主 發表:33 回覆:531 積分:439 註冊:2002-06-10 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
你的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 發送簡訊給我 |
可以在存檔的時候檢查
另外檢查的重點在於對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 發送簡訊給我 |
引言: 我在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; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |