ADO问题,网上的方法有限也无法解决

蒙飞鸿 2009-09-04 11:11:40
在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'。。。。。
...全文
151 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
aihaoaodiA6 2009-09-04
  • 打赏
  • 举报
回复
在那个地址看看这个文件损坏没有。
dengxuxing 2009-09-04
  • 打赏
  • 举报
回复
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
的位置你放对没?要放在后面一点在#endif之前就好了,另外找找看有没有msado15.dll
simghost 2009-09-04
  • 打赏
  • 举报
回复
首先确认你的VC是不是装在C盘?
另外确认在APP的Init函数中有没有加入 AfxOleInit()?
蒙飞鸿 2009-09-04
  • 打赏
  • 举报
回复
下好了,不能安装,网上的解决方法也是乱七八糟,。。
尘雨 2009-09-04
  • 打赏
  • 举报
回复
到微软的下载站点搜索 ado 2.8 , 选择ado 2.8 sp1 安装,你的ADO版本不对或者太低
蒙飞鸿 2009-09-04
  • 打赏
  • 举报
回复
_Record : _ADO
{
//
// 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;
};
Ghost90 2009-09-04
  • 打赏
  • 举报
回复
msado15.dll 文件坏了吧,换台机器试试
蒙飞鸿 2009-09-04
  • 打赏
  • 举报
回复
那个warning就先不管了,非常感谢各位!
simghost 2009-09-04
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 mengfeihong 的回复:]
还有14楼的 _T("");,两个双引号之间有没有空格呢
[/Quote]
有空格就说明这个字符串是空格了.没空格就说明是空串.
蒙飞鸿 2009-09-04
  • 打赏
  • 举报
回复
还有14楼的 _T("");,两个双引号之间有没有空格呢
蒙飞鸿 2009-09-04
  • 打赏
  • 举报
回复
是的,改成_RecordsetPtr m_Recordset; 就行了,能编译能运行。
还有个小缺陷,就是有msado15.tlh(407) : warning C4146: unary minus operator applied to unsigned type, result still unsigned,这个又是怎么说呢,听说是一定会有的。
shakaqrj 2009-09-04
  • 打赏
  • 举报
回复
我觉得不是ado方面的问题
你把你的编译错误都列出来看看
lygfqy 2009-09-04
  • 打赏
  • 举报
回复
_RecordsetPtr rsTt;
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)
{
}
}

做个参考吧,看看有什么地方是你不一样的
simghost 2009-09-04
  • 打赏
  • 举报
回复


_RecordsetPtr m_Recordset;
_ConnectionPtr m_Connection;

试试?
蒙飞鸿 2009-09-04
  • 打赏
  • 举报
回复
是指:
_RecordPtr m_Recordset;
_ConnectionPtr m_Connection;
?
simghost 2009-09-04
  • 打赏
  • 举报
回复
你定义ADO变量的时候是如何定义的?
蒙飞鸿 2009-09-04
  • 打赏
  • 举报
回复
加了,问题依旧
simghost 2009-09-04
  • 打赏
  • 举报
回复
你建的是MFC工程吧?在CAPP类的InitInstance()函数中加入
AfxOleInit();//初始化Ole
蒙飞鸿 2009-09-04
  • 打赏
  • 举报
回复
6楼说的都实现了,msado15.dll在那个地方,也没看出有损坏的现象(不知道怎么看文件有没有损坏),5楼的说得抽象了点。。。

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧