以前在DLL里加都没问题,现在是完全考过来的竟然说不支持此接口?为什么?哪里出错了.
#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")#include <stdio.h> ::CoInitialize(NULL);
CString m_strSource;
HRESULT hr=NULL;
_bstr_t user("");
_bstr_t pwd("");
query = _T("SELECT * FROM Sendtable");
m_strSource=_T("Provider=SQLOLEDB.1;Data Source=");
m_strSource+=m_hostname;
m_strSource+=_T(";Initial Catalog=DataDB;User ID=");
m_strSource+=m_username;
m_strSource+=_T("; PWD=");
m_strSource+=m_password;
source=m_strSource;
hr=m_connection.CreateInstance(__uuidof(Connection));
try{
if(SUCCEEDED(hr))
hr=m_connection->Open(source, user,pwd, adModeUnknown);
if(SUCCEEDED(hr))
hr = m_recordsetsend.CreateInstance(__uuidof(Recordset));
if(SUCCEEDED(hr))
hr = m_recordsetarrive.CreateInstance(__uuidof(Recordset));
// if(SUCCEEDED(hr))
// m_recordsetsend->Open(query, source, adOpenDynamic, adLockOptimistic, adCmdText);
// if(SUCCEEDED(hr))
// hr = m_timers.CreateInstance(__uuidof(Recordset));
if(SUCCEEDED(hr))
m_fConnected = TRUE;
else 
m_fConnected = FALSE;
}
catch (_com_error e)
{
AfxMessageBox(e.ErrorMessage()); 
m_fConnected = FALSE;
}
和做DLL是一模一样的.谁能告诉我呀

解决方案 »

  1.   

    你的hostname打的是什么?是ip地址还是管道??
    把sqlserver的客户端的通用里的tcp/ip,管道一起打开
    也许就可以了
      

  2.   

    在控制面板中查查看你的ODBC数据源的版本吧,我前不久就遇到这种问题,结果是版本太低了!
    因为ADO最终还是用ODBC的源,所以,版本可能会影响.
    我上次是在高版本的ODBC源下编译,在低的下面运行就出现了不支持的接口
      

  3.   

    各位老大还是不行呀,前段时间做了一个DLL的东西,里面就是用了上面的代码,而且是在同一台机器上做的.
    我又做了个实验的,同样是上面的代码,编译能过(一样是对话框),程序加到了内存了但是不启动对话框出来.(能明白我的意思吗?)
    我是这么做的,在STDAFX.H里面加#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
    在对话框DLG.CPP里面加
    #include "icrsint.h"
    #include <stdio.h>
    最后在OnInitDialog()里加上面那段最长的代码可是就是不行,
    老大,哪里还没做对??