savetofile、loadfromfile这两个方法究竟如何使用?我先用savetofile将A表中的数据写入B文件然后将A表删空再用loadfromfile从B文件中把数据读到A表中。
////////////////////////////////////////
ADOQuery1.Open;                       // 
ADOQuery1.SaveToFile('d:\A.xxx');     //------------------(1) 
////////////////////////////////////////
ADOQuery1.LoadFromFile('d:\A.xxx')';  //------------------(2)
////////////////////////////////////////
运行程序先执行(1)部分,退出程序将于ADOQuery1关联的表删空。再运行程序执行(2)部分;
我用一个数据表格和ADOQuery1关联发现在执行(2)部分时表格有相关的数据显示但是当我退出程序检查数据库时发现数据库还是空的,这是什么原因,求解答?

解决方案 »

  1.   

    (2)后面
    ADOQuery1.post 试试看
      

  2.   

    ADOQuery1.Open;                       // 
    ADOQuery1.SaveToFile('d:\A.xxx');     //------------------(1) 
    ////////////////////////////////////////
    ADOQuery1.LoadFromFile('d:\A.xxx')';  //------------------(2)
    ////////////////////////////////////////Adoquery1.post;
      

  3.   

    写错了,
    试试ADOQuery1.UpdateBatch(arAll);
      

  4.   

    post,updatebatch都试过的好像不是这个的问题,谢谢各位的热心解答,虽然好像都不对的说:)对了,如何追加给分呀?俺好像只能给一百分(一个贴子)的样子。
      

  5.   

    我实践操作了一下,无论用什么方法,都不行。但如果没调用LoadfromFile(),在打开的DbGrid中添加新数据,然后调用query.edit;query.post;则操作成功,数据库也会有新数据出现。
    这说明问题就在于TADOquery在内部怎么处理LoadFromFile()函数。查VCL:如下
        
    procedure TCustomADODataSet.LoadFromFile(const FileName: WideString);
    begin
      Close;
      CommandType := cmdFile;
      LockType := ltBatchOptimistic;
      CommandText := FileName;
      Open;
    end;显然采用的是命令方式,但在其子类TADOQuery中,却无法访问CommandType,CommandText属性。
    如果先close掉adoquery,然后再采用sql方式重新访问数据库,会出现系统错误,提示loadfromfile操作失败,显然,以前LoadFromFile的操作在ADOquery中仍然保存着,没有被冲掉;也找不到冲掉的办法。  我个人认为采用LoadFromFile()后,TADOQUERY是无法再向数据库提交数据了。也就是说,此方法不可行!
      
      如果你有什么解决办法,欢迎讨论!关注!!!