VC+ADO+ACCESS文件,在一台只装WIN98而没有装OFFICE的计算机上能否正常运行?
其中,编译文件是静态连接MFC的DLL。
我把EXE文件和MDB文件拷贝到一台只装WIN98而没有装OFFICE的计算机上,运行到那句
m_pRecordset.CreateInstance("ADODB.Recordset");
的时候,没有问题,但是运行到下面的这句就出现错误:
m_pRecordset->Open("SELECT * FROM users",_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);为什么?有无解决办法?

解决方案 »

  1.   

    ACCESS是基于文件型的数据库,没有装应该没有问题。
    有没有可能是WIN98对ADO这个版本的支持不好?
      

  2.   

    应该是没有问题,你再看看你所使用的ado时那个版本,语法时没有任何问题的,不过你试着改成这样:m_pRecordset->Open("Select * from users",m_pDoc->m_pConn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);
      

  3.   

    我可以肯定是可以的,因为我有好几个程序多是这样作的,是不是theApp.m_pConnection,建立连接时有问题?
      

  4.   

    我的问题跟你相似,执行到m_pRecordset->Open时打不开表。
      

  5.   

    初始化COM库
    在CXXXApp::InitInstance()中加入
    if (!AfxOleInit())
    {
    AfxMessageBox("初始化COM库出错");
    return FALSE;
    }
      

  6.   

    好像表不能叫users,正巧我的表也叫user改成uter就过了。
    你试试看,告诉我结果
      

  7.   


      1 _RecordsetPtr 的Open函数的各个参数到底什么类型的数据,我在不同的参考书上      看到不 同的说法
      2 pSet->Open("SELECT * FROM workers", (const _variant_t&) pConn,adOpenDynamic,adLockOptimistic,adCmdText);
    其中pSet是_RecordsetPtr 类型的,第二个参数那样强制转换行不行啊,有些书说这样打开Recordset
    pSet->Open("SELECT * FROM workers", Conn->GetInterfacePt(),adOpenDynamic,adLockOptimistic,adCmdText);
    可在我的.net环境中_ConnectionPtr 没有这个成员函数,不知道是怎么回事.
    关于vc中的ado数据库操作,我还是新手,有很多东西要学,还请高手指教,
    例如
      3 _bstr_t类型到底是什么类型的数据,
      4  variant_t 又是什么类型,
    大哥们帮忙啊!
      

  8.   

    我觉得也是可以的
    还ADO的问题
      

  9.   

    theApp.m_pConnection
    是否已经被初始化了
      

  10.   

    就是执行到OPEN的时候有问题!
    但是在我的机器(装WIN98+ACCESS)上编译和运行都没有问题。。
      

  11.   

    我觉得可能是COM库是否被初始化的问题
    在应用COM对象之前应该先初始化COM环境