如何指項該筆Record |
答題得分者是:Justmade
|
nick167
中階會員 發表:86 回覆:133 積分:53 註冊:2003-02-12 發送簡訊給我 |
Adoquery2.sql.Clear;
Adoquery2.SQL.Add('insert into mschkuser');
Adoquery2.SQL.Add('(keyuser,keyname,keypassword,phone) values (');
Adoquery2.SQL.Add(' ''' edit1.Text ''',');
Adoquery2.SQL.Add(' ''' edit2.Text ''',');
Adoquery2.SQL.Add(' ''' edit3.Text ''',');
Adoquery2.SQL.Add(' ''' edit4.Text ''')');
Adoquery2.ExecSQL;
Adoquery1.Close;
Adoquery1.Open; DBGrid指標都會指像第一筆,可讓它append or update 後指標指向該筆,
而不是第一筆,應該是close -> open 關係,請前備指點是否有其它方法
謝謝
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: Adoquery2.sql.Clear; Adoquery2.SQL.Add('insert into mschkuser'); Adoquery2.SQL.Add('(keyuser,keyname,keypassword,phone) values ('); Adoquery2.SQL.Add(' ''' edit1.Text ''','); Adoquery2.SQL.Add(' ''' edit2.Text ''','); Adoquery2.SQL.Add(' ''' edit3.Text ''','); Adoquery2.SQL.Add(' ''' edit4.Text ''')'); Adoquery2.ExecSQL; Adoquery1.Close; Adoquery1.Open; DBGrid指標都會指像第一筆,可讓它append or update 後指標指向該筆, 而不是第一筆,應該是close -> open 關係,請前備指點是否有其它方法 謝謝您可以在Adoquery1.Open;之後,使用Locate的方式,將指標指向append or update後的Record。例如: Adoquery1.Locate('keyuser', edit1.Text, []); ~小弟淺見,參考看看~ 發表人 - channel 於 2003/03/17 11:50:20
------
~小弟淺見,參考看看~ |
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
var BookMark : TBookMark; begin Adoquery2.sql.text := 'insert into mschkuser (keyuser,keyname,keypassword,phone) values (''' edit1.Text ''', ' edit2.Text ''', ' edit3.Text ''', ' edit4.Text ''')'; Adoquery2.ExecSQL; BookMark := Adoquery1.GetBookMark; Adoquery1.Close; Adoquery1.Open; Adoquery1.GotoBookMark(BookMark); Adoquery1.FreeBookMark(BookMark); end1. 用 Bookmark 可在重開 Adoquery1 後回到原來的地方 2. 你每次變更 query.sql 時都會使該 query 浪費時間去檢查變動後的 sql,所以一次過給 query.sql 一個值比較有效率得多。 |
nick167
中階會員 發表:86 回覆:133 積分:53 註冊:2003-02-12 發送簡訊給我 |
引言: Adoquery1.Open; Adoquery1.Locate('keyuser',Edit1.text,[loPartialKey]) ;//加上這一句試看看 TRY TRY SEE 忘引述:procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField); begin edit1.text:=adoquery1.fieldbyname('keyuser').AsString; edit2.text:=adoquery1.fieldbyname('keyname').AsString; edit3.text:=adoquery1.fieldbyname('keypassword').AsString; edit4.text:=adoquery1.fieldbyname('phone').AsString; end; 在insert之前,記錄 edit1.text值,因close -> open edit1-> 值以變為 Top 可以了,謝謝 |
nick167
中階會員 發表:86 回覆:133 積分:53 註冊:2003-02-12 發送簡訊給我 |
引言: BookMark := Adoquery1.GetBookMark; Adoquery1.Close; Adoquery1.Open; Adoquery1.GotoBookMark(BookMark); Adoquery1.FreeBookMark(BookMark); end 如果delete 剛好在最後一筆,就有error:bookmark is invalid message 請問sql 指向第一筆(First),下一筆(Next),上一筆(Prior),末筆 (Last) 指令與delphi一樣嗎? [/code] |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
Bookmark 基本上是記著位置,若你 delete record 令到本來的位置不見了就會出現 error... 還是先記著 close 前的鍵值然後 open 後 locate 回該筆記錄罷。
var KeyUser : String; begin Adoquery2.sql.text := 'insert into mschkuser (keyuser,keyname,keypassword,phone) values (''' edit1.Text ''', ' edit2.Text ''', ' edit3.Text ''', ' edit4.Text ''')'; Adoquery2.ExecSQL; KeyUser := AdoQuery1.FieldByname('KeyUser').Value; Adoquery1.Close; Adoquery1.Open; Adoquery1.Locate('KeyUser',KeyUser,[]); end |
nick167
中階會員 發表:86 回覆:133 積分:53 註冊:2003-02-12 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
SQL 本身是沒有 第一筆(First),下一筆(Next),上一筆(Prior),末筆 (Last)的
但你用 SQL 讀入資料後,就儲存在 Delphi 的 DataSet (TTable, TQuery, TADOQuery, TClientDataSet,... 等等全都是 DataSet),所基本上絕大部份的 DataSet 都支援 First,Next,Prior,Last 等指令,所以你的 ADOQuery 還是可以自由的用這些Delphi 的 Dataset指令的。
|
nick167
中階會員 發表:86 回覆:133 積分:53 註冊:2003-02-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |