我做了个管理系统,其中包含制造费用、燃料及动力、折旧、其他制造费用这四个表,现在我想把(燃料及动力、折旧、其他制造费)这三个表中的相关信息添加到(制造费用)表中,怎么用代码实现?
我的代码是:
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.   

    query1.SQL.Add('insert into 制造费用(...)');
      

  2.   

    你的意思是:
    query1.SQL.Add('insert into 制造费用()');
    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;这样吗?
    我还是不明白,
    麻烦具体指教!
    谢谢!
      

  3.   

    query1.ExecSQL;
    query1.Open;
    怎么能同时用哪?
    区别到网上搜一下.
      

  4.   

    with query1 do
    begin
      close;
      with SQL do
      begin
        clear;
        Lines.Add('insert into 燃料及动力(编号,名称原值,预计使用年限,金额,备注)');
        Lines.Add('select 编号,名称,null,null,金额,备注 from 燃料及动力');
        Lines.Add('union all');
        Lines.Add('select 编号,名称,原值,预计使用年限,月折旧费,备注 from 折旧');
        Lines.Add('union all');  
        Lines.Add('select 编号,名称,null,null,金额,备注 from 其他制造费用');    
      end;
      ExecSQL;
    end;
      

  5.   

    上面的大哥,有问题哦,好象没有query1.lines这个用法吧?
      

  6.   

    上面的高手,为什么下面的代码会出现死循环呢?特别是后面制造费用、工资表、其他成本的信息会出现死循环。
    query1.Close;
    with query1.SQL do
    begin
    query1.SQL.Clear;
    query1.SQL.Add('insert into 成本');
    query1.SQL.Add('select 原材料品名号,名称,金额,NULL from 原材料');
    query1.SQL.Add('union all');
    query1.SQL.Add('select 编号,名称,金额,备注 from 制造费用 ');
    query1.SQL.Add('union all');
    query1.SQL.Add('select 职工编号,职工姓名,应发工资,NULL from 工资表');
    query1.SQL.Add('union all');
    query1.SQL.Add('select * from 其他成本 ');
    end;
    query1.ExecSQL;
    query1.Active:=true;
    end;query1.SQL.Add('union all');是什么意思?高手们救救小弟吧!
      

  7.   

    呵呵!不用Lines,直接Add就行了!
    with query1 do
    begin
      close;
      with SQL do
      begin
        clear;
        Add('insert into 燃料及动力(编号,名称原值,预计使用年限,金额,备注)');
        Add('select 编号,名称,null,null,金额,备注 from 燃料及动力');
      end;
      ExecSQL;
    end;你先执行一个,看能不能成功?
      

  8.   

    我执行第一个,可以
    但是是将query1.Active:=true;这条语句去掉了才可以,加上就会死循环
    不加问题是不能在窗体上显示
    不知道是什么原因。
    麻烦指点下!
    谢谢!
      

  9.   

    with query1 do
    begin
      close;
      SQL.clear;
      SQL.Add('insert into 燃料及动力(编号,名称原值,预计使用年限,金额,备注)');
      SQL.Add('select 编号,名称,null,null,金额,备注 from 燃料及动力');
      SQL.Add('union all');
      SQL.Add('select 编号,名称,原值,预计使用年限,月折旧费,备注 from 折旧');
      SQL.Add('union all');  
      SQL.Add('select 编号,名称,null,null,金额,备注 from 其他制造费用');    
      ExecSQL;
    end;
    如果不行就:
    with query1 do
    begin
      close;
      SQL.clear;
      SQL.Add('insert into 燃料及动力(编号,名称原值,预计使用年限,金额,备注)');
      SQL.Add('select 编号,名称,null,null,金额,备注 from 燃料及动力');
      ExecSQL;
      Close;
      SQL.clear;
      SQL.Add('select 编号,名称,原值,预计使用年限,月折旧费,备注 from 折旧');
      ExecSQL;
      Close;
      SQL.clear;
      SQL.Add('select 编号,名称,null,null,金额,备注 from 其他制造费用');    
      ExecSQL;
    end;
      

  10.   

    这里是
      SQL.Add('insert into 燃料及动力(编号,名称原值,预计使用年限,金额,备注)');
      SQL.Add('select 编号,名称,原值,预计使用年限,月折旧费,备注 from 折旧');
      ExecSQL;
      Close;
      SQL.clear;
      SQL.Add('insert into 燃料及动力(编号,名称原值,预计使用年限,金额,备注)');
      SQL.Add('select 编号,名称,null,null,金额,备注 from 其他制造费用');    
      ExecSQL;
      

  11.   

    这样还是不行
    还是会循环,而且还是不能在窗体中显示数据
    我的代码是:
    with query1 do
    begin
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('insert into 制造费用 ');
    query1.SQL.Add('select 原材料品名号,名称,金额,日期,活动 from 原材料');query1.ExecSQL;end;
      

  12.   

    ZZWL77() ( ) 信誉:100    Blog   
    我执行第一个,可以
    你不是说执行一个的时候就可以的吗?那我分开来执行也是一样的啊,又怎么会循环呢,
    我都不知道你说的循环是什么
      

  13.   

    出现什么啊?
    我看你最好写一个储存过程好了,然后放一个TStoreProc去执行它,方便
      

  14.   

    还有就是不知道该怎么设置query1.active的属性才能使得打开上面的窗体就能够显示数据?
      

  15.   

    晕,这是当然啦,你每点一次他就会打SELECT出来的结果添加到那个表里面去的啊!
    增加是一个动作,查询是一个动作,你应该要加多个按钮专门用来查询数据的!
      

  16.   

    chenzhuo(jack chen)快帮帮我啊!
    我的代码:
    with query1 do
    begin
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('insert into 制造费用 ');
    query1.SQL.Add('select 原材料品名号,名称,金额,日期,活动 from 原材料');query1.ExecSQL;end;运行后窗体中的DBGird不能够显示数据库的数据
    要退出运行状态后,将query1.active的属性从ture改为flase在改为true才可以显示
    这是为什么?
      

  17.   

    天啊.我要吐血了
    query1.ExecSQL;只负责执行不返回数据集的sql语句,当然dbgrid没有东西
    query1.active:=true 相当于,query1.open,执行query1.sql里的sql语句,dbgrid显示sql语句返回的结果.
      

  18.   

    你可以放两个按钮.
    在button1.onclick的事件里:
    with query1 do
    begin
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('insert into 制造费用 ');
    query1.SQL.Add('select 原材料品名号,名称,金额,日期,活动 from 原材料');query1.ExecSQL;end;
    负责写入数据.
    在button2.onclick的事件里:
    with query2 do
    begin
    query2.Close;
    query2.SQL.Clear;
    query2.SQL.Add('select * from 制造费用 ');
    query1.open;
    dbgrid连query2的数据集
      

  19.   


    【中国软件开发联盟】www.itebase.com 欢迎你的加入!提供.NET,ASP.NET,C#,VB.NET,JAVA,C++,DELPHI,PHP,MS SQL,MySql,ORACLE,UML建模,软件工程...等技术的学习交流和经验,资料,源码共享...http://www.itebase.com
      

  20.   

    在button1.onclick的事件里:
    with query1 do
    begin
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('insert into 制造费用 ');
    query1.SQL.Add('select 原材料品名号,名称,金额,日期,活动 from 原材料');query1.ExecSQL;end;
    这个功能就是把数据添加到 制造费用 里,你点一次就添加一次,当然要重复了
      

  21.   

    在button1.onclick的事件里:
    with query1 do
    begin
    query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('delete from 制造费用 ');
    query1.execsql;query1.Close;
    query1.SQL.Clear;
    query1.SQL.Add('insert into 制造费用 ');
    query1.SQL.Add('select 原材料品名号,名称,金额,日期,活动 from 原材料');query1.ExecSQL;end;
    添加之前先删除