有关installshield express紧急求救(150分)

  • 主题发起人 主题发起人 jsq
  • 开始时间 开始时间
J

jsq

Unregistered / Unconfirmed
GUEST, unregistred user!
开发完一个系统后,想制作安装程序,但总是失败,请各位大虾
指点,谢谢。系统相关情况如下:
1.数据库用access2000,位于'D:/manage/data/data.mdb';
2.前台用delphi5开发,执行程序位于'D:/manage/manage.exe';
3.通过ODBC连接,别名为manage。
小弟按照这里的有关安装讨论用installshiel express for delphi5
制作,但安装后程序无法运行。
希望各位能给出较详细的过程(特别是数据库配置),谢谢。
 
你的程序里的Table1.Tablename的路径必须设为D:/manage/data/data.mdb所
在的路径!
 
1:ODBC中数据源引擎设置正确
2: 程序中的别名设置正确
3:InstallShield中别名设置正确
 
能否详细一点?谢谢
 
InstallShield 中应该把 BDE 和 SQL Links 选上。
控制面板中要设定 ODBC DSN 。
程序中使用 TDatabase 或 TADOConnection 连接。
上面的步骤没错的话,不应该有问题。
 
我送你本 IS 的书,你看看就会知道你错在哪了, 我也认为你没有用好 IS .

要书就写信给 hbtomcat@21cn.com 来信
 
已经解决问题了。由于所用的数据库是ACCESS2000,我发现用bde无法
直接连接在BDE Administrator中建立数据库别名连接access2000的数
据库文件,所以便用ODBC进行连接,在控制面版中的ODBC数据源中建立
别名后,BDE Administrator中会直接产生相对应的数据库别名。
制作安装程序的时候,我建立了数据库别名,但在安装的时候,却发现
无法怎么办,都无法在ODBC中产生数据库别名。
所以,我便在程序中动态的生成一个ODBC数据库别名(注意,这样在制作
安装程序的时候就不用再添加alias了。
具体方法如下:
(注意:必须在uses语句中加上Registry)
procedure TFm_main.FormCreate(Sender: TObject);
var
registerTemp : TRegistry;
bData : array[ 0..0 ] of byte;
SysDir : array[0..255] of char;
begin
registerTemp := TRegistry.Create; //建立一个Registry实例
with registerTemp do
begin
RootKey:=HKEY_LOCAL_MACHINE;//设置根键值为HKEY_LOCAL_MACHINE

//找到Software/ODBC/ODBC.INI/ODBC Data Sources
if OpenKey('Software/ODBC/ODBC.INI/ODBC Data Sources',True) then
begin //注册一个DSN名称
WriteString( 'MyAccess', 'Microsoft Access Driver (*.mdb)' );
end
else
begin//创建键值失败
memo1.lines.add('增加ODBC数据源失败');
exit;
end;
CloseKey;

//找到或创建Software/ODBC/ODBC.INI/MyAccess,写入DSN配置信息
if OpenKey('Software/ODBC/ODBC.INI/MyAccess',True) then
begin
GetSystemDirectory(SysDir,sizeof(SysDir)-1);//得到系统路径
WriteString( 'DBQ',GetCurrentdir+'/DATA/mydata.mdb' );//数据库目录
WriteString( 'Description', '我的新数据源' );//数据源描述
WriteString( 'Driver', SysDir+'/odbcjt32.dll' );//驱动程序DLL文件
WriteInteger( 'DriverId', 25 );//驱动程序标识
WriteString( 'FIL', 'Ms Access;' );//Filter依据
WriteInteger( 'SafeTransaction', 0 );//支持的事务操作数目
WriteString( 'UID', '' );//用户名称
bData[0] := 0;
WriteBinaryData( 'Exclusive', bData, 1 );//非独占方式
WriteBinaryData( 'ReadOnly', bData, 1 );//非只读方式
end
else//创建键值失败
begin
exit;
end;
CloseKey;

//找到或创建Software/ODBC/ODBC.INI/MyAccess/Engines/Jet
//写入DSN数据库引擎配置信息
if OpenKey('Software/ODBC/ODBC.INI/MyAccess/Engines/Jet',True) then
begin
WriteString( 'ImplicitCommitSync', 'Yes' );
WriteInteger( 'MaxBufferSize', 512 );//缓冲区大小
WriteInteger( 'PageTimeout', 10 );//页超时
WriteInteger( 'Threads', 3 );//支持的线程数目
WriteString( 'UserCommitSync', 'Yes' );
end
else//创建键值失败
begin
exit;
end;
CloseKey;
Free;
end;
end;
end;
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
875
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部