当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

    摘要: procedure tfrmjld.dbgrid1mousedown(sender: tobject; button: tmousebutton; shift: tshiftstate; x, y: integer); var pt:tpoint; begin getcursorpos(pt); if adoquery_jld.isempty then exit; if button = ......
    摘要: 操作系统:windows 2000 server 数据库:bde 数据查询、插入、删除操作控件:tquery控件(sql语言,所有操作全用sql语言) 插入多条记录,退出程序。用delphi自带的database desktop打开表。数据已经成功的插入表中。 按键盘上的“power”(电源)键关机。 重启电脑,再用database desktop打开表,在关机前插入的数据全部丢失了???......


怎么获得查询得到元组的个数阿RecordCount怎么总是报错呢

这是我写的代码。想把sql语句查询到的结果个数放到int   a   中。  
  编译通过了,可运行时出错:IBQuery1:Cannot   perform   this   operation   on   an   open   dataset.      
   
  IBQuery1->SQL->Clear();  
                  IBQuery1->Close();  
                  String   S;  
                  S="select   COUNT(*)   from   WENXIANJILU   where   FENLEIHAO="  
                +Trim(xianshi)+"   ";     //xianshi为一string   类型变量。  
                IBQuery1->SQL->Text=S;  
                IBQuery1->Active=true;  
                IBQuery1->ExecSQL();  
                int   a   =   IBQuery1->RecordCount   +   1;//   运行时提示出错处  
                IBQuery1->Close();  
 

NO.1   作者: hunyahun

你这个方法是错误的,首先,你selectc   count(*)后,IBQuery的记录数始终为1,即便没有满足条件的记录,也会有一条记录,这样你就达不到目的。应该使用select   *   from   ..   where   ..来获取记录集,如果想使用select   count(*)就不需要使用RecordCount。  
  另外IBQuery->SQL是TStrings类,不能用=,应该是  
  IBQuery->Close();  
  IBQuery->SQL->Clear();  
  IBQuery->SQL->Add(s);  
  IBQuery->Open();  
  最后,你在使用RecordCount使,应该使用try{...}catch{...}来捕获异常,由此来判断错误。

NO.2   作者: Acquarius

IBQuery1->ExecSQL();  
  是不需要的.

NO.3   作者: yejun52

IBQuery1->Active=true;//这个也是不需要的

NO.4   作者: wildwolfhgq

我也遇到过同样的问题  
  将  
  IBQuery1->ExecSQL();  
  去掉就ok了,你试试看看  
 


    摘要: 是否能够将编写的应用程序打包啊?如何打包呢?有专门的打包程序吗? windows下使用install shield for delphi, linux下呢? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE