TQuery傳回總筆數的問題 |
答題得分者是:Fishman
|
kaust54
一般會員 發表:4 回覆:7 積分:2 註冊:2003-03-03 發送簡訊給我 |
|
yachanga
資深會員 發表:24 回覆:335 積分:296 註冊:2003-09-27 發送簡訊給我 |
我之前也有遇到這個問題
剛剛看了一下Delphi Help, 才知道只建議使用在Paradox,dBASE...
我現在都是用其他方式來取代, 比較保險
例如
if Dataset.fieldbyName('column').asStrung<>'' then
.... Use RecordCount with care, because record counting can be a costly operation, especially for SQL queries that return large result sets. Generally, an application should only use RecordCount with Paradox and dBASE tables. ~悠遊法國號~
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi kaust54, 前些時候遇到相同問題,測了半天得到相同結果,後來在 TQuery Open 後,先下的 TQuery.Last 後,該 TQuery.RecordCount 即正常了,不知原因為何?不過你可以試試
procedure TForm1.Button1Click(Sender: TObject); begin Query1.Close; Query1.Open; Query1.Last; Query1.First; ShowMessage(IntToStr(Query1.RecordCount)); end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
Wesly
中階會員 發表:14 回覆:103 積分:53 註冊:2002-05-31 發送簡訊給我 |
|
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
引言: Hi kaust54, 前些時候遇到相同問題,測了半天得到相同結果,後來在 TQuery Open 後,先下的 TQuery.Last 後,該 TQuery.RecordCount 即正常了,不知原因為何?不過你可以試試procedure TForm1.Button1Click(Sender: TObject); begin Query1.Close; Query1.Open; Query1.Last; Query1.First; ShowMessage(IntToStr(Query1.RecordCount)); end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ---------------------------------- >>< face="Verdana, Arial, Helvetica"> 這是因為TQuery所讀的資料沒有全完回來的緣故.RDBMS有個特性,為了加快資料庫反應速度,會把先找到的資料回傳,但回傳的並不是全部的資料.例如,當你在SQL Explorer下了一個指令:"select * from tableA",假設TableA裡有資料10萬筆,那麼當你執行時,你會發現沒多久時間資料已經回來.不過這些回來的資料,並不是全部10萬筆的資料,僅是前面的若干筆資料而已,當你再把ScrollBar往下拉時,你會發現游標又出現SQL的符號,表示這時繼續再向資料庫要下一批的資料中.因此,除非你的資料全抓回來了,否則TQuery.RecordCount回傳-1是可以理解的.這也是為什麼您下了Query1.Last後就正常的原因 |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
kaust54
一般會員 發表:4 回覆:7 積分:2 註冊:2003-03-03 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |