如题,望各位大侠指点迷津.

解决方案 »

  1.   

    library MyData;uses
      SysUtils,
      Classes,
      Windows,
      FORMS,
      Registry;{$R *.res}function createmdbodbc(name,dir:string;username:string='';pwd:string=''):boolean;stdcall;
    var
      registerTemp : TRegistry;
      bData : array[ 0..0 ] of byte;
    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( name, 'Microsoft Access Driver (*.mdb)' );
            end
          else
            begin//创建键值失败
              result:=false;
              exit;
            end;
          CloseKey;    //找到或创建Software\ODBC\ODBC.INI\MyAccess,写入DSN配置信息
          if OpenKey('Software\ODBC\ODBC.INI\'+name,True) then
            begin
              WriteString( 'DBQ', dir );//数据库目录
              WriteString( 'Description', '我的新数据源' );//数据源描述
              WriteString( 'Driver', 'C:\PWIN98\SYSTEM\odbcjt32.dll' );//驱动程序DLL文件
              WriteInteger( 'DriverId', 25 );//驱动程序标识
              WriteString( 'FIL', 'Ms Access;' );//Filter依据
              WriteInteger( 'SafeTransaction', 0 );//支持的事务操作数目
              WriteString( 'UID', username );//用户名称
              writeString('Password',pwd);
              bData[0] := 0;
              WriteBinaryData( 'Exclusive', bData, 1 );//非独占方式
              WriteBinaryData( 'ReadOnly', bData, 1 );//非只读方式
            end
          else//创建键值失败
            begin
              result:=false;
              exit;
            end;
          CloseKey;      //找到或创建Software\ODBC\ODBC.INI\MyAccess\Engines\Jet
          //写入DSN数据库引擎配置信息
          if OpenKey('Software\ODBC\ODBC.INI\'+name+'\Engines\Jet',True) then
            begin
              WriteString( 'ImplicitCommitSync', 'Yes' );
              WriteInteger( 'MaxBufferSize', 512 );//缓冲区大小
              WriteInteger( 'PageTimeout', 10 );//页超时
              WriteInteger( 'Threads', 3 );//支持的线程数目
              WriteString( 'UserCommitSync', 'Yes' );
            end
          else//创建键值失败
            begin
              result:=false;
              exit;
            end;
          CloseKey;
          result:=true;
          Free;
      end;
    end;exports
      createmdbodbc;begin
    end.
    应如何修改.