mycpp

 
 

常用链接

  • 我的随笔
  • 我的评论
  • 我参与的随笔

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔档案

  • 2012年6月 (3)

搜索

  •  

最新评论

阅读排行榜

  • 1. File: winocc.cpp Line: 279错误(2334)
  • 2. 使用CRecordset::GetFieldValue的错误:error C2668(1122)
  • 3. 无效的字段名或字段索引(908)

评论排行榜

  • 1. 使用CRecordset::GetFieldValue的错误:error C2668(0)
  • 2. 无效的字段名或字段索引(0)
  • 3. File: winocc.cpp Line: 279错误(0)

Powered by: 博客园
模板提供:沪江博客
C++博客 | 首页 | 发新随笔 | 发新文章 | 联系 | 聚合 | 管理

2012年6月29日

File: winocc.cpp Line: 279错误

      查程序在运行的时候报错:“Debug Assertion Failed! File: winocc.cpp Line: 279”错误,但是忽略之后一切正常。
这种错误一般是在对话框OnSize函数中,对控件重新布局时使用MoveWindow函数时引起的。

      这是因为程序在执行OnSize函数的时候,相关控件还没有生成,所以其成员m_hWnd是NULL,当然在执行MoveWindow
的时候就会出现断言错误:ASSERT(::IsWindow(m_hWnd));

      解决方法是,在控件进行MoveWindow时先判断一下是否存在:

 if (m_ctrl.m_hWnd)
 
{
      m_ctrl.MoveWindow(rc);
 }


 

posted @ 2012-06-29 15:51 xhubobo 阅读(2334) | 评论 (0) | 编辑 收藏
 
无效的字段名或字段索引

      在使用MFC的CRecord类及其派生类的时候,如果需要获取某个字段的值,就需要用到GetFieldValue的方法了。

      据我所知,GetFieldValue方法有2个重载版本,一个是GetFieldValue("字段索引","变量名"),另一个是GetFieldValue("字段名","变量名")。如果需要获取多个字段的值,那么这两种方法都对获取字段值的顺序没有要求。需要注意的是,在使用字段索引的方法时,用SELECT语句查询出来的字段的索引时从0开始的,由于GetFieldValue方法中索引的类型是short,因此需要用(short)0将0强制转换为short类型,否则会出现“error C2668: 'GetFieldValue' : ambiguous call to overloaded function”的错误,这在另外一篇文章里面有所描述。

      最后,进入本文章的主要内容。在使用GetFieldValue方法的时候,如果使用字段名获取字段值,尽管对顺序没有特殊要求,但是很多时候在运行程序时会出现“无效的字段名或字段索引”的错误,这是因为该方法对变量名的大小写有要求,将字段名修改为大写形式,即可解决问题,例如GetFieldValue( "Rid" , val)会出错,而对于GetFieldValue( "RID" , val),不管数据表中的字段名是否大小写都能顺利通过。

posted @ 2012-06-29 15:48 xhubobo 阅读(908) | 评论 (0) | 编辑 收藏
 
使用CRecordset::GetFieldValue的错误:error C2668

 

m_rsSet.GetFieldValue( 0 , val);

编译时出现:error C2668: 'GetFieldValue' : ambiguous call to overloaded function

应改为:m_rsSet.GetFieldValue( (short)0 , val);

原因:GetFieldValue函数的第一个参数是short类型。

posted @ 2012-06-29 15:47 xhubobo 阅读(1122) | 评论 (0) | 编辑 收藏
 
仅列出标题