D
delphi26
Unregistered / Unconfirmed
GUEST, unregistred user!
我在写一存销存软件,在汇总各商品库存时我采用下面的方法:
前提:
假如有下面数据表:
采购进货表
采购退货表
领料表
产品入库表
产品出货表
产品退货表
每个表都有下面字段:
商品编号,商品名称,规格型号,单位,数量,单价
我现在要汇总出下面表:库存表
商品编号,商品名称,规格型号,单位,库存量,平均单价
我采用下面方法
procedure tform1.bitbtn1click(sender:tobject)
begin
//建立采购进货表汇总临时表
With Dm.Adoquery1 do
begin
Close;
Sql.Clear;
Sql.Add('Create Table ##jinhuo(商品编号 Varchar(20),商品名称 Varchar(50),规格型号 Varchar(50),单位 Varchar(10),');
Sql.Add('规格型号 Varchar(30),数量 Decimal(10,5),');
Sql.Add('平均单价 Decimal(10,3))');
ExecSql;
end;
//建立采购退货表汇总临时表
With Dm.Adoquery1 do
begin
Close;
Sql.Clear;
Sql.Add('Create Table ##tuihuo(商品编号 Varchar(20),商品名称 Varchar(50),规格型号 Varchar(50),单位 Varchar(10),');
Sql.Add('规格型号 Varchar(30),数量 Decimal(10,5),');
Sql.Add('平均单价 Decimal(10,3))');
ExecSql;
end;
//及建立其它临时表(如领料临时表,产品入库临时表等)
.........
//汇总采购进货表
With Dm.Aq_OnceQuery do
begin
Close;
Sql.Clear;
Sql.Add('Insert Into ##tuihuo(商品编号,商品名称,规格型号,单位,数量,平均单位) ');
Sql.Add('Select 商品编号,商品名称,规格型号,单位,单位,Sum(数量) As 数量,Avg(单价) As 平均单价 ');
Sql.Add('from 采购进货明细 Group by 商品编号,商品名称,规格型号,单位');
ExecSql;
end;
//汇总采购退货表
With Dm.Aq_OnceQuery do
begin
Close;
Sql.Clear;
Sql.Add('Insert Into ##tuihuo(商品编号,商品名称,规格型号,单位,数量,平均单位) ');
Sql.Add('Select 商品编号,商品名称,规格型号,单位,单位,Sum(数量) As 数量,Avg(单价) As 平均单价 ');
Sql.Add('from 采购退货明细 Group by 商品编号,商品名称,规格型号,单位');
ExecSql;
end;
//汇总其它数据表(如领料表,产品入库表,产品出货表等)
//最后,由各临时表汇总库存量
With Aq_StockPile do
begin
Close;
Sql.Clear;
Sql.Add('Select 商品编号,商品名称,型号规格,单位,Sum(a) As 库存量 from (');
Sql.Add('Select 商品编号,商品名称,型号规格,单位,数量 as a from ##Jinhuo ');
Sql.Add('Union All Select 商品编号,商品名称,型号规格,单位,0-数量 as a from ##tuihuo ');
Sql.Add('Union All Select 商品编号,商品名称,型号规格,单位,(0-数量) as a from ##linliao ');
Sql.Add('Union All Select 商品编号,商品名称,型号规格,单位,数量 as a from ##tuiliao ');
Sql.Add('Union All Select 商品编号,商品名称,型号规格,单位,(0-数量) as a from ##baofei) Sumtable ');
Sql.Add('Group by 商品编号,商品名称,型号规格,单位');
Open;
end;
//删除各临时表(如删除采购进货表临时表)
With Dm.Aq_OnceQuery do
begin
Close;
Sql.Clear;
Sql.Add('Drop Table ##Jinhuo');
ExecSql;
end;
.........
Messagebox(0,'汇总完毕!','提示',Mb_IconInformation+Mb_Ok);
end;
这中间还有很多代码我省略啦,不过,大根意思是上面这样,我是DELPHI初学者,我想把上面代码写成存储过程来执行,这个问题对于我来说很难,但对于你们各位来说,也可能非常简单,还请各位大侠指点一下,谢谢!
前提:
假如有下面数据表:
采购进货表
采购退货表
领料表
产品入库表
产品出货表
产品退货表
每个表都有下面字段:
商品编号,商品名称,规格型号,单位,数量,单价
我现在要汇总出下面表:库存表
商品编号,商品名称,规格型号,单位,库存量,平均单价
我采用下面方法
procedure tform1.bitbtn1click(sender:tobject)
begin
//建立采购进货表汇总临时表
With Dm.Adoquery1 do
begin
Close;
Sql.Clear;
Sql.Add('Create Table ##jinhuo(商品编号 Varchar(20),商品名称 Varchar(50),规格型号 Varchar(50),单位 Varchar(10),');
Sql.Add('规格型号 Varchar(30),数量 Decimal(10,5),');
Sql.Add('平均单价 Decimal(10,3))');
ExecSql;
end;
//建立采购退货表汇总临时表
With Dm.Adoquery1 do
begin
Close;
Sql.Clear;
Sql.Add('Create Table ##tuihuo(商品编号 Varchar(20),商品名称 Varchar(50),规格型号 Varchar(50),单位 Varchar(10),');
Sql.Add('规格型号 Varchar(30),数量 Decimal(10,5),');
Sql.Add('平均单价 Decimal(10,3))');
ExecSql;
end;
//及建立其它临时表(如领料临时表,产品入库临时表等)
.........
//汇总采购进货表
With Dm.Aq_OnceQuery do
begin
Close;
Sql.Clear;
Sql.Add('Insert Into ##tuihuo(商品编号,商品名称,规格型号,单位,数量,平均单位) ');
Sql.Add('Select 商品编号,商品名称,规格型号,单位,单位,Sum(数量) As 数量,Avg(单价) As 平均单价 ');
Sql.Add('from 采购进货明细 Group by 商品编号,商品名称,规格型号,单位');
ExecSql;
end;
//汇总采购退货表
With Dm.Aq_OnceQuery do
begin
Close;
Sql.Clear;
Sql.Add('Insert Into ##tuihuo(商品编号,商品名称,规格型号,单位,数量,平均单位) ');
Sql.Add('Select 商品编号,商品名称,规格型号,单位,单位,Sum(数量) As 数量,Avg(单价) As 平均单价 ');
Sql.Add('from 采购退货明细 Group by 商品编号,商品名称,规格型号,单位');
ExecSql;
end;
//汇总其它数据表(如领料表,产品入库表,产品出货表等)
//最后,由各临时表汇总库存量
With Aq_StockPile do
begin
Close;
Sql.Clear;
Sql.Add('Select 商品编号,商品名称,型号规格,单位,Sum(a) As 库存量 from (');
Sql.Add('Select 商品编号,商品名称,型号规格,单位,数量 as a from ##Jinhuo ');
Sql.Add('Union All Select 商品编号,商品名称,型号规格,单位,0-数量 as a from ##tuihuo ');
Sql.Add('Union All Select 商品编号,商品名称,型号规格,单位,(0-数量) as a from ##linliao ');
Sql.Add('Union All Select 商品编号,商品名称,型号规格,单位,数量 as a from ##tuiliao ');
Sql.Add('Union All Select 商品编号,商品名称,型号规格,单位,(0-数量) as a from ##baofei) Sumtable ');
Sql.Add('Group by 商品编号,商品名称,型号规格,单位');
Open;
end;
//删除各临时表(如删除采购进货表临时表)
With Dm.Aq_OnceQuery do
begin
Close;
Sql.Clear;
Sql.Add('Drop Table ##Jinhuo');
ExecSql;
end;
.........
Messagebox(0,'汇总完毕!','提示',Mb_IconInformation+Mb_Ok);
end;
这中间还有很多代码我省略啦,不过,大根意思是上面这样,我是DELPHI初学者,我想把上面代码写成存储过程来执行,这个问题对于我来说很难,但对于你们各位来说,也可能非常简单,还请各位大侠指点一下,谢谢!