当一个DBF(vfp)文件被其他文件操作或者查询时,使用ADO连接打开DBF就会报错
 外部数据库驱动程序 (15877) 中的意外错误。.
请问如何打开该DBF?附上ADO连接串:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\;Extended Properties=dBase 5.0;Persist Security Info=False连接属性中的为share deny none,但是read方式试过也不行
cursor Location 为clUseClient我想知道如何能在DBF被做任何操作的时候都能打开它,因为我只作查询

解决方案 »

  1.   

    用一个ADOConnection连接,其它的DataSet都连到这个ADOConnection上,不要每个DataSet都建一个连接。也可以用一个列表把这个
    ADOConnection管理起来
      

  2.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
    ole,oleb:_RecordSet;
    begin
     with ADOConnection1  do begin
      ole:=Execute('SELECT * from openrowset(''MICROSOFT.JET.OLEDB.4.0'',''dBase III;DATABASE=c:\'',''select * from [CUSTOMER.dbf]'')');
      oleb:=Execute('SELECT custmr_id from openrowset(''MICROSOFT.JET.OLEDB.4.0'',''dBase III;DATABASE=c:\'',''select * from [CUSTOMER.dbf]'')');
      adoquery1.Recordset:=ole;
      adoquery2.Recordset:=oleb;
     end;
    end;
      

  3.   

    我感觉应该是ADO中设置的问题吧?
      

  4.   

    和这个没有关系,DBF不是我的程序打开的,有多个程序对DBF进行操作
      

  5.   

    我想要做到的就是被独占打开也能对DBF进行查询
      

  6.   

    这样的做法DBF必须在SQL服务器的本地对应目录,可我程序运行时候并不一定在SQL服务器的机器上运行的,我还是想采用ADO方式
      

  7.   

    我读的是深交所的DBF,怎么可能让深交所换数据库呢= =||
    还是有办法对DBF进行操作的,不过只能单条取数据,效率很低下,我只是想进行个查询而已
      

  8.   

    有个控件叫halcn, 可以在任何非独占情况下操作DBF数据库, 效率颇高.另外一个笨办法是把要打开的数据库先复制一份再打开, 当然效率就比较糟糕了.
      

  9.   

    请问能给我发一份halcn试试吗?网上搜索结果寥寥