ADOQuery1->RecordCount为什么返回不了记录行数?

d383137359 2013-03-04 03:08:33

前提:C++ builder + access数据库
如题,在BCB中,RecordCount为什么总是0?
直接从查询分析器中将查询语句写进去结果是有多条数据的。目的是要取回记录的行数。


AnsiString tmsql;
ADOQuery1->ConnectionString = conselacess;
tmsql = "SELECT * FROM notes130228 where tetmaddr like '*6926*'";
try
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(tmsql);
ADOQuery1->Open();
int selcount = ADOQuery1->RecordCount;
}
catch(Exception &e)
{
ShowMessage("查询数据异常");
}


这样执行完后,selcount 始终为0
如果将查询字符串写成

tmsql = "SELECT count(*) as acnum FROM notes130228 where tetmaddr like '*6926*'";

ADOQuery1->RecordCount;会返回有一条数据,但是我将acnum用
int selcount = ADOQuery1->FieldByName("acnum ")->AsInteger;取回来,结果依然是0;为什么?
...全文
774 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
d383137359 2013-03-05
  • 打赏
  • 举报
回复
ok了,在access中的通配符是*,在ADO中是%
jone7319 2013-03-04
  • 打赏
  • 举报
回复
你显示查询到的那条记录看,是否查询是正常的
stbigcrab 2013-03-04
  • 打赏
  • 举报
回复
ADO和access的通配符有可能不一样,你在ADO内,把通配符改成%看看。
d383137359 2013-03-04
  • 打赏
  • 举报
回复
引用 5 楼 draculamx 的回复:
ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add(tmsql); ADOQuery1->ExecSQL();
ADOQuery1->ExecSQL(); 是不要求返回结果集,我是需要结果集的。
draculamx 2013-03-04
  • 打赏
  • 举报
回复
ADOQuery1->Close(); ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add(tmsql); ADOQuery1->ExecSQL();
d383137359 2013-03-04
  • 打赏
  • 举报
回复
引用 3 楼 ksrsoft 的回复:
RecordCount 就是返回的记录数,看看sql语句是否正确
sql语句肯定是正确的,tmsql 就是我打断点用watch复制出来的。而且这条语句直接复制到 SQL查询中去是会返回多条记录的,请仔细看下问题好吗?
缘中人 2013-03-04
  • 打赏
  • 举报
回复
RecordCount 就是返回的记录数,看看sql语句是否正确
d383137359 2013-03-04
  • 打赏
  • 举报
回复
引用 1 楼 lcluck2002 的回复:
在Access里用SQL语句查询一下,看看结果如何先?
用SQL语句查询是有多条记录的。请问返回结果记录条数有没有其他函数或属性?
|????| 2013-03-04
  • 打赏
  • 举报
回复
在Access里用SQL语句查询一下,看看结果如何先?

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧