怎么得到TclientDateset里的记录的条数呀??
谢谢~~~
谢谢~~~
解决方案 »
- 问一个简单的ADOQUERY append的问题
- 请教一个查询问题
- 如何将字符串(包含中文,英文,数字,标点等)转换为Unicode码?
- TSHFileOpStruct操作中的句柄如何处理
- 怎样在delphi中导入execl的表格并进行打印
- 请问:如何将一个Form的内容保存为图片
- 欢迎加入讨论Treeview和数据库的问题!我这儿有段代码,帮忙看一下。
- 如何通过拨号远程上传数据进行数据库更新??紧急!!!
- 用TIdTcpClient接收一个服务端发送的数据时发生延迟,请教各位如何解决
- access中数据类型转换的函数是什么?
- 有没有可以滚动显示的label控件?
- 为什么HOOK CEdit的EN_CHANGE消息可以,Delphi写的TEdit就hook不到?
var
sql:string;
begin
DM1.ClientDataSet1.Close;
DM1.ClientDataSet1.CommandText:=sql;
DM1.ClientDataSet1.Open;
counternum.Text:=inttostr(DM1.ClientDataSet1.RecordCount);
end;
象这样每次点了Button1之后查询到记录的条数为什么都和 第一次一样呀,记录的条数变了而ClientDataSet1.RecordCount没变~~为什么呀~~
参考://==============================================================================
//取得Query记录数(服务器端:速度快于Query.RecordCount)*************************
//==============================================================================
function RecordServerCount(Query: TQuery): integer; overload;
var SQLStr: string;
begin
Result := 0;
if Query.IsEmpty then Exit;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if Pos('order',LowerCase(Query.SQL.Text))>0
then SQLStr := Copy(Query.SQL.Text,1,Pos('order',Query.SQL.Text)-1)
else SQLStr := Query.SQL.Text;
with TQuery.Create(nil) do
try
DatabaseName := Query.DatabaseName;
SQL.Text := 'select count(*) from (' + SQLStr + ')';
Params.Assign(Query.Params);
Open;
Result := Fields[0].AsInteger;
finally
Close;
Free;
end;
end;
//==============================================================================
//取得SQLDataSet记录数(服务器端:速度快于SQLDataSet.RecordCount)***************
//==============================================================================
function RecordServerCount(SQLDataSet: TSQLDataSet): integer; overload;
var SQLStr: string;
begin
Result := 0;
if SQLDataSet.IsEmpty then Exit;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if SQLDataSet.CommandType=ctQuery then
begin
if Pos('order',LowerCase(SQLDataSet.CommandText))>0
then SQLStr := Copy(SQLDataSet.CommandText,1,Pos('order',SQLDataSet.CommandText)-1)
else SQLStr := SQLDataSet.CommandText;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
if SQLDataSet.Params=nil
then Result := SQLDataSet.RecordCount
else with TSQLDataSet.Create(nil) do
try
SQLConnection := SQLDataSet.SQLConnection;
CommandText := 'select count(*) from (' + SQLStr + ')';
Params.Assign(SQLDataSet.Params);
Open;
Result := Fields[0].AsInteger;
finally
Close;
Free;
end;
end;
end;//==============================================================================
//取得DataSet记录数(客户端:仅限于少量数据)************************************
//==============================================================================
function RecordClientCount(DataSet: TDataSet): integer;
var NotifyEvent: TDataSetNotifyEvent;
SavePlace: TBook;
begin
//============================================================================
//0.初始化********************************************************************
//============================================================================
NotifyEvent := DataSet.AfterScroll;
DataSet.AfterScroll := nil;
Result := 0;
//============================================================================
with DataSet do
begin
if (BOF and EOF) then Exit;
SavePlace := GetBook;
DisableControls;
//==========================================================================
First;
while not Eof do
begin
Result := Result + 1;
Next;
end;
//==========================================================================
GotoBook(SavePlace);
FreeBook(SavePlace);
EnableControls;
end;
//============================================================================
//释放资源********************************************************************
//============================================================================
DataSet.AfterScroll := NotifyEvent;
end;
不会写在组件里面吗?
反回INTEGER
RESULT:=SELECT COUNT(*) FROM TABLE;