uses dao97;
button1click
var
  Engine: DBEngine;
begin
  Engine := CoDBEngine.Create;
  Engine.ReisterDatabase('ODBC name', '驱动程序的名称', True, '相应驱动配置信息'); 
end;
忘了许多参数,你试试吧要不然玩注册表了.

解决方案 »

  1.   

    在HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
    RegisterDatabase
    Param1:ODBC的名称
    param2:哪个驱动程序('SQL Server', 'Microsft Access Driver (*.mdb)'),注意,空格不能多,不能少不然找不出错误...
    Param3:是否弹出配置ODBC的对话框
    Param4:信息,从注册表参考一个吧,记不了那么多,
    一个SQL ODBC('database=master;server=192.168.0.1;description=test')
      

  2.   

    copy_paste(木石三),具体一点把,我真的要的很急的啊
    各位请帮帮忙呀!
      

  3.   

    copy_paste(木石三) ,谢谢你,各位请继续关注。
      

  4.   

    这是注册一个Access的
    procedure RegisterODBC;
    var
      Engine: DBEngine;
    begin
      Engine := CoDBEngine.Create;
      Engine.RegisterDatabase('test', 'Microsoft Access Driver (*.mdb)', True, 'dbq=c:\test.mdb;uid=admin;pwd=mypassword');
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      RegisterODBC;
    end;
      

  5.   

    copy_paste(木石三) ,我要SQL Server的并且是在网络环境下的客户端
    一定要帮我一定给你分.
    还有能给出你的icq 吗?
    DBEngine的头文件是什么呢,也就是要在uses里加什么文件?
      

  6.   

    添加ODBC System DSN
    下面这个例子显示了如何加载实现了ODBC 管理功能的DLL(odbccp32.dll)来创建一个Access MDB文件和指向它的ODBC DSN。注意:这里假设DLL和MDB都在当前目录下。
    同时,"CREATE_DB"的调用是Access(MS Jet引擎)的专有调用,类似的还有COMPACT_DB和REPAIR_DB等。const
      ODBC_ADD_DSN = 1; // 添加数据源
      ODBC_CONFIG_DSN = 2; // 配置数据源
      ODBC_REMOVE_DSN = 3; // 删除数据源
      ODBC_ADD_SYS_DSN = 4; // 添加系统DSN
      ODBC_CONFIG_SYS_DSN = 5; // 配置系统DSN
      ODBC_REMOVE_SYS_DSN = 6; // 删除系统DSNtype
      TSQLConfigDataSource = function( hwndParent: HWND;
      fRequest: WORD;
      lpszDriver: LPCSTR;
      lpszAttributes: LPCSTR ) : BOOL; stdcall;
    procedure Form1.FormCreate(Sender: TObject);
    var
      pFn: TSQLConfigDataSource;
      hLib: LongWord;
      strDriver: string;
      strHome: string;
      strAttr: string;
      strFile: string;
      fResult: BOOL;
      ModName: array[0..MAX_PATH] of Char;
      srInfo : TSearchRec;
    begin
      Windows.GetModuleFileName( HInstance, ModName, SizeOf(ModName) );
      strHome := ModName;
      while ( strHome[length(strHome)] <> '\' ) do
      Delete( strHome, length(strHome), 1 );
      strFile := strHome + 'TestData.MDB'; // 检查Access权限(Axes = Access)
      hLib := LoadLibrary( 'ODBCCP32' );
      if( hLib <> NULL ) then
      begin
      @pFn := GetProcAddress( hLib, 'SQLConfigDataSource' );
      if( @pFn <> nil ) then
      begin
      // 强迫重建DSN
      strDriver := 'Microsoft Access Driver (*.mdb)';
      strAttr := Format( 'DSN=TestDSN'+#0+
      'DBQ=%s'+#0+
      'Exclusive=1'+#0+
      'Description=Test Data'+#0+#0,
      [strFile] );
      fResult := pFn( 0, ODBC_ADD_SYS_DSN, @strDriver[1], @strAttr[1] );
      if( fResult = false ) then ShowMessage( '创建DSN (Datasource)失败!' );  // 检测/创建同DSN关联的 MDB 文件
      if( FindFirst( strFile, 0, srInfo ) <> 0 ) then
      begin
      strDriver := 'Microsoft Access Driver (*.mdb)';
      strAttr := Format( 'DSN=TestDSN'+#0+
      'DBQ=%s'+#0+
      'Exclusive=1'+#0+
      'Description=Test Data'+#0+
      'CREATE_DB="%s"'#0+#0,
      [strFile,strFile] );
      fResult := pFn( 0, ODBC_ADD_SYS_DSN, @strDriver[1], @strAttr[1] );
      if( fResult = false ) then ShowMessage( '创建MDB文件失败!' );
      end;
      FindClose( srInfo );  end;  FreeLibrary( hLib );
      end
      else
      begin
      ShowMessage( '无法加载ODBCCP32.DLL' );
      end;
    end;
    --------------------------------------------------------------------------------
     
    以下是在程序中动态创建ODBC的DSN数据源代码:
    procedure TCreateODBCDSNfrm.CreateDSNBtnClick(Sender: TObject);
    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( '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
      WriteString( 'DBQ', 'C:\inetpub\wwwroot
      \test.mdb' );//数据库目录,连接您的数据库
      WriteString( 'Description',
      '我的新数据源' );//数据源描述
      WriteString( 'Driver', 'C:\PWIN98\SYSTEM  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
      memo1.lines.add('增加ODBC数据源失败');
      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
      memo1.lines.add('增加ODBC数据源失败');
      exit;
      end;
      CloseKey;
      memo1.lines.add('增加新ODBC数据源成功');
      Free;
      end;
    end;从中您应该可以学会如何更改需要的数据库 
      

  7.   

    今天是忙里合偷闲,做那死报表啊,55555~~~~~,我已经做了一个星期了,还是没完没了的.
    DBEngine是Dao97.dcu
    uses dao97;
    SQLServer还在试,
    为什么要注册,我用BDE,ADO,从来不用ODBC
      

  8.   

    HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
    写注册表吧:
     with TRegistry.Create do
     begin
       RootKey := HKEY_CURRENT_USER;
       if OpenKey('\Software\ODBC\ODBC.INI', False) then
       begin  
         写入四个key Vaule(:string)
         "Database",连接哪个数据库
         "Driver"(比较麻烦找到系统目录中的sqlsrv32.dll) 
         "lastUser"(SQL 的用户名)
         "Server"(SQL Server服务器名称)
       end;
       CloseKey;
       Free;
     end;要走了,你试试吧,
      

  9.   

    1。sqlserver oldb provider 在安装了DELPHI 和SQLSERVER之后便会有;
    2、客户端 不许要安装SQLSERVER
      只需要找到以下4个文件,将他复制到客户端机器的SYSTEM目录下,在修改注册表即可:
      在你的Windows\System下面找到以下几个文件(当然你的机器必须已经安装SQLServer):    Dbmssocn.dll    TCP/IP 支持文件 
        Dbmsspxn.dll    IPX 支持文件 
        Dbnmpntw.dll    命名管道支持文件 
        Ntwdblib.dll    SQLServer核心文件(这个文件最重要) 
    然后在注册表中添见以下项:
            
      HKEY_LOCAL_MACHINE------>SOFTWARE-------->MICROSOFT------>MSSQLSERVER--->
    CLIENT----->CONNECTTO
        添加以下项:
        SERVERNAME    ‘DBMSSOCN,192。168。0。2,1433’  
        ^^你要连接的服务器名称            ^^该服务器的IP地址
      (你可以从你的服务器注册表中导出该分支,再导入到客户端注册表,然后添加以上项;)
    如此,大公告成  
      

  10.   

    见http://www.csdn.net/develop/read_article.asp?id=9315
      

  11.   

      with TRegistry.Create do
      begin
          RootKey:=HKEY_LOCAL_MACHINE;
          OpenKey('\Software\ODBC\ODBC.INI\ODBC Data Sources',False);
          WriteString('aliasename','SQL Server');
          OpenKey('\Software\ODBC\ODBC.INI\aliasename',True);
          WriteString('Driver','C:\WINDOWS\SYSTEM\SQLSRV32.dll');
          WriteString('LastUser','aliasename');
          WriteString('Server','202.109.10.92');
          free
        end
      

  12.   

    zhujunfeng(ericss) ,你运行成功没有啊?如果成功,一定给你加分
      

  13.   

    uses Winsock
    function GetLocalAddress: string;
    var
    wVersionRequested : WORD;
    wsaData : TWSAData;
    p : PHostEnt;
    s : array[0..128] of char;
    p2 : pchar;
    begin
      {创建 WinSock}
      result:='';
      wVersionRequested := MAKEWORD(1, 1);
      WSAStartup(wVersionRequested, wsaData);  {得到计算机名称}
      GetHostName(@s,128);
      p:=GetHostByName(@s);  {得到机器IP地址}
      p2 := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
      result:=p2;
      WSACleanup;
    end;
      

  14.   

    //读写文件
    function TBkg_NewActFrm.ProcessCreateDBFile (const FileName:string):string;
    var
      szPath,szTmpFile1,szTmpFile2: string;
      FTmp1,FTmp2:TextFile;
      szTemp:string;
    begin
      szPath:=ExtractFilePath(Application.EXEName);
      szTmpFile1:=szPath+FileName;
      szTmpFile2:=szPath+'tmp.sql';
      AssignFile(FTmp1,szTmpFile1);
      AssignFile(FTmp2,szTmpFile2);
      Reset(FTmp1);
      ReWrite(FTmp2);
      while not EOF(FTmp1) do
      begin
         Readln(FTmp1,szTemp);
         if Pos('setuser',lowercase(szTemp))>0 then continue;
         if Trim(szTemp)<>'' then szTemp:=ReplaceDataType(szTemp);
         writeln(FTmp2,szTemp);
      end;
      CloseFile(FTmp1);
      CloseFile(FTmp2); 
      Result:='tmp.sql';
    end;