现在我在做一个系统,要用到ACCESS和DELPHI 
但是我在ODBC里连接了很多次,但是每次都连接不上。
希望各位大虾,能告诉我关于DELPHI 和 ACCESS怎样连接。
ACCESS2000 不是ACCESS97 好象97 的可以用BDE连接
2000就要用到ODBC

解决方案 »

  1.   

    关于ACCESS和DELPHI的连接,我个人建议还是用ADO的比较方便,关键是发布的时候只需要一个DLL就可以,完全不需要安装
      

  2.   

    建议用ADOConnection去连,在连接向导最后一个标签All的Jet OLEDB:Database Password写入密码
      

  3.   

    是你的链接字符串有问题吧!
    你可以用一个test.udl测试一下,能不能连接上access数据库!
    如果可以,那肯定是你的字符串的问题!
      

  4.   

    用adoconnection连接,在connectionstring属性中建立连接串,测试成功后,把connection属性设为true,然后添加adoquery等组件和数据库连接就可以了
      

  5.   

    adoconnection双击
    选择驱动完选择数据库文件路径
    测试成功不?
      

  6.   

    实在不行就自己写个函数实现它的注册
    函数代码如下:
    其中参数:aDSN代表ODBC中你设置的数据源的名字,aDBName就是你连接的ACCESS数据库文件的名字
    function ConfigAccessODBC(aDSN: string; aDBName: string): boolean;
    var
      reg: TRegistry;
      bData: array[0..0] of byte;
      DrvPath: string;
    begin
      reg := TRegistry.Create;
      with reg do
      begin
        RootKey := HKEY_LOCAL_MACHINE;
        if OpenKey('SOFTWARE\ODBC\ODBCINST.INI\Microsoft Access Driver (*.mdb)', false) then
        begin
          DrvPath := ReadString('Driver');
        end
        else
        begin //创建键值失败
          ShowMessage('公共信息' + ':' + chr(10) + chr(10) + '您没有正确安装驱动程序Microsoft Access Driver (*.mdb),请重新安装!');
          ConfigAccessOdbc := false;
          exit;
        end;
        Reg.CloseKey;
        //找到Software\ODBC\ODBC.INI\ODBC Data Sources
        if OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources', True) then
        begin
          WriteString(aDSN, 'Microsoft Access Driver (*.mdb)');
        end
        else
        begin //创建键值失败
          application.MessageBox('公共信息' + ':' + chr(10) + chr(10) + '配置ODBC数据源失败!', '错误信息', mb_applmodal + mb_iconerror + mb_ok + mb_defbutton1);
          ConfigAccessOdbc := false;
          exit;
        end;
        CloseKey;
       //找到或创建Software\ODBC\ODBC.INI\msac_infodb,写入DSN配置信息
        if OpenKey('Software\ODBC\ODBC.INI\' + aDSN, True) then
        begin
          WriteString('DBQ', aDBName); //数据库目录,连接您的数据库
          WriteString('Description', '系统信息数据库数据源'); //数据源描述
         //WriteString( 'Driver', 'C:\WINNT\System32\odbcjt32.dll' );
          WriteString('Driver', DrvPath); //驱动程序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
          application.MessageBox('公共信息' + ':' + chr(10) + chr(10) + '配置ODBC数据源失败!', '错误信息', mb_applmodal + mb_iconerror + mb_ok + mb_defbutton1);
          ConfigAccessOdbc := false;
          exit;
        end;
        CloseKey;
      //找到或创建Software\ODBC\ODBC.INI\msac_infodb\Engines\Jet
      //写入DSN数据库引擎配置信息
        if OpenKey('Software\ODBC\ODBC.INI\' + aDSN + '\Engines\Jet', True) then
        begin
          WriteString('ImplicitCommitSync', 'Yes');
          WriteInteger('MaxBufferSize', 512); //缓冲区大小
          WriteInteger('PageTimeout', 10); //页超时
          WriteInteger('Threads', 3); //支持的线程数目
          WriteString('UserCommitSync', 'Yes');
        end
        else //创建键值失败
        begin
          application.MessageBox('公共信息' + ':' + chr(10) + chr(10) + '配置ODBC数据源失败!', '错误信息', mb_applmodal + mb_iconerror + mb_ok + mb_defbutton1);
          ConfigAccessOdbc := false;
          exit;
        end;
        CloseKey;
        ConfigAccessOdbc := True;
        Free;
      end;
    end;
      

  7.   

    对了,不要忘记USES Registry;
      

  8.   

    odbc太繁琐,还是ado 方便快捷。强烈建议用ado.扔掉陈旧的odbc
      

  9.   

    用ADO完全可以,楼上所说的test。udl测试
    该怎么搞了,请教,我用ODBC时的用户名是admin 密码是为空
    但还是不行,至于那位老兄所说的注册,实在是太恐怖拉,
    多谢拉 各位!!!