这是我写的代码。想把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();
你这个方法是错误的,首先,你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{...}来捕获异常,由此来判断错误。
IBQuery1->ExecSQL();
是不需要的.
IBQuery1->Active=true;//这个也是不需要的
我也遇到过同样的问题
将
IBQuery1->ExecSQL();
去掉就ok了,你试试看看