打开ACCESS数据库问题,可能很简单!在线等待! (100分)

  • 主题发起人 主题发起人 dodo
  • 开始时间 开始时间
D

dodo

Unregistered / Unconfirmed
GUEST, unregistred user!
  我用ADOConnection--Microsoft Jet 4.0 OLE DB Provider不通过ODBC直接连接使用
ACCESS数据库,数据库的路径使用相对路径,一般情况下使用还很正常,但当我用
SaveDialog.Execute将ADOQuery的查询结果保存为EXCEL文件后,问题就来了:
  由于我在保存EXCEL文件时要求文件名、路径可选,所以采用对话框方式,但在我保存
文件完毕后,再使用ADOQuery时,ADOConnection就将数据库连接位置错误地指向了我保存
EXCEL文件的当前文件夹下(即SaveDialog的默认目录),从而使程序出错跳出。
  这种问题不知我描述的是否清楚?那么怎样处理呢?
 
連接中要使用绝对路径!
 
你使用绝对路径连接ACCESS即可(设计时),但你可能在发布程序到客户机时会遇到找不着数据库的问题,
假如你的目录结构如下:
-根目录
--EXE程序
--DATA目录(存放数据库)
那你可以在FORM的CReate事件码里这样写,首先取得当前执行文件的路径,然后 + 'Data/myaccess.mdb',
把这个字串代入ADO的连接字串,然后再ADOConnection.Connected := True;
 
只提供思路,
你用两个ADOQuery第一个ADOQuery查询出来后把查询结果用BATCHMOVE传给第二个ADOQuery
然后用第二个ADOQuery保存EXCEL文件。(不过我没试过)
当然最好的办法应该是你自己在程序中控制它的连接路径(用绝对路径)
其实主要看你的保存EXCEL文件中有没有修改ADOQuery的connectstring属性




 
》来自:ZZHI, 时间:2002-6-26 17:57:00, ID:1183061
》連接中要使用绝对路径!
就是,使用绝对路径,但是这个路径是使用你的程序判断拼接出来的。
 
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+mainform.GetExePath+'data/data.mdb;';
ADOConnection1.Connected:=true;
其中mainform.GetExePath是指主Form上的一个查找程序所在路径的函数,
ExtractFilePath(Application.EXEName) 也可以达到同样功能。
但我的程序还是出错,第一行语句有错误吧,应该怎么写呀?
 
adoconnection1.ConnectionString :='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source='+extractfilepath(application.ExeName)+'your.mdb;';
 
to: mlzhou
这样还不行!
to:jobsxy
能提供例句吗?
 
不行???
写出用我的方法时,你的语句
 
to:mlzhou
我在onCreate中加入:
adoconnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;
   Data Source='+extractfilepath(application.ExeName)+'/data/liquid.mdb;';
ADOConnection1.Connected:=true;
显示错误信息如下:
对象打开时,操作不被允许!
 
你的mainform.GetExePath是怎么写的,
function GetExePath():String
begin
Result:=ExtractFilePath(Application.Exename);
end;
这样写就不会有问题了。
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+mainform.GetExePath+'data/data.mdb;';
ADOConnection1.Connected:=true;

 
to:bigroute
按你的方法做了,依然是这样的错误:
对象打开时,操作不被允许!
 
savedialog控件中好像可以设置其中的一个属性,让它在
选择后不至于改变原始路径的。
 
to:yanghaijun
哪一个?
 
》》按你的方法做了,依然是这样的错误:
》》对象打开时,操作不被允许!
很可能是由于你在设计阶段的ADOConnection1.Connected:=true了
因为默认的方式是独占方式,所以你在执行程序前要在设计阶段
将ADOConnection1.Connected:=FALSE;
试试看
 
》》按你的方法做了,依然是这样的错误:
》》对象打开时,操作不被允许!
很可能是由于你在设计阶段的ADOConnection1.Connected:=true了
因为默认的方式是独占方式,所以你在执行程序前要在设计阶段
将ADOConnection1.Connected:=FALSE;
试试看
 
还不行,虽然连接正常了,但数据库连接位置错误依然是SaveDialog的默认目录,为什么?
我曾改成过物理位置,问题依然!
 
你把保存为EXCEL文件时的语句写出来大家看看
 
我认为,你最好当程序一开始运行,就取你数据库所在的路径,
放到一变量中,以后读取路径的时候,就读变量的。这样问题就解决了!
 

Similar threads

后退
顶部