線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2259
推到 Plurk!
推到 Facebook!

TTable.FindKey()和Locate()的問題請教

缺席
pprayer
高階會員


發表:35
回覆:185
積分:174
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-27 16:57:08 IP:211.75.xxx.xxx 未訂閱
是這樣的,我對一個TTable設定了IndexFieldNames(Primary Key) 用FindKey的話無法讓Cusor指到要找的那筆,用Locate則可。 且在Post 或者Refresh之後,Cursor會指向Table的第一筆, 即使在AfterRefresh 或者AfterPost之後Locate也是一樣。 不知道這是怎麼回事?
leo2568
中階會員


發表:54
回覆:124
積分:70
註冊:2003-09-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-27 17:34:10 IP:202.145.xxx.xxx 未訂閱
引言:是這樣的,我對一個TTable設定了IndexFieldNames(Primary Key) 用FindKey的話無法讓Cusor指到要找的那筆,用Locate則可。 且在Post 或者Refresh之後,Cursor會指向Table的第一筆, 即使在AfterRefresh 或者AfterPost之後Locate也是一樣。 不知道這是怎麼回事?
Locate 方法可以不必先 Tabel.colse;
begin
  FindSuccess := Table.Locate('CustNo',Edit.Text, [loPartialkey]);
end;    FindKey 方法
begin
  Table1.Close;
  Table1.IndexFieldNames :='CustNo';
  Table1.Open;
  FindSuccess := Table1.FindKey([Edit1.Text])
end;
loCaseInsensitive :不分大小寫 loPartialKey :資料只要部份符合 希望對你有幫助... 發表人 - leo2568 於 2003/11/27 17:44:06
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-27 17:51:15 IP:63.84.xxx.xxx 未訂閱
您好﹗    可能是Locate部分的程式問題吧﹗    當資料表Close再Open或者Refresh后﹐資料錄指針就會移到當前資料表的首筆資料錄﹐這是一個資料表操作方法的觀念﹒    如果所使用資料表的筆數不是很多﹐當Close&Open或者Refresh后﹐指針移到首筆記錄(印象中﹐Post之后應不會﹐找時間試一試)﹐對使用者而言還不至于太為困扰﹐但如果資料表中的資料錄筆數已經很多﹐夸張一些來講﹐甚至已經上萬筆﹐在操作過程中﹐指針突然移到首筆的反應對使用者而言﹐真的是一個大困扰了﹐所以說﹐您所提到的Locate查詢﹐就是解決這個困扰的好方法了﹒    Locate方法有帶三個參數﹐一般來講第一個參數我們都會使用鍵值欄位名﹐以達到查詢的准确性及提高效率﹐但需要記錄下之前指針位置所對應的鍵值欄位值﹐您可將以下程式碼寫在DataSource元件的OnDataChange事件中﹐目的是在指針移動時即時記錄下鍵值欄位值(注﹕先做變數宣告在Form1宣告之后)﹕
Var
  Form1 : TForm1;
  Remark : String;
  //先將變數宣告在此處﹐以使所有的程式中都能使用
begin
  Remark := ADOTable1.FieldByName('鍵值欄位名').AsString;
end;
而后﹐即可在影響指針移動的方法之后加上Locate查詢(比如說Close&Open)﹕
begin
  ADOTable1.Close;
  ADOTable1.Open;
  ADOTable1.Locate('鍵值欄位名', Remark, []) ;
end;
參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟 發表人 - cashxin2002 於 2003/11/27 17:54:40
------
忻晟
pprayer
高階會員


發表:35
回覆:185
積分:174
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-02 00:32:55 IP:61.217.xxx.xxx 未訂閱
這幾天還查不出是什麼原因。 試過幾位前輩提的方法,在我自己這邊是行得通,不過客戶那邊不行。 因此猜想也許是資料庫的問題,就把客戶那邊的資料庫備份一份到我這邊還原。 試了也正常,可以利用locate很正確的指到指定的資料行。 資料庫、程式方面都一樣,不曉得我是哪裡搞錯了。 這幾天會再找機會試,然後把結果跟各位報告。
系統時間:2024-11-25 12:28:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!