我先用ADOQuery1.SaveToFile导出数据到本地,再用ADOQuery2.LoadFromFile把数据导入进来,这时数据是保存在ADOQuery2里,并没有真正写入数据库,我只能把数据从ADOQuery2里一条一条读出来,通过FieldByName或用SQL语句来INSERT到表里,请问有没有别的好方法写入到库里,我觉的应该有,因为数据已经保存在ADOQuery2里了。
(我试过用ADOQuery2.post和UpdateBatch都不行,在之前用edit也不行)

解决方案 »

  1.   

    链接到数据库,
    insert into table select * from ADOQuery2   可以吗?
      

  2.   

    链接到数据库,
    insert into table select * from ADOQuery2   可以吗?
      

  3.   

    to wjlsmail(计算机质子) 
    这样行吗?我没试过,不过我觉的不可以,ADOQuery2是个数据集控件,并不是数据库里的表,如果在数据库里执行这条SQL语句,它肯定会把ADOQuery2当成表来处理,可是数据库里并没有ADOQuery2表。
      

  4.   

    或者说,你的query1的sql语句确定了吗?
    若是已确定,就好做了。
      

  5.   

    to  TWWH()
    表名是确定的,并且ADOQuery1的sql语句是确定。请问有什么好方法。
      

  6.   

    你把query2的内容逐列赋给query1就行了,然后对query1实行保存即可。
    当然,也可用另外的query,但必须保证它的sql语句是正确的。
      

  7.   

    to TWWH() 
    对,这也是个办法,
    不过我还是感觉太过于麻烦,我觉得既然数据已经保存在ADOQuery2里面了,能不能不用把数据逐个读到另一个query或变量里去拼SQL语句(我是读到变量里去拼SQL),直接就用这个ADOQuery2来完成(比如POST、UpdateBatch,但是我试过,存不进去)。
    但是还是非常感谢TWWH(),你的方法比我的要省事些,用两个循环就行了。
      

  8.   

    用loadfromfile,然后将
     with adoquery1 do 
    begin 
    insert into 表名('字段1','字段2','字段3') values(ADOQuery1.Fields[0].asstring,ADOQuery1.Fields[1].asstring,ADOQuery1.Fields[2].asstring);
    next;
    end;
      

  9.   

    你用的是什么库?
    access还是ms sql或interbase
    可以:
    adoconnection1.Execute('insert  into 库2.表2 (field1,field2...) select (field1,field2...) from 表1')
      

  10.   

    我也被这个问题困绕了一段时间了,我想要是能让savefile()保存成.db文件就好了.有高手说可以,可我弄了好久没有结果!
      

  11.   

    batchmove,不行吧,而且它在有些情况下容易出问题。
      

  12.   

    根据两个数据库的名字写SQL语句,在表名前加上数据库的名字。让数据库来复制。
      

  13.   

    我也被这个问题困绕了一段时间了,我希望从一个本地免费的InterBase数据库将数据导入到后端的Oracle数据库,没能找到比较简便的方法。
      

  14.   

    用BDE的Batchmove直接考数据表,行不行?我觉得可以