我做了个管理系统,其中包含四个表:制造费用、燃料及动力、折旧、其他制造费用;我现在想把燃料及动力、折旧、其他制造费用这三个表中的信息添加到(制造费用)表中,我的代码是:
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select * from 制造费用');
query1.SQL.Add('select * from 燃料及动力 where 制造费用.编号 = 燃料及动力.编号and制造费用.名称=燃料及动力.名称 and 制造费用.金额=燃料及动力.金额 and 制造费用.备注=燃料及动力.备注');
query1.SQL.Add('select 固定资产编号,名称,月折旧费,备注 from 折旧 where 制造费用.编号 = 折旧.固定资产编号and 制造费用.名称=折旧.名称and制造费用.金额=折旧.月折旧费and制造费用.备注=折旧.备注');
query1.SQL.Add('select * from 其他制造费用 where 制造费用.编号=其他制造费用.编号and 制造费用.名称=其他制造费用.名称and 制造费用.金额=其他制造费用.金额and 制造费用.备注=其他制造费用.备注');
query1.ExecSQL;
query1.Open;但是不能实现,不知道是那错了,请各位高手出手帮忙!

解决方案 »

  1.   

    你这3个是select 语句,是查询数据集的,只能返回结果集.并不具有插入数据的功能.LZ可以通过2中方法实现.
    1.在服务器端谢存储过程.程序根据参数控制写入数据,
    2.分别读出3个表的数据,然后循环用insert语句插入表.ps:如果是orcale数据库,inti table (f1,f2,f3) (select f1,f2,f3 from table2 where 1=1 unite select f1,f2,f3 from table2 where 1=1)一个语句搞定.
      

  2.   

    我用的是SQL serer2000建的数据库
      

  3.   

    insert into 制造费用(ID,'费用')
    select ID,'费用' from 燃料及动力 where 制造费用.编号 = 燃料及动力.编号and制造费用.名称=燃料及动力.名称 and 制造费用.金额=燃料及动力.金额 and 制造费用.备注=燃料及动力.备注'
    union
    select ID,'费用' from 折旧 where 制造费用.编号 = 折旧.固定资产编号and 制造费用.名称=折旧.名称and制造费用.金额=折旧.月折旧费and制造费用.备注=折旧.备注'
    union
    select ID,'费用' from 其他制造费用 where 制造费用.编号=其他制造费用.编号and 制造费用.名称=其他制造费用.名称and 制造费用.金额=其他制造费用.金额and 制造费用.备注=其他制造费用.备注'
    先写个这样的语句在SQL SERVER测试一下,如果行了,就
    SQL.Add(...);
    SQL.Add(...);
    一句一句的加上去就可以了!
      

  4.   

    sql server 不支持这个用法吧,  我是没成功过,都是一条一条加的.
    DML
      

  5.   

    应该是一个一个的加
    query1.sql.add('');
    query1.exesql;
    query1.sql.add('');
    query1.exesql;
    query1.sql.add('');
    query1.exesql;
    这样三个插入语句,要是不分开插入,我觉得好像不能实现。
    query好像不能实现多个语句同时执行。