我做了个管理系统,其中包含制造费用、燃料及动力、折旧、其他制造费用这四个表,现在我想把(燃料及动力、折旧、其他制造费)这三个表中的相关信息添加到(制造费用)表中,怎么用代码实现?
我的代码是:
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;
我的代码是:
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;
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;这样吗?
我还是不明白,
麻烦具体指教!
谢谢!
query1.Open;
怎么能同时用哪?
区别到网上搜一下.
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;
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');是什么意思?高手们救救小弟吧!
with query1 do
begin
close;
with SQL do
begin
clear;
Add('insert into 燃料及动力(编号,名称原值,预计使用年限,金额,备注)');
Add('select 编号,名称,null,null,金额,备注 from 燃料及动力');
end;
ExecSQL;
end;你先执行一个,看能不能成功?
但是是将query1.Active:=true;这条语句去掉了才可以,加上就会死循环
不加问题是不能在窗体上显示
不知道是什么原因。
麻烦指点下!
谢谢!
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;
SQL.Add('insert into 燃料及动力(编号,名称原值,预计使用年限,金额,备注)');
SQL.Add('select 编号,名称,原值,预计使用年限,月折旧费,备注 from 折旧');
ExecSQL;
Close;
SQL.clear;
SQL.Add('insert into 燃料及动力(编号,名称原值,预计使用年限,金额,备注)');
SQL.Add('select 编号,名称,null,null,金额,备注 from 其他制造费用');
ExecSQL;
还是会循环,而且还是不能在窗体中显示数据
我的代码是:
with query1 do
begin
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('insert into 制造费用 ');
query1.SQL.Add('select 原材料品名号,名称,金额,日期,活动 from 原材料');query1.ExecSQL;end;
我执行第一个,可以
你不是说执行一个的时候就可以的吗?那我分开来执行也是一样的啊,又怎么会循环呢,
我都不知道你说的循环是什么
我看你最好写一个储存过程好了,然后放一个TStoreProc去执行它,方便
增加是一个动作,查询是一个动作,你应该要加多个按钮专门用来查询数据的!
我的代码:
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才可以显示
这是为什么?
query1.ExecSQL;只负责执行不返回数据集的sql语句,当然dbgrid没有东西
query1.active:=true 相当于,query1.open,执行query1.sql里的sql语句,dbgrid显示sql语句返回的结果.
在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的数据集
【中国软件开发联盟】www.itebase.com 欢迎你的加入!提供.NET,ASP.NET,C#,VB.NET,JAVA,C++,DELPHI,PHP,MS SQL,MySql,ORACLE,UML建模,软件工程...等技术的学习交流和经验,资料,源码共享...http://www.itebase.com
with query1 do
begin
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('insert into 制造费用 ');
query1.SQL.Add('select 原材料品名号,名称,金额,日期,活动 from 原材料');query1.ExecSQL;end;
这个功能就是把数据添加到 制造费用 里,你点一次就添加一次,当然要重复了
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;
添加之前先删除