创建ACCESS文件调用OLEFUNCTION时产生错误,在线求助
我在CB练创建ACCESS文件,
采用的下列代码,我专门先做个小程序测试,一切正常。
然后在加载到1个软件中,
传入的变量MDB_PathName也是正确的。
但在执行
mdb.OleFunction("Create",DataSource);
出错!
Project app.exe raised exception class EAccessViolation with message
'Access violation at address 0055da57 . Read of address 00000800'
bool CreateAccess(AnsiString MDB_PathName){ /* 创建指定名称的mdb数据库,成功返回true MDB_PathName为mdb文件所在的路径和文件名 由于要使用Variant型变量,因此要#include <ComObj.hpp> */ bool seccess = false; if(FileExists(MDB_PathName))//如果MDB文件已存在,则删除,否则会出错 { if(MessageBox(0, AnsiString(MDB_PathName+"已存在,确定删除文件继续,取消退出").c_str() ,"删除已存在文件?" , MB_OKCANCEL + MB_ICONQUESTION + MB_DEFBUTTON2) == IDCANCEL) return false; DeleteFile(MDB_PathName); } WideString DataSource="Provider=Microsoft.Jet.OLEDB.4.0;Data source=" + MDB_PathName; try { Variant mdb = CreateOleObject("ADOX.Catalog"); try { mdb.OleFunction("Create",DataSource); seccess = true; } __finally { mdb = Unassigned; } } catch(...) { ShowMessage("MDB创建失败!"); //ShowError("MDB创建失败!"); } return seccess;}
mdb.OleFunction("Create",DataSource);
[解决办法]
加头文件#include <utilcls.h>
[解决办法]