首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

创建ACCESS文件调用OLEFUNCTION时产生异常,在线

2012-04-21 
创建ACCESS文件调用OLEFUNCTION时产生错误,在线求助我在CB练创建ACCESS文件,采用的下列代码,我专门先做个

创建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'

C/C++ code
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;}


[解决办法]
C/C++ code
mdb.OleFunction("Create",DataSource);
[解决办法]
加头文件#include <utilcls.h>
[解决办法]
探讨
引用:
ACCESS可以用ADO直接访问,没必要用OLE


如何用ADO创建ACCESS文件及表?

[解决办法]
这个问题是你的OLE操作与你程序中使用了别的ACTIVEx(如OCX)有关。你把使用的ACTIVEX删掉,然后重新BUILD,应该就不报错了。
[解决办法]
是否应该
CreateOleObject("JRO.JetEngine")
试试看

热点排行