不知这样写对不对? |
尚未結案
|
xxxxzxx
一般會員 發表:21 回覆:49 積分:24 註冊:2004-11-15 發送簡訊給我 |
procedure xx;
var s1,s2:string;
begin adoquery1.close;
adoquery1.sql.Clear;
adoquery1.SQL.Add(mysql_01);
adoquery1.ExecSQL;
////adoquery1执行完了吗?怎么判断? adoquery2.close;
adoquery2.sql.Clear;
adoquery2.SQL.Add(mysql_02);
adoquery2.open;
adoquery2.First; s1:=ADOQuery2.fields.Fields[2].AsDateTime;
s2:=ADOQuery2.fields.Fields[3].AsDateTime;
////adoquery2执行完了吗?怎么判断?adoquery2.open&adoquery2.First后不需要关闭吗? adoquery3.close;
adoquery3.sql.Clear;
adoquery3.SQL.Add(mysql_03);
adoquery3.ExecSQL; end;
____________________________________________________________
小弟的问题是,在一个过程里写多个query怎么知道上一个执行完了?还是不能这样写?
我想做到让adoquery1执行完了才让adoquery2执行adoquery2完了又才让adoquery3执行.
|
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
執行完了就執行完了,不知道您要判斷什麼呢?
adoquery1.ExecSQL;
把SQL送至Server去處理. adoquery2.open;
這樣執行會傳回資料集DataSet First后不需要关闭吗?
看你還用不用的到那各資料集,如果用不到就Close掉他 我想做到让adoquery1执行完了才让adoquery2执行adoquery2完了又才让adoquery3执行.
一個一個程序下來,當然是adoquery1執行完會執行adoquery2...etc 發表人 - supman 於 2005/04/12 22:28:03
|
xxxxzxx
一般會員 發表:21 回覆:49 積分:24 註冊:2004-11-15 發送簡訊給我 |
|
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
|
xxxxzxx
一般會員 發表:21 回覆:49 積分:24 註冊:2004-11-15 發送簡訊給我 |
引言: 除非您是在不同程序中才需要做這樣的控制,如Button1按下去做編輯,Button2按下去也是做編輯這樣需要去控管.小弟有点明白了按您所讲我想改成这样行吗?还想知道如何控管?谢谢 procedure xx; var s1,s2:string; begin adoquery1.close; adoquery1.sql.Clear; adoquery1.SQL.Add(mysql_01); adoquery1.ExecSQL; adoquery1.close; adoquery1.sql.Clear; adoquery1.SQL.Add(mysql_02); adoquery1.open; adoquery1.First; s1:=ADOQuery1.fields.Fields[2].AsDateTime; s2:=ADOQuery1.fields.Fields[3].AsDateTime; adoquery1.close; adoquery1.sql.Clear; adoquery1.SQL.Add(mysql_03); adoquery1.ExecSQL; end; |
supman
尊榮會員 發表:29 回覆:770 積分:924 註冊:2002-04-22 發送簡訊給我 |
procedure xx;
var s1,s2:string;
begin adoquery1.close;
adoquery1.sql.Clear;
adoquery1.SQL.Add(mysql_01);
adoquery1.ExecSQL; adoquery1.close;
adoquery1.sql.Clear;
adoquery1.SQL.Add(mysql_02);
adoquery1.open;
adoquery1.First;//不需要這行,Query完,指標會在第一筆
AdoQuery.Edit;
s1:=ADOQuery1.fields.Fields[2].AsDateTime;
s2:=ADOQuery1.fields.Fields[3].AsDateTime;
//建議寫成AdoQuery1.FieldByName(欄位名).AsDateTiem比較直覺
AdoQuery.Post;
adoquery1.close;
adoquery1.sql.Clear;
adoquery1.SQL.Add(mysql_03);
adoquery1.ExecSQL; end;
//基本上這樣的程序都用同一各Query就可以了
控管就是說當您同時對同一筆資料進行修改時,如果兩各Query都已經把資料抓回來,而您Query1修改Post回去,這樣子Query2修改要儲存時會產生找不到更新的列的問題,因為原來的值已經被改掉了. 控管的方式就是當Query1或Query2修改時,就先去檢查是否正在編輯中. 如何判斷正在編輯中,就是當可以編輯時就將該筆資料的鍵值紀錄在一各資料表中,當您檢查到表中有這筆資料時,就表示這筆資料有人在使用,而不得編輯,並告知使用者.當然若編輯完畢,就必須將表中的值給刪除掉,以讓下一位使用繼續使用.
|
xxxxzxx
一般會員 發表:21 回覆:49 積分:24 註冊:2004-11-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |