vc++ 中CListCtrl控件的使用2
发布网友
发布时间:2023-10-20 22:20
我来回答
共5个回答
热心网友
时间:2024-12-01 13:08
报错原因:
你从数据库中读到的值是空值,如果使用CListCtrl控件来显示控件是会出错的;
那个字段在数据库中是允许空值的:在数据库中除主键和副键以外的值理论上都可以为空,而且可以相同
避免出错的办法,有两种
第一种:修改数据库中数据的属性,在数据库中存储的时候就先给定默认值如0或者A/N。这样就不会出现空值了
第二种:修改vc程序代码,每次读取一个值的时候进行判断是否为NULL,如果是则给一个默认值,或者给一个空格什么的
ok,我以前做数据库的时候就是这样处理的,祝你成功
热心网友
时间:2024-12-01 13:08
楼主没给出代码,代码是如何读取数据库中记录的字段的呢?
读取字段有好多编写方式,一下给出一个样例:
extern _RecordsetPtr pRecordset;
extern CListCtrl list;
CString strField = (LPTSTR)(_bstr_t)pRecordset->GetCollect(_T("MyFiled"));
list.InsertItem(list.GetItemCount(), strField);
当有一条记录的MyField字段为null时,“CString strField = (LPTSTR)(_bstr_t)pRecordset->GetCollect(_T("MyFiled"));”会失败,因此在调用这条语句之前需要对字段是否为空进行判断,判断是否为null及不为null时的代码编写为:
if (pRecordset->GetCollect(_T("MyField")).vt != VT_NULL) {
CString strField = (LPTSTR)(_bstr_t)pRecordset->GetCollect(_T("MyFiled"));
list.InsertItem(list.GetItemCount(), strField);
}
热心网友
时间:2024-12-01 13:09
没有代码也说不清楚,估计是你的变量与数据库字段的类型不匹配,
把数据库读取的内容像 _variant_t 里试试,如果行的话再检查下你的变量
热心网友
时间:2024-12-01 13:09
数据库中允许空值
但是CListCtrl控件中是不允许空值的
可以通过设置默认值来避免
即当数据是空值时自动替换成默认值
热心网友
时间:2024-12-01 13:10
建议将代码传到 何丹的论坛
或者调试一下