在stdAfx.h里#import "c:\program files\common files\system\ado\msado15.dll" no_namespace了,报错“msado15.tlh(1316) : error C2629: unexpected 'short ('”,然后按网上说的改为#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")了,还是报错error C2039: 'adoEOF' : is not a member of '_Record'。。
{
//
// Property data
// __declspec(property(get=GetFields))
FieldsPtr Fields;
__declspec(property(get=GetState))
enum ObjectStateEnum State;
__declspec(property(get=GetMode,put=PutMode))
enum ConnectModeEnum Mode;
__declspec(property(get=GetParentURL))
_bstr_t ParentURL;
__declspec(property(get=GetRecordType))
enum RecordTypeEnum RecordType; //
// Wrapper methods for error-handling
// _variant_t GetActiveConnection ( );
void PutActiveConnection (
_bstr_t pvar );
void PutRefActiveConnection (
struct _Connection * pvar );
enum ObjectStateEnum GetState ( );
_variant_t GetSource ( );
void PutSource (
_bstr_t pvar );
void PutRefSource (
IDispatch * pvar );
enum ConnectModeEnum GetMode ( );
void PutMode (
enum ConnectModeEnum pMode );
_bstr_t GetParentURL ( );
_bstr_t MoveRecord (
_bstr_t Source,
_bstr_t Destination,
_bstr_t UserName,
_bstr_t Password,
enum MoveRecordOptionsEnum Options,
VARIANT_BOOL Async );
_bstr_t CopyRecord (
_bstr_t Source,
_bstr_t Destination,
_bstr_t UserName,
_bstr_t Password,
enum CopyRecordOptionsEnum Options,
VARIANT_BOOL Async );
HRESULT DeleteRecord (
_bstr_t Source,
VARIANT_BOOL Async );
HRESULT Open (
const _variant_t & Source,
const _variant_t & ActiveConnection,
enum ConnectModeEnum Mode,
enum RecordCreateOptionsEnum CreateOptions,
enum RecordOpenOptionsEnum Options,
_bstr_t UserName,
_bstr_t Password );
HRESULT Close ( );
FieldsPtr GetFields ( );
enum RecordTypeEnum GetRecordType ( );
_RecordsetPtr GetChildren ( );
HRESULT Cancel ( ); //
// Raw methods provided by interface
// virtual HRESULT __stdcall get_ActiveConnection (
VARIANT * pvar ) = 0;
virtual HRESULT __stdcall put_ActiveConnection (
BSTR pvar ) = 0;
virtual HRESULT __stdcall putref_ActiveConnection (
struct _Connection * pvar ) = 0;
virtual HRESULT __stdcall get_State (
enum ObjectStateEnum * pState ) = 0;
virtual HRESULT __stdcall get_Source (
VARIANT * pvar ) = 0;
virtual HRESULT __stdcall put_Source (
BSTR pvar ) = 0;
virtual HRESULT __stdcall putref_Source (
IDispatch * pvar ) = 0;
virtual HRESULT __stdcall get_Mode (
enum ConnectModeEnum * pMode ) = 0;
virtual HRESULT __stdcall put_Mode (
enum ConnectModeEnum pMode ) = 0;
virtual HRESULT __stdcall get_ParentURL (
BSTR * pbstrParentURL ) = 0;
virtual HRESULT __stdcall raw_MoveRecord (
BSTR Source,
BSTR Destination,
BSTR UserName,
BSTR Password,
enum MoveRecordOptionsEnum Options,
VARIANT_BOOL Async,
BSTR * pbstrNewURL ) = 0;
virtual HRESULT __stdcall raw_CopyRecord (
BSTR Source,
BSTR Destination,
BSTR UserName,
BSTR Password,
enum CopyRecordOptionsEnum Options,
VARIANT_BOOL Async,
BSTR * pbstrNewURL ) = 0;
virtual HRESULT __stdcall raw_DeleteRecord (
BSTR Source,
VARIANT_BOOL Async ) = 0;
virtual HRESULT __stdcall raw_Open (
VARIANT Source,
VARIANT ActiveConnection,
enum ConnectModeEnum Mode,
enum RecordCreateOptionsEnum CreateOptions,
enum RecordOpenOptionsEnum Options,
BSTR UserName,
BSTR Password ) = 0;
virtual HRESULT __stdcall raw_Close ( ) = 0;
virtual HRESULT __stdcall get_Fields (
struct Fields * * ppFlds ) = 0;
virtual HRESULT __stdcall get_RecordType (
enum RecordTypeEnum * ptype ) = 0;
virtual HRESULT __stdcall raw_GetChildren (
struct _Recordset * * pprset ) = 0;
virtual HRESULT __stdcall raw_Cancel ( ) = 0;
};
另外确认在APP的Init函数中有没有加入 AfxOleInit()?
的位置你放对没?要放在后面一点在#endif之前就好了,另外找找看有没有msado15.dll
AfxOleInit();//初始化Ole
_RecordPtr m_Recordset;
_ConnectionPtr m_Connection;
?
_ConnectionPtr m_Connection;试试?
HRESULT hr = 0;
CString csConferID = _T(""); hr = rsTt.CreateInstance(__uuidof(Recordset));
hr = rsTt->Open(_bstr_t(csSql), _variant_t((IDispatch *)pDbConn,true), adOpenDynamic, adLockOptimistic, adCmdText);
if (SUCCEEDED(hr))
{
while (! rsTt->adoEOF)
{
}
}做个参考吧,看看有什么地方是你不一样的
你把你的编译错误都列出来看看
还有个小缺陷,就是有msado15.tlh(407) : warning C4146: unary minus operator applied to unsigned type, result still unsigned,这个又是怎么说呢,听说是一定会有的。