我用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表导入数据时应该注意什么问题?望各位前辈指点!!!

解决方案 »

  1.   

    看看你的access表的input字段 是否允许空值
      

  2.   

    你确定是你的这个OPEN报的异常吗?
    我上次遇到的问题是因为字段是空的,在下边取值的时候就出错了,
    // 读取字段内容
    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;
      

  3.   

    自己解决啦!Input好像是Access得一个关键字,改成别的名字就没问题啦!感谢各位的关心,散分啦!