帮朋友用Delphi编写一个访问Foxpro表的程序,在开发机器上运行良好,在客户机上运行的时候,出现访问表异常。原因何在?
比如,foxpro表在 C:\AAA 目录下,表名称 TableName.dbf  tbCash: TTable;
  ...
 
  begin    try
      tbCash.DataBaseName := 'C:\AAA';
      tbCash.TableName := 'TableName.dbf';
      tbCash.Active := TRUE;
    except
      ShowMessage('Table Open Error Or File Not Exits');
    end;end;客户那边运行时,出现被我异常处理的对话框。另外,我的程序是不需要设置ODBC,也不想通过BDE来访问,因为这样安装维护很麻烦,客户是比较菜的那种。
  好了,谁告诉我是缺foxpro的哪些文件,定高分酬谢!!

解决方案 »

  1.   

    那就用ado访问了
    你现在用的就是bde组件呀
    必须配置别名呀
      

  2.   

    你在客户断需要设置ODBC的别名,其他的什么也不用!
      

  3.   

    另外需要注意的是ODBC中FOXPRO库文件的数据库是否有密码
      

  4.   

    如果你用 foxpro 3.x 以上的數據庫格式, 正常是無法訪問的,
    解決方法看如下:http://borland.mblogger.cn/scyangyu/posts/1527.aspx
      

  5.   

    用ADO就直接发布就行了,别的就麻烦了.
      

  6.   

    问题已经解决,正如我所猜测,缺少一些运行库,不过不是FoxPro的。是BDE的,文件如下:
    bantam.dll
    idapi32.dll
    iddbas32.dll
    idr20009.dll
    各个文件具体含义,有兴趣的去看看开发文档吧。
    解决思路:
    把BDE下面的文件全部拷贝到我的程序下面,运行我的程序,然后挨个删除,如果不能删除文件的,就是我的程序运行所必需的。
    采用这种办法,可以不配置BDE或ODBC,比用ADO或者其他办法方便多了。当然,如果数据库提供OLEDB接口,采用ADO那是最好的选择了。
      

  7.   

    ADO访问效率是比较差的,应为它要通过ODBC,FoxPro目前并不提供OLEDB
    BDE访问效率是比较高的,因为Borland公司内嵌了它们的驱动,但是并不需要配置BDE,采用目录访问也是可以的,这样,你所写的程序维护与易用性就好。
    在不得已(客户缘故),数据库采用关系数据库比较好,比如:SQL Server、Sybase或者其他的,桌面数据库Access是比较好的选择,因为它提供了Jet引擎。