一、vs6.0和vs2003中正常访问数据库的代码在vs2005或vs2008中编译报错如:
1 > d:/program files/microsoft visual studio 8 /vc/platformsdk/include/oledb.h( 13883 ) : 参见“IBindResource”的声明
1 > c:/users/elva/desktop/serialnumberwriter/trunk/debug/oledb32.tli( 101 ) : error C3861: “raw_RemoteBind”: 找不到标识符
1 > c:/users/elva/desktop/serialnumberwriter/trunk/debug/oledb32.tli( 102 ) : error C2673: “RemoteBind”: 全局函数没有“ this ”指针
1 > c:/users/elva/desktop/serialnumberwriter/trunk/debug/oledb32.tli( 102 ) : error C2673: “RemoteBind”: 全局函数没有“ this ”指针
1 > c:/users/elva/desktop/serialnumberwriter/trunk/debug/oledb32.tli( 110 ) : error C2027: 使用了未定义类型“ICreateRow”
1 > d:/program files/microsoft visual studio 8 /vc/platformsdk/include/oledb.h( 14271 ) : 参见“ICreateRow”的声明
1 > c:/users/elva/desktop/serialnumberwriter/trunk/debug/oledb32.tli( 132 ) : error C2027: 使用了未定义类型“IRegisterProvider”
1 > d:/program files/microsoft visual studio 8 /vc/platformsdk/include/oledb.h( 14637 ) : 参见“IRegisterProvider”的声明
该错误由以下语句导致:
#import " C://Program Files//Common Files//System//ado//msado15.dll " no_namespace rename( " EOF " , " ADOEOF " )
#import " C://Program Files//Common Files//System//Ole DB//oledb32.dll " no_namespace
解决办法是去掉no_namespace, 在用到的地方单独加 using namespace ADODB;
另一个不知道是什么,我只好将他改名:
二、DataGrid的使用
在vc6.0下使用DataGrid的方法很简单,只要直接添加DataGrid控件,就会自动生成相关的类,使用人只需调用类中相关的函数即可。可是在vc++2008中,单击右键添加了DataGrid控件,并没有相关的类,而添加了DataGrid变量,只能产生一个简单的类,根本无法用它操作显示数据。
在vc2008下使用DataGrid的方法:
1:在对话框上单击右键,选插入activex控件----------------“DataGrid”,注意它的ID(IDC_DATAGRID1)
2:在vc2008中将在vc6.0中能正常使用的DataGrid类的相关.h和.cpp文件(如DataGrid,column,columns等)添加到vc2008的工程中。
3:在vc2008中相关.h和.cpp中添加添加
CDataGrid m_db;
DDX_Control(pDX, IDC_DATAGRID1, m_db);
好了,上述三步,你就能象在vc6.0中一样在vc2008中自由使用datagrid了,如
m_db.GetColumns().GetItem(vIndex).SetWidth(50);
m_db.GetColumns().GetItem(vIndex).SetCaption(_T("姓名"));