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

無法利用Table元件讀取FOXPRO正確的RecordCount

尚未結案
a120803
初階會員


發表:61
回覆:66
積分:25
註冊:2003-03-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-02 17:03:29 IP:163.25.xxx.xxx 未訂閱
請問各位大大: 我放的一個Database元件連上Foxpro database,然後再把table連上Database元件,Table元件連上Foxpro的DBF檔案,Foxpro的DBF檔案有50筆記錄,而且Database元件已經登錄使用者和密碼 但是無法利用Table元件讀取FOXPRO正確的RecordCount,程式執行時Table.RecordCount的結果是-1,不知道是怎麼回事 如下程式碼 Label1.Caption := IntToStr(Table.RecordCount);
Justmade
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-02 17:17:05 IP:218.16.xxx.xxx 未訂閱
其他方面(如顯示在DBGrid,Next,Last等)正常嗎? Help 說 RecordCount 最好只用在 Paradox 及 DBase Table
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-02 17:44:39 IP:211.21.xxx.xxx 未訂閱
引言: 請問各位大大: 我放的一個Database元件連上Foxpro database,然後再把table連上Database元件,Table元件連上Foxpro的DBF檔案,Foxpro的DBF檔案有50筆記錄,而且Database元件已經登錄使用者和密碼 但是無法利用Table元件讀取FOXPRO正確的RecordCount,程式執行時Table.RecordCount的結果是-1,不知道是怎麼回事 如下程式碼 Label1.Caption := IntToStr(Table.RecordCount);
如果不行的話,就用其他的替代方法吧!
var
  qry: TQuery;
begin
  qry := TQuery.Create(nil);
  with qry do
  try
    DatabaseName := Your Alias Name;
    Close;
    SQL.Clear;
    SQL.Add('Select Count(*) RecordCount From TableName');
    Open;
    Label1.Caption := qry.FieldByName(RecordCount).AsString;
  finally
    FreeAndNil(qry);
  end;
end;
~小弟淺見,參考看看~ 發表人 - channel 於 2003/04/02 17:46:35
------
~小弟淺見,參考看看~
a120803
初階會員


發表:61
回覆:66
積分:25
註冊:2003-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-02 18:13:05 IP:163.25.xxx.xxx 未訂閱
謝謝大大: 用Tabel元件可以讀取正確的FieldCount屬性值,用DBGrid也可以顯示,至於為什麼不能讀取正確的RecordCount?我讀取的recordset值都是-1ㄝ,好奇怪喔
Paicaso
中階會員


發表:140
回覆:124
積分:52
註冊:2002-09-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-06 02:54:51 IP:61.59.xxx.xxx 未訂閱
我也碰過同樣的問題 在此提供小弟的淺見 //因FoxPro對於RecordCount取出值會有問題,故改用下列方法 //用新的Query, Query.Fields[0].AsInteger取代RecordCount,即可使用下列SQL語法,如 FoxproQUERY.SQL.Clear; FoxproQUERY.SQL.Add('Select * From product '); FoxproQUERY.SQL.Add('Order by no'); FoxproQUERY.CLOSE; FoxproQUERY.OPEN; FoxproQUERY.SQL.Clear; FoxproQUERY.SQL.Add('SELECT Count(*) FROM Product '); FoxproQUERY.CLOSE; FoxproQUERY.OPEN; Panel_P1.Caption := '資料筆數:共 ' IntToStr(FoxproQuery.Fields[0].AsInteger) ' 筆'; 提供您作參考
Paicaso
中階會員


發表:140
回覆:124
積分:52
註冊:2002-09-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-06 02:58:39 IP:211.74.xxx.xxx 未訂閱
更正 我也碰過同樣的問題 在此提供小弟的淺見 //因FoxPro對於RecordCount取出值會有問題,故改用下列方法 //用新的Query, Query.Fields[0].AsInteger取代RecordCount,即可使用下列SQL語法,如下 //FoxproQUERY1為有取出Field FoxproQUERY1.SQL.Clear; FoxproQUERY1.SQL.Add('Select * From product '); FoxproQUERY1.SQL.Add('Order by no'); FoxproQUERY1.CLOSE; FoxproQUERY1.OPEN;    //FoxproQUERY2無取出Field FoxproQUERY2.SQL.Clear; FoxproQUERY2.SQL.Add('SELECT Count(*) FROM Product '); FoxproQUERY2.CLOSE; FoxproQUERY2.OPEN; Panel_P1.Caption := '資料筆數:共 '+IntToStr(FoxproQuery2.Fields[0].AsInteger)+' 筆';    提供您作參考    
Justmade
版主


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-06 12:37:13 IP:218.16.xxx.xxx 未訂閱
主要原因應是 BDE 對 FoxPro 的支援不是很足。用TTable 時讀 RecordCount 應是經過 DBF 內建的 Recno 來讀取但可能因為 FozPro 的格式稍有不同所以讀不到罷。 你可試試用 TQuery 來代替試試可否讀取 Record Count (因Query 取 RecordCount 的手法應有不同),若不成的話只好按其他網友提議給你的辦法用 Select Count(*) as RecordCount from TableName 了。
Gide
一般會員


發表:7
回覆:10
積分:3
註冊:2003-01-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-04-07 13:35:24 IP:61.219.xxx.xxx 未訂閱
在使用vb的dao 我也曾遇到相同的問題 解決方法是 table.last table.first 也是就讓recordset 從最後一筆又跑到第一筆,如此即可 計算出筆數了
系統時間:2024-07-01 18:10:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!