我用Access2003导入一张Excel2003表,然后在VC中用ADO读取这个ACCESS表的Input字段就出现问题。
程序是这样写的:
m_pRecordset->Open("Select GroupIndex, UnitContent, Input From Phonetic",
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
运行后ADO抛出的异常信息是“expression cannot be evaluated”。 开始我还以为是查询字符串写错了,可在Access环境下里运行能够得到正确的查询结果。
后来,在调试的过程中我发现,只要查询字符串不包括Input字段就没问题,比如:
m_pRecordset->Open("Select GroupIndex, UnitContent From Phonetic",
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);于是我将问题定位在Input字段上。我仔细观察了导入的Excel表中Input字段与其它字段的区别,发现只有这个字段有的单元格有值,有的单元格没值。这是什么问题,为什么同样的查询语句在Access环境中就好用,通过ADO查询就出问题呢?这个问题应该怎样解决?从Excel表向Access表导入数据时应该注意什么问题?望各位前辈指点!!!
程序是这样写的:
m_pRecordset->Open("Select GroupIndex, UnitContent, Input From Phonetic",
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
运行后ADO抛出的异常信息是“expression cannot be evaluated”。 开始我还以为是查询字符串写错了,可在Access环境下里运行能够得到正确的查询结果。
后来,在调试的过程中我发现,只要查询字符串不包括Input字段就没问题,比如:
m_pRecordset->Open("Select GroupIndex, UnitContent From Phonetic",
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);于是我将问题定位在Input字段上。我仔细观察了导入的Excel表中Input字段与其它字段的区别,发现只有这个字段有的单元格有值,有的单元格没值。这是什么问题,为什么同样的查询语句在Access环境中就好用,通过ADO查询就出问题呢?这个问题应该怎样解决?从Excel表向Access表导入数据时应该注意什么问题?望各位前辈指点!!!
我上次遇到的问题是因为字段是空的,在下边取值的时候就出错了,
// 读取字段内容
var_t = mprecordset->GetCollect("thread_id"); //线程ID
if(var_t.vt == VT_NULL) //如果字段为空要处理一下
var_t = _T("");
bst_t = var_t;
DataItem.strThreadId = (LPCSTR)bst_t;