在[id(5), helpstring("method Query")] HRESULT Query([in]BSTR bstrSQL,[out,reval]_Recordset **rst);出现这样的编译错误:
C:\Documents and Settings\Administrator\桌面\ADOSamp\ADOSamp.idl(22) : error MIDL2025 : syntax error : expecting ] or , near "reval"

解决方案 »

  1.   

    1.把接口定义嵌套在类型库定理里面;
    2.在类型库开始部分加上
    importlib("C:\Program Files\Common Files\System\ado\msado15.dll");
    先编译idl文件,记住,不要直接buid,更不要rebuild,
    3.在idl编译出来的头文件里面,加上
    #import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
    这一行加的位置也要注意,有些地方是不能加的,我是加在
    #include "oaidl.h"
    #include "ocidl.h"
    这两句紧挨着的后面。
    4.build(绝对不能rebuild)。OK,不过好象vc6.0不行,但7.0绝对可以。对于vc6.0,我建议你还是用VARIANT好。
      

  2.   

    HRESULT Query([in]BSTR bstrSQL,[out,reval]IDispatch **rst)程序中这样:
    .
    .
    .
    pRecordset.CreateInstance(__uuidof(Recordset));
    pRecordset->CursorLocation = adUseClient;pRecordset->Open(YourString,pConnection.GetInterfacePtr(),adOpenForwardOnly,adLockOptimistic,adCmdUnknown);
    pRecordset->PutRefActiveConnection(NULL);pRecordset->QueryInterface(IID_IDispatch,(void **) rst);
    .
    .
    .