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

如何指項該筆Record

答題得分者是:Justmade
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-17 11:39:55 IP:61.228.xxx.xxx 未訂閱
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-17 11:48:53 IP:211.21.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-17 11:52:02 IP:211.74.xxx.xxx 未訂閱
Adoquery1.Open; Adoquery1.Locate('keyuser',Edit1.text,[loPartialKey]) ;//加上這一句試看看 TRY TRY SEE
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-17 13:20:23 IP:218.16.xxx.xxx 未訂閱
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);
end
1. 用 Bookmark 可在重開 Adoquery1 後回到原來的地方 2. 你每次變更 query.sql 時都會使該 query 浪費時間去檢查變動後的 sql,所以一次過給 query.sql 一個值比較有效率得多。
nick167
中階會員


發表:86
回覆:133
積分:53
註冊:2003-02-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-17 15:08:25 IP:61.228.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-17 17:11:59 IP:61.228.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-17 18:21:13 IP:218.16.xxx.xxx 未訂閱
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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-17 18:25:53 IP:61.228.xxx.xxx 未訂閱
引言: 請問sql 指向第一筆(First),下一筆(Next),上一筆(Prior),末筆 (Last) 指令與delphi一樣嗎?
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-03-17 19:02:32 IP:218.16.xxx.xxx 未訂閱
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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-03-17 19:38:21 IP:61.228.xxx.xxx 未訂閱
引言: 謝謝 Jusmade
系統時間:2024-11-22 23:27:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!