void CODBCDemoView::DoDataExchange(CDataExchange* pDX)
{
CRecordView::DoDataExchange(pDX);
// 可以在此处插入 DDX_Field* 函数以将控件“连接”到数据库字段,例如
// DDX_FieldText(pDX, IDC_MYEDITBOX, m_pSet->m_szColumn1, m_pSet)
// DDX_FieldCheck(pDX, IDC_MYCHECKBOX, m_pSet->m_bColumn2, m_pSet);
// 有关更多信息,请参阅 MSDN 和 ODBC 示例
DDX_FieldText(pDX,IDC_SUPPLYERID,m_pSet->m_SupplierID,m_pSet);
DDX_FieldText(pDX,IDC_COMPANYNAME,m_pSet->m_CompanyName,m_pSet);
DDX_FieldText(pDX,IDC_CONTACTNAME,m_pSet->m_ContactName,m_pSet);
DDX_FieldText(pDX,IDC_CONTACTTITLE,m_pSet->m_ContactTitle,m_pSet);
DDX_FieldText(pDX,IDC_ADDRESS,m_pSet->m_Address,m_pSet);
DDX_FieldText(pDX,IDC_CITY,m_pSet->m_City,m_pSet);
DDX_FieldText(pDX,IDC_REGION,m_pSet->m_Region,m_pSet);
DDX_FieldText(pDX,IDC_POSTCODE,m_pSet->m_PostalCode,m_pSet);
DDX_FieldText(pDX,IDC_COUNTRY,m_pSet->m_Country,m_pSet);
DDX_FieldText(pDX,IDC_PHONE,m_pSet->m_Phone,m_pSet);
DDX_FieldText(pDX,IDC_FAX,m_pSet->m_Fax,m_pSet);
DDX_FieldText(pDX,IDC_HOMEPAGE,m_pSet->m_HomePage,m_pSet); DDX_Text(pDX, IDC_SUPPLYERID, m_nSupplierID);
}e:\Visual Studio Projects\ODBCDemo\ODBCDemoView.cpp(63): error C2665: “DDX_FieldText” : 所有的 10 重载都不能转换参数 3(从“CStringW”类型)
        d:\Program Files\Microsoft Visual Studio .NET\Vc7\atlmfc\include\afxdb.h(499): 可能是“void DDX_FieldText(CDataExchange *,int,BYTE &,CRecordset *)”
        d:\Program Files\Microsoft Visual Studio .NET\Vc7\atlmfc\include\afxdb.h(501): 或       “void DDX_FieldText(CDataExchange *,int,int &,CRecordset *)”
        d:\Program Files\Microsoft Visual Studio .NET\Vc7\atlmfc\include\afxdb.h(503): 或       “void DDX_FieldText(CDataExchange *,int,UINT &,CRecordset *)”
        d:\Program Files\Microsoft Visual Studio .NET\Vc7\atlmfc\include\afxdb.h(505): 或       “void DDX_FieldText(CDataExchange *,int,long &,CRecordset *)”
        d:\Program Files\Microsoft Visual Studio .NET\Vc7\atlmfc\include\afxdb.h(507): 或       “void DDX_FieldText(CDataExchange *,int,DWORD &,CRecordset *)”
        d:\Program Files\Microsoft Visual Studio .NET\Vc7\atlmfc\include\afxdb.h(509): 或       “void DDX_FieldText(CDataExchange *,int,CString &,CRecordset *)”
以上是我用ODBC做的一个数据库小程序,用的数据库是SQL Server 2000自带的Northwind中的表Supplier,我按照书上在对话框上添加EditControl 控件,并加入以上代码,编译时出错。以上有13个数据交换函数DDXFieldText但不是全部报错,像第一个就没问题,请问这是什么原因??
万分感谢!!

解决方案 »

  1.   

    你看看着样行不行:
    1。数据源的设置:在选择默认的数据库是选择的是什么?改为northwind看行不行!
    2。数据库中的数据类型和你在系统中相应定义的数据的类型不一直!
      

  2.   

    谢谢大家,问题已经解决了,是数据类型的问题,其实在CRecordSet.cpp里有这样的一段注释:
    // 以下字符串类型(如果存在)反映数据库字段(ANSI 数据类型的 CStringA 和 Unicode
    // 数据类型的 CStringW)的实际数据类型。
    //  这是为防止 ODBC 驱动程序执行可能
    // 不必要的转换。如果希望,可以将这些成员更改为
    // CString 类型,ODBC 驱动程序将执行所有必要的转换。
    // (注意:必须使用 3.5 版或更高版本的 ODBC 驱动程序
    // 以同时支持 Unicode 和这些转换)。我把原来的CStringW改成CString就没问题了。
    谢谢大家!