怎么样把从oracle查询得到的数据保存到本地的dbf文件中?便于用foxpro处理,从而减轻oracle数据库服务器的负担。dbf文件的文件名由用户指定,不管是从oracle查询还是把数据保存到DBF。要求都不用BDE控件,这样客户端就不用装delphi了。最好是用ADO。

解决方案 »

  1.   

    怎么样把从oracle查询得到的数据保存到本地的dbf文件中?便于用foxpro处理,从而减轻oracle数据库服务器的负担。dbf文件的文件名由用户指定。不管是从oracle查询还是把数据保存到DBF,要求都不用BDE控件,这样客户端就不用装delphi了。最好是用ADO。分不够的话,可以另外再给。谢谢!
      

  2.   

    adoquery1连接.DBF表
    adoquery2连接Oracle的表
    adoquery2.first;
    while not adoquery2.eof do
    begin
      adoquery1.append;
      adoquery1.fieldbyname('..').AsVariant := qdoquery2.fieldbyname('..').AsVariant;
      ...
      adoquery1.post;
    end
      

  3.   

    我稍改了下上面的程序,你先试下吧,不过我觉得你对自己的问题还说得不是很清楚.
    adoquery1连接.DBF表
    adoquery2连接Oracle的表
    adoquery2.first;
    while not adoquery2.eof do
    begin
      adoquery1.append;
      for i:=0 to adoquery2.FieldsCount -1 do 
       adoquery1.Fields.Fields[i].Value:=adoquery1.Fields.Fields[i].Value;
      adoquery1.post;
      adoquery2.next; 
    end
      

  4.   

    可是这样你还是要安装oracle的客户端啊
    既然用delphi为什么不考虑用odac这个控件呢?
    我觉得挺好用的啊
      

  5.   

    vchoushen6(vc火神6号) 的代码里怎么把adoquery连到dbf呢?
    执行的时候报,adoquery:dataset not in edit or insert mode .要怎么写呢?请大家提供详细的代码,谢谢。
      

  6.   

    不知道你现在怎么样了,用ODBC连
    写入数据前先执行方法:adoquery.Edit;
      

  7.   

    //使用下面这些,你在自已改改我想就可以实现了
       var
         lis:Tstrings;
         kk:integer;
       Begin 
          lis:=TStringlist.create;
          ADOC_ac.gettablename(lis);//ADOC_ac是Tadoconnection
          for i:=0 to lis.count-1 Do 
          Begin
          
              With ADOQ Do Begin
              Close;//ADOQ连接oracle
              SQL.Clear;
               Prepared;
               Sql.add('select * from ' +Tables_Sts[jj]);
               Open;
               End;
               With ADOQ_Ac Do Begin
               Close;
               SQL.Clear;
               Prepared;
               Sql.add('select * from ' +Tables_Sts[jj]);
               Open;
               End;
            //ADOQ连接oracle
            //ADOQ_Ac连接access
             While NOT ADOQ.Eof Do Begin                  
              ADOQ_Ac.Append;
               For kk:=0 To ADOQ_Ac.FieldCount-1 Do Begin
                 
                     ADOQ_Ac.Fields[kk]:=ADOQ.Fields[kk];
                End;  
                ADOQ_Ac.Post;
               ADOQ.Next;
          end;
    lis.free;
       end;