程序采用ADO,数据库用ODBC连接,请问用IS Express Delphi 4.0 Beta如何制作安装包,安装后不用再配置ODBC。

解决方案 »

  1.   

    将注册表信息导入进去就行,你在ODBC里建了一个数据源,在注册表里公有相应的数据,把这些注册信息导入到安装程序里就行了
      

  2.   

    帮你顶一下,我搞了很长时间也没有解决这个问题,后来我都是用ADO连接的
      

  3.   

    wcq8303(wcq)说的可能是的,我在注册表里是确找到了数据源的信息,不过他的方法我没试过
      

  4.   

    用Delphi编写的数据库程序在发布时需要同时发布BDE(Borland Database Engine),但BDE占用空间较大(不同版本大小不一,最新的Delphi5有17M多),远比一般的程序本身要大。但实际上,有些文件用不上的,所以我们可以在发布时用Delphi附带的InstallShield制作安装程序来定制BDE驱动,这样可以精简我们的数据库应用程序。实现与应用参考Bde32.HLP中"Introduction to Borland Database Engine"下的"Core BDE Files",可以得知BDE的关键文件及其作用,可以以此作为依据来精简BDE驱动程序。下面是各个文件的作用:一、不可缺少的文件Blw32.dll:语言驱动函数库。Idapi32.dll:BDE基本函数库。Fareast.btl、Usa.btl:远东语言及美国语言驱动程序,对中文软件不可缺少。Idr20009.dll:错误信息库。二、数据库驱动程序(根据需要选择一个或多个)Idasci32.dll:Ascii文本数据库驱动程序函数库,如果不用Ascii文本数据库,可以不要。Iddao32.dll:Access数据库驱动程序函数库,如果不用Access数据库,可以不要。Iddbas32.dll:dBase数据库驱动程序函数库,如果不用dBase数据库,可以不要。Idodbc32.dll:ODBC数据库驱动程序函数库,如果不用ODBC数据库,可以不要。Idpdx32.dll:Paradox数据库驱动程序函数库,如果不用Paradox数据库,可以不要。三、其它驱动程序和配置文件(根据需要选择一个或多个)Idbat32.dll:批操作驱动程序函数库,如果不用TBatchMove控件或DbiBatchMove类函数,可以不要。Iddr32.dll:Data Repository驱动程序函数库,如果不用Data Repository功能,可以不要。Idprov32.dll:BDE DataSet provider驱动程序函数库,如果不用TProvider控件,可以不要。Idqbe32.dll:QBE驱动程序函数库,如果不用Query By Example,可以不要。Idsql32.dll:SQL查询驱动程序函数库,如果不用TQuery进行查询,可以不要。Idapi32.cfg:BDE配置文件,如果程序中没有特殊要求,可以不要。也可以在BDE管理器中设置正确后再分发。四、其它文件(一般不用)其它的*.BTL:其它国家和地区的语言驱动程序,可以不要。BDE32.HLP、BDE32.CNT:BDE帮助文件,可以不要。BdeAdmin.exe、BdeAdmin.HLP、BdeAdmin.CNT:BDE管理器及帮助文件,如果不会发生要求软件用户自己配置BDE的情况时,可以不要。DataBump.EXE、DataBump.HLP、DataBump.CNT:数据库数据转移工具及帮助文件,可以不要。Localsql.HLP、Localsql.CNT:SQL查询语句帮助文件,可以不要。Sqllnk32.HLP、Sqllnk32.CNT:SQL连接帮助文件,可以不要。在根据需要选择文件后,还要写注册表文件。可以手工设置,但最好在程序中设置,需要设置的注册表键值有(在调用数据库操作前需要有正确的键值存在,各对应键值在Win9x/NT/Win2000下均相同):数据驱动程序所在目录的设置:HKEY_LOCAL_MACHINEEngine(字符串值)语言驱动程序所在目录的设置:HKEY_LOCAL_MACHINE(字符串值)语言驱动程序文件名:HKEY_LOCAL_MACHINE Software_LIB#(字符串值)  其中#为编号,按顺序为0、1、2、3......如:HKEY_LOCAL_MACHINE_LIB0="fareasst.btl"  HKEY_LOCAL_MACHINE_LIB1="usa.btl"做完这些就足够了,按此办法即可有效减少BDE驱动程序的大小,例如只用TTable控件操作Paradox数据库,则只要Idapi32.dll、Blw32.dll、Idr20009.dll、Fareast.btl、Usa.btl、Idpdx32.dll六个文件即可。这些文件可放在任何一个目录,只要在注册表指明即可。BDE由17.4M减到1.48M,压缩一下就只有几百K了,这使程序大为减小。下面我们就以用InstallShield来制作一个Paradox数据库应用系统的安装程序为例:1.启动程序设置有关文件目录路径,进入Setup Checklist;2.在Set the Visual Design中设置程序名、程序目录、安装程序主窗口等;3.在Specify Components and Files中设置Groups and Files项,在Program Files中加入用户的所有程序文件和数据库表文件,以及下列文件:Idbat32.dll、Usa.btl、Idapi.cfg、Charset.cvb、Bantam.dll、BLW32.dll、Idapi32.dll、Fareast.btl、Idpdx32.dll、Idr20009.dll、Idsql32.dll(以上文件必须含目录路径);4.在Dialog Boxes中设置所需安装对话框;5.在Make Registry Changes中设置Keys项,在HKEY_LOCAL_MACHINE中加入software和softwareengine两项,并且在blw32值中加入"Blapipath '以上文件目录'"、"LOCALE_LIB0 '以上文件目录'.bll"和"LOCALE_LIB1 '以上文件目录'.bll",在database engine值中加入"Dllpath '以上文件目录'"、"Configfile01 '以上文件目录'.cfg";6.在Specify Folder and Icons中根据实际要求设置有关项目;7.在Run Disk Builder中设置安装盘的有关信息;8.最后进行Test the Installation和Create Distribution Media即可完成安装程序的制作。
      

  5.   

    delphi程序实现建立odbc
    procedure TForm1.Button1Click(Sender: TObject);
    var
        TempReg:TRegistry;
        bytearray : array[ 0..0 ] of byte;
    begin
       TempReg := TRegistry.Create;
        with TempReg do
        begin
            RootKey:=HKEY_LOCAL_MACHINE;
            if OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',True) then
               begin
               WriteString( 'myodbc', 'Microsoft Access Driver (*.mdb)' ); 
               end 
            else 
               begin
               ShowMessage('增加ODBC数据源失败');
               exit;
               end; 
           closeKey;  begin
        if OpenKey('Software\ODBC\ODBC.INI\myodbc',True) then
          begin
            WriteString( 'DBQ', 'C:\test.mdb' );
            WriteString( 'Description','新数据源' );
            WriteString( 'Driver', 'C:\WINDOWS\SYSTEM\odbcjt32.dll' );
            WriteInteger( 'DriverId', 25 );
            WriteString( 'FIL', 'Ms Access;' );
            WriteInteger( 'SafeTransaction', 0 );
            WriteString( 'UID', 'tom' );
            bytearray [0] := 0;
            WriteBinaryData( 'Exclusive', bytearray, 1 );
            WriteBinaryData( 'ReadOnly', bytearray, 1 );
          end
        else
          begin
           showmessage('增加ODBC数据源失败');
           exit;
          end;
       CloseKey;
     end;  if OpenKey('Software\ODBC\ODBC.INI\myaccess97\Engines\Jet',True)  then
         begin
           WriteString( 'ImplicitCommitSync', 'Yes' );
           WriteInteger( 'MaxBufferSize', 512 );
           WriteInteger( 'PageTimeout', 20 );
           WriteInteger( 'Threads', 5 );
           WriteString( 'UserCommitSync', 'Yes' );
         end
      else
          begin
           showmessage('增加ODBC数据源失败');
           exit;
         end;
      CloseKey;
      showmessage('增加新ODBC数据源成功');
    end;
    end;