我通过动态的连接ADO来进行对表的操作,该表是.DBF的格式,其中表的路径是动态的,
在有装Delphi的的状态下可以正常的运行,但该程序在离开Delphi的状态下,运行的时候就会出现过于ODBC的错误。请问各位大侠有何解决的方法?

解决方案 »

  1.   

    你的 DBF 文件的路径是不是不正确了,而且你发帖子,也应该把你的错误信息帖出来,方便大家帮你。
      

  2.   

    试一试ado连接时使用相对路径
      

  3.   

    你的ODBC的配置是不是正确呢?有可能找不到正确的数据源吧!
      

  4.   

    你可能差BDE环境,这和你的程序无关,你安装一个BDE可以搞定
      

  5.   

    不会吧,你在涮我们?
    ADO动态设置路径的话,ODBC又跑出来?也就是说你用了两种引擎技术?有必要用两种吗?一般情况下没有必要用两种的,你要是用ODBC的话,就用ODBC,不要用ADO,但是你要是用了ADO,就不要用ODBC,没有特殊的情况,不要将两种引擎技术一起用,还有一点,你动态设置了路径,想看一看,你是如何设置路径的如何?还有,你在这儿翻了一个很大的错误,为什么离开Delphi之后就不能用了呢?并不是ODBC的错,而是BDE的错,也就是说,你用了TQuery or TTable or TDataBase or 一些数据库敏感组件,这样,你就根本没有必要用ADO,同时,你也要乖乖的将BDE都给用户端装上,可能17M左右吧,不过,还行,可以精简到10M左右,或更少,至于如何精简 www.nxit.net/bbs里边有方法;
    我不知道你是否现在知道了你的错误,用了ADO,就可以不用ODBC,你是否清楚了一些?还有,说实话,不知道你是如何用ADO连接的,不是你指一路径就可以了,给你点代 码,你可以参考一下:
    DataBaseName:=OpenDialog1.FileName;
        ConnectStr:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DataBaseName+';';
        ProjectDatamodule.ProjectConnection.Connected:=false;
        ProjectDatamodule.ProjectConnection.ConnectionString:='';
        ProjectDatamodule.ProjectConnection.ConnectionString:=ConnectStr+'Persist Security Info=true';
        ProjectDatamodule.ProjectConnection.Connected:=true;
        projectdatamodule.Projectconnection.GetTableNames(listbox1.Items,false);
    参考-------------------------------------------------------------
    www.nxit.net/bbs 期待您的加入;
    我们一起交流
      

  6.   

    动态设置ado的connectstring不行吗?
      

  7.   

    在有装Delphi的的状态下可以正常的运行,但该程序在离开Delphi的状态下,运行的时候就会出现过于ODBC的错误:
    use runtime directroy:procedure TForm1.BitBtn1Click(Sender: TObject);
    var aStrDir,aStrTBN:String;
    begin
        aStrDir:=ExtractFilePath(Application.ExeName);
        aStrTBN:=aStrDir+'YourTable.dbf';  //Or Your Table Name
        //or: aStrTBN:='c:\YourTable.dbf';  
    try
      
      if aStrTBN<>'' then
      begin
        if FileExists(aStrTBN) then
        begin
          aStrDir:=ExtractFilePath(aStrTBN);
          with Table1 do
          begin
            if Active then Close;
            DatabaseName :=aStrDir;
            TableName:=aStrTBN;
            Active:=True;
            
          end;
        end else
        begin
          showmessage('File Not Fond! '+aStrTBN);
        end;
      end;
    except
        on E:Exception do
        begin
          ShowMessage(E.Message);
        end;
    end;
    end;{ 不要用ado,odbc,用bde 的TTable可以,何以舍近求遠?
      
    }
      

  8.   

    装个bde然后检查一下odbc或者别名