紧急求助:使用VC通过ODBC访问SQL 7.0时为何无法取得总条数?!急死我了!!!!
具体代码为:
CSqlSet *pSet; // CRecordset派生类
m_strSql = "SELECT * FROM [人]";
try
{
pSet = new CSqlSet;
if(!pSet->Open(CRecordset::dynaset, m_strSql))
{
delete pSet;
MessageBox("登入失败!");
return;
}
#if 0 // 问题1:使用这种方法,IsBOF函数返回值总是1,程序将死循环!!错误!!
int count = 0;
while(!pSet->IsBOF())
{
TRACE("\r\n-> count = %d", ++count);
pSet->MoveNext();
}
#else // 问题2:使用这种方法,GetRecordCount函数返回值为1!错误!!
if(!pSet->IsBOF()) pSet->MoveLast();
#endif
}
catch(CDBException * e)
{
e->ReportError();
e->Delete();
delete pSet;
return;
}
m_pRecordSet = pSet;
m_pRecordSet->GetRecordCount();
TRACE("\r\n==> Total lines = %d", m_pRecordSet->GetRecordCount());
请问:
1、上面两种记数方法是否有误?如果有请指教。
2、是否还有其他的方法?
谢谢
问题点数:20、回复次数:11Top
1 楼Ouyangyifeiczy(子浪)回复于 2001-12-08 15:22:49 得分 0
GetRecordCount得到的数据不一定正确吧,一般不用这个,VB才用这个呀Top
2 楼Ouyangyifeiczy(子浪)回复于 2001-12-08 15:23:39 得分 0
要是不麻烦,干脆记数。Top
3 楼Linxianjie(Sunny)回复于 2001-12-08 16:01:27 得分 0
两位所说的我都知道,但是有什么别的办法没有?
使用记数 -- 问题是:程序会死循环!!
-------------------------------------------
#if 0 // 问题1:使用这种方法,IsBOF函数返回值总是1,程序将死循环!!错误!!
int count = 0;
while(!pSet->IsBOF())
{
TRACE("\r\n-> count = %d", ++count);
pSet->MoveNext();
}
#else // 问题2:使用这种方法,GetRecordCount函数返回值为1!错误!!
if(!pSet->IsBOF()) pSet->MoveLast();
#endif
}
Top
4 楼XDZXG()回复于 2001-12-08 16:25:27 得分 0
怎么会出这种问题,我有数据库还没遇到过这种事情Top
5 楼hgw111(hg)回复于 2001-12-08 16:30:48 得分 20
1在ODBC中,函数GetRecordCount不能得到具体的记录数,DAO的函数GetRecordCount可以
2函数IsBOF()用错了,应是IsEOF()Top
6 楼liu_feng_fly(笑看风云 搏击苍穹 衔日月)回复于 2001-12-08 16:48:56 得分 0
你可以用这条sql语句"select count(*) as RecCount from ..."然后,通过RecCount就知道有多少条记录了Top
7 楼elc(晴海孤帆)回复于 2001-12-08 20:13:39 得分 0
将表名换成e文,try againTop
8 楼cmpp()回复于 2001-12-08 20:25:09 得分 0
用活动游标Top
9 楼Linxianjie(Sunny)回复于 2001-12-08 22:45:13 得分 0
hgw111(hg)说的对!
给分!
Top
10 楼Linxianjie(Sunny)回复于 2001-12-08 22:45:44 得分 0
谢谢 hgw111(hg) Top
11 楼elc(晴海孤帆)回复于 2001-12-21 21:31:20 得分 0
不是 这样 的
你可以 自己 作些 处理 来 获得 的
GetRecordCount返回的 是 当前的记录数
你可以 将指针移动到末尾 后
再调用 的
Top




