我在ATL中使用m_rs.Open(CRecordset::forwardOnly,_T(StrSql)生成COM在外部程序调用时正常,
而使用CRecordset::dynaset,CRecordset::snapshot,CRecordset::dynamic在VC编译时正常通过,但在外部程序调用时报Runtime Error!
请高手指点!谢谢!

解决方案 »

  1.   

    以前碰到过,好象是StrSql语句中用到数据库中表的字段的时候,顺序和原来表的顺序不通造成的(不是很确定哦,不太记得了)
      

  2.   

    如果你要使用CRecordset::dynaset,CRecordset::snapshot,CRecordset::dynamic,
    你的游标类型应该选择UseServer。我猜你现在是在使用UseClient的游标类型,这种游标也是ADO连接的默认选择,且只能和CRecordset::forwardOnly一起使用。
      

  3.   

    QDash(钱):
       谢谢!好象有点眉目了,不过我不知道在哪里设置游标类型为UseServer。
    还请老兄指教!
      

  4.   

    hehe
    我没有通过ATL来使用ADO或OLEDB,不过用过MFC导入ADO类型库使用_RecordsetPtr,而_RecordsetPtr的Open函数中,第三个参数就是选择游标类型。(vb也是这种顺序)。不知道你使用的CRecordset的Open函数哪个重载函数参数列表是这样的,你自己查查资料吧