我用的是delphi6。0自带的安装制作软件做的数据库安装程序,因为我连的是access数据库,所以就用到了ado的控件,用他的TADOConnection的Connectionstring属性连的我d盘的数据库,也就是说用到了绝对路径,这就有问题了,在我做安装程序的时候我的access数据库文件怎么打包,怎么加也不行,他总是找不到那个access数据库,难道我在安装的程序里必须指定这个数据库的安装路径不行吗?朋友们告诉我用:“ExtractFilePath(Application.ExeName) + 数据库文件名”
但我还是有些不明白ExtractFilePath(Application.ExeName) + 数据库文件名
这条指令放在那呀,我真的是从来没有用过,是放到我的应用程序的TADOConnection的Connectionstring属性里吗,还是放到别的什么地方,还有我的每一个窗体都用到了我自己硬盘里的图标,这个也需要怎么做吗?
但我还是有些不明白ExtractFilePath(Application.ExeName) + 数据库文件名
这条指令放在那呀,我真的是从来没有用过,是放到我的应用程序的TADOConnection的Connectionstring属性里吗,还是放到别的什么地方,还有我的每一个窗体都用到了我自己硬盘里的图标,这个也需要怎么做吗?
解决方案 »
- 关于动态数组的的问题
- 惠州诚聘Delphi,C#程序员-初到CSDN,顶者有分哈~
- dbgrid的列的显示问题
- 小弟刚来,分不多,请问delphi中如何知道DTS包是否执行完毕?请指点
- 我从前学VB ,现在有兴趣学DELPHI ,想交朋友,留下QQ myqq 82964787,谢谢
- 后台数据库为Paradox,前台用Dbgrid显示,怎么才能手动控制纪录在Dbgrid中显示的位置
- 如何用QuickReport生成一文本文件或TStringList报表预览?
- dxDBGrid1.SaveToXLS(savedialog1.FileName+'.xls',true);导出的数据,数字为文本类型
- 求学生信息管理系统(delphi7.0+access)毕业设计!
- 我是新手,请问怎么控制TProgressBar,用什么控制(最好有源代码)。
- 錯誤捕捉!
- ************如何隐藏鼠标***************
图标是已二进制形式存入form文件了的,跟路径无关。
替换你用的绝对的数据库文件名
在adoconnection的OnwillConnect事件中写:
var
tmpName : String;
begin
tmpName := ExtractFilePath(Application.ExeName) + '数据库文件名';
adoconnection1.connectionString := '...'+tmpName+'..';
{以上详细内容根据你的配置补充}
SysUtils, Classes, DB, ADODB, Forms, Windows;Resourcestring
strConn = 'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=%s;'+
'Mode=Share Deny None;Extended Properties="";Jet OLEDB:System '+
'database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database '+
'Password=123;Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking '+
'Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk '+
'Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create '+
'System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:'+
'Don''t Copy Locale on Compact=False;Jet OLEDB:Compact Without '+
'Replica Repair=False;Jet OLEDB:SFP=False';
strSQl = 'SELECT fName FROM Info WHERE fID = ''%s''';
type
TMData = class(TDataModule)
dbTemp: TADOConnection;
tblInfo: TADOQuery;
tblInfofId: TWideStringField;
tblInfofName: TWideStringField;
tblInfofSex: TWideStringField;
tblInfofAge: TIntegerField;
tblMark: TADOQuery;
tblMarkfID: TWideStringField;
tblMarkfChinese: TFloatField;
tblMarkfMath: TFloatField;
tblMarkfTotal: TFloatField;
tblMarkfAverage: TFloatField;
tblMarkfName: TStringField;
SearchName: TADOQuery;
allId: TADOQuery;
allIdfID: TWideStringField;
tblMarkfEnglish: TFloatField;
SearchNamefName: TWideStringField;
procedure DataModuleCreate(Sender: TObject);
procedure tblMarkCalcFields(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
procedure Dsp_Err(strErr: string);
end;var
MData: TMData;implementation{$R *.dfm}procedure TMData.DataModuleCreate(Sender: TObject);
var
strFile: string;
begin
if dbTemp.Connected then dbTemp.Connected := False;
strFile := ExtractFileDir(Application.ExeName) + '\temp.mdb';
dbTemp.ConnectionString := Format(strConn, [strFile]);
try
dbTemp.Connected := True;
except
//other code
end;
end;procedure TMData.Dsp_Err(strErr: string);
begin
Application.MessageBox(PChar(strErr),PChar(Application.Title), MB_ICONERROR);
end;procedure TMData.tblMarkCalcFields(DataSet: TDataSet);
var
strName: string;
begin
strName := '';
if SearchName.Active then SearchName.Close;
SearchName.SQL.Text := Format(strSQl,[tblMarkfID.AsString]);
try
SearchName.Open;
strName := SearchNamefName.AsString;
except end;
tblMarkfName.AsString := strName;//通过“编号”找出“姓名” tblMarkfTotal.AsFloat := tblMarkfChinese.AsFloat + tblMarkfMath.AsFloat + tblMarkfEnglish.AsFloat;
tblMarkfAverage.AsFloat := tblMarkfTotal.AsFloat / 3;
end;end.