为什么?

doublesword 2003-08-21 04:34:06
我是想把一个数据表(RecordSet)中具有条件
if(var.pbVal==strName)
的数据复制到另外一个具有相同结构的数据表(addRS)中,
在调试过程中出现这样的问题:
1.语句从while开始执行,第一次执行断点位置时候
即:RecordSet.GetFieldValue("日期",var);
没有任何问题
2.第二次执行断点位置时候出现图中弹出的对话框


请问这是什么原因?
...全文
47 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
doublesword 2003-08-22
  • 打赏
  • 举报
回复
应该不是字符串比较的问题,这个是可以比较的,我以前用的,而且我把比较去掉一样的出错。下面,是代码:
COleVariant var;
while(!RecordSet.IsBOF())
{
RecordSet.GetFieldValue("日期",var); //出错行
if(var.pbVal<strName)
break;
else if(var.pbVal==strName)
{
addRS.AddNew();
for(i=0;i<count;i++)
{
RecordSet.GetFieldValue(i,var);
addRS.SetFieldValue(i,var);
}
addRS.Update();
}
RecordSet.MoveNext();
}


出错信息:
Unhandlede exception in Second.exe(KERNEL32.DLL):0xE06D7363:Microsoft C++ Exception.

另外还有一个相关的问题,如下:
COleVariant var;
RecordSet.Edit();
var.intVal=20;
RecordSet.SetFieldValue("上行衰减值",var); //出错行
...
RecordSet.Update();

出错信息:
Unhandlede exception in Second.exe(OLEAUT32.DLL):0xC0000005:Access Violation.
doublesword 2003-08-22
  • 打赏
  • 举报
回复
没有人知道吗?
vcforever 2003-08-21
  • 打赏
  • 举报
回复
应该比较字符串!
bager 2003-08-21
  • 打赏
  • 举报
回复
同意 dz_w(快乐之星) 。
如果strName为CString 类型的对象,还可以使用CString 类的Compare成员函数,如下:
CString s1( "abc" );
CString s2( "abd" );
ASSERT( s1.Compare( s2 ) == -1 ); // Compare with another CString.
ASSERT( s1.Compare( _T("abe" ) ) == -1 ); // Compare with LPTSTR string.
farfh 2003-08-21
  • 打赏
  • 举报
回复
用lstrcmp也成,呵呵
dz_w 2003-08-21
  • 打赏
  • 举报
回复
if(var.pbVal==strName)改为
if(::strcmp(var.pbVal, strName) == 0)
pbVal是unsigned char *型,直接用 == 是指针的比较,另外使用时注意分配内存

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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