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

  • 主题发起人 主题发起人 dodo
  • 开始时间 开始时间
procedure TForm1.Button1Click(Sender: TObject);
begin
SaveDialog1.Execute;
ADOQuery1.Active:=false;//重新关掉过
ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+extractfilepath(application.ExeName)+'userdata.mdb;Persist Security Info=False';
ADOQuery1.Active:=true;
end;
这是试过的列子已经通过,不会出现你上面的问题,在D5与WIN2000下
 
TO:黄粱一梦
我就是在onCreat中取数据库所在路径的。
TO:zswenyun
我保存EXCEL文件时的语句如下:

var c,r,i,j : integer ;
ExApp : Olevariant ;
TempFileName,ResultFileName: String ;
begin
try
ExApp:= CreateOLEObject('Excel.application') ;
except
Messagedlg('Excel没有正确安装!',mterror,[mbok],0);
exit ;
end ;
ExApp.Workbooks.add ;
ExApp.Visible := false ;
dbgrideh2.DataSource.DataSet.First;
c:=dbgrideh2.DataSource.DataSet.FieldCount ;
r:=dbgrideh2.DataSource.DataSet.RecordCount ;

for i:=0 to c-1 do
ExApp.cells(1,1+i):= dbgrideh2.DataSource.DataSet.Fields.DisplayLabel ;
for j:=1 to r do
begin
for i:=0 to c-1 do
ExApp.cells(j+1,1+i):= dbgrideh2.DataSource.DataSet.Fields.AsString ;
dbgrideh2.DataSource.DataSet.Next ;
end ;
SaveDialog.Filter:='MicroSoft Excel 工作簿|*.xls;';
SaveDialog.FileName:='水损分析报表' ;
if SaveDialog.Execute then
begin
ExApp.Activeworkbook.saveas(saveDialog.FileName) ;
ExApp.Activeworkbook.close(false) ;
ExApp.Quit ;
ExApp:=Unassigned ;
end;
end;
 
TO:zswenyun
你的方法针对于当前的ADOQuery有效,但其它Form的问题依旧!我试过了!
 
我在其他用到此ADOQuery的另外窗口地方加入
SaveDialog2.Execute;
mainfrm.ADOQuery1.Active:=false;//重新关掉过
mainfrm.ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+extractfilepath(application.ExeName)+'userdata.mdb;Persist Security Info=False';
mainfrm.ADOQuery1.Active:=true;
测试可以通过呀,没问题呀
 
TO:zswenyun
还是不行,我上面那一段是保存EXCEL文件的完整代码,你试一看看。
我曾将所有ADOQuery的路径都设成物理的,仍然不行,真头大!
 
我试了一下可以呀
 
如下程序:(有点乱,不过很简单的,你自己稍微看一下把)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Db, Grids, DBGrids, ADODB,ComObj;
type
TForm1 = class(TForm)
ADOQuery1: TADOQuery;
DBGrid1: TDBGrid;
SaveDialog1: TSaveDialog;
DataSource1: TDataSource;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
SaveDialog1.Execute;
ADOQuery1.Active:=false;
ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+extractfilepath(application.ExeName)+'userdata.mdb;Persist Security Info=False';
ADOQuery1.Active:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form2.show;
end;
procedure TForm1.Button3Click(Sender: TObject);
var c,r,i,j : integer ;
ExApp : Olevariant ;
TempFileName,ResultFileName: String ;
begin
try
ExApp:= CreateOLEObject('Excel.application') ;
except
Messagedlg('Excel没有正确安装!',mterror,[mbok],0);
exit ;
end ;
ExApp.Workbooks.add ;
ExApp.Visible := false ;
DBGrid1.DataSource.DataSet.First;
c:=DBGrid1.DataSource.DataSet.FieldCount ;
r:=DBGrid1.DataSource.DataSet.RecordCount ;
for i:=0 to c-1 do
ExApp.cells(1,1+i):= DBGrid1.DataSource.DataSet.Fields.DisplayLabel ;
for j:=1 to r do
begin
for i:=0 to c-1 do
ExApp.cells(j+1,1+i):= DBGrid1.DataSource.DataSet.Fields.AsString ;
DBGrid1.DataSource.DataSet.Next ;
end ;
SaveDialog1.Filter:='MicroSoft Excel 工作簿|*.xls;';
SaveDialog1.FileName:='水损分析报表' ;
if SaveDialog1.Execute then
begin
ExApp.Activeworkbook.saveas(saveDialog1.FileName) ;
ExApp.Activeworkbook.close(false) ;
ExApp.Quit ;
ExApp:=Unassigned ;
end;
end;

end.


unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,unit1,
StdCtrls, Grids, DBGrids, Db, DBTables,ComObj;
type
TForm2 = class(TForm)
Button1: TButton;
SaveDialog1: TSaveDialog;
Button3: TButton;
procedure Button1Click(Sender: TObject);

procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.DFM}

procedure TForm2.Button1Click(Sender: TObject);
begin
SaveDialog1.Execute;
form1.ADOQuery1.Active:=false;
form1.ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+extractfilepath(application.ExeName)+'userdata.mdb;Persist Security Info=False';
form1.ADOQuery1.Active:=true;
end;



procedure TForm2.Button3Click(Sender: TObject);
var c,r,i,j : integer ;
ExApp : Olevariant ;
TempFileName,ResultFileName: String ;
begin
try
ExApp:= CreateOLEObject('Excel.application') ;
except
Messagedlg('Excel没有正确安装!',mterror,[mbok],0);
exit ;
end ;
ExApp.Workbooks.add ;
ExApp.Visible := false ;
form1.DBGrid1.DataSource.DataSet.First;
c:=form1.DBGrid1.DataSource.DataSet.FieldCount ;
r:=form1.DBGrid1.DataSource.DataSet.RecordCount ;
for i:=0 to c-1 do
ExApp.cells(1,1+i):= form1.DBGrid1.DataSource.DataSet.Fields.DisplayLabel ;
for j:=1 to r do
begin
for i:=0 to c-1 do
ExApp.cells(j+1,1+i):= form1.DBGrid1.DataSource.DataSet.Fields.AsString ;
form1.DBGrid1.DataSource.DataSet.Next ;
end ;
form1.SaveDialog1.Filter:='MicroSoft Excel 工作簿|*.xls;';
form1.SaveDialog1.FileName:='水损分析报表' ;
if form1.SaveDialog1.Execute then
begin
ExApp.Activeworkbook.saveas(form1.saveDialog1.FileName) ;
ExApp.Activeworkbook.close(false) ;
ExApp.Quit ;
ExApp:=Unassigned ;
end;
end;
end.

 
谢谢大家了,问题找出来了,是我不小心将saveDialog.Options的OfNoChangeDir设成了False.
分数不多,请见谅!
 
多人接受答案了。
 

Similar threads

后退
顶部