两个表的计算字段!(50分)

  • 主题发起人 主题发起人 江西的delphi
  • 开始时间 开始时间

江西的delphi

Unregistered / Unconfirmed
GUEST, unregistred user!
流水线日报表中
有表1在DBGRID1
工序 工序单价 所作工序数量 工序金额(计算字段)
A 3 4 12
B 5 2 10
F 3 1 3
表2在DBGRID2
员工 技术等级 日工资(计算字段)
张三 7.5
李四 9.0

怎么才能算出张三,李四的日工资。
日工资=SUM(表1中的工序金额)*每人技术等级/SUM(表2技术等级)
 
我个人的理解是:
在DBGRID1的DATASET的ONCALCFIELDS事件中累计计算出所有的工序金额。
然后在DBGRID2的DATASET的ONCALCFIELDS事件中计算相应的日工资。
我还没试,你可以去试一试
 
你所说的表结构好象缺少关联!
 
TO GZCYP:
是通过隐含的生产日报表的ID号,
表1和表2是通过主表(有字段日报表ID,生产日期)关联在一起!
 
不知能不能实现?
 
你能不能把好兩個表的閏系說清楚點
 
TO:forjing_888
关联不会很重要吧,关健是两个表间能不能用计算字段!
即一个表某字段更改后会动态影响另一个表的字段(当然是计算字段)。
 
再没人答就结束了!
 
可以用ClientDataSet的TAggregate来计算SUM,AVG等值:

procedure TForm1.Button1Click(Sender: TObject);
var FSum: TAggregate;
begin
FSum := ClientDataSet1.Aggregates.Add;
with FSum do
begin
AggregateName := 'Sum';
Expression := 'SUM(金额)';
ClientDataSet1.AggregatesActive := True;
Active := True;
Edit1.Text := VarToStr(Value);
Active := False;
ClientDataSet1.AggregatesActive := False;
ClientDataSet1.Aggregates.Delete(Fsum.Index);
end;
end;
 
To:tata
你那种。
两dbgrid不能相互影响吧!
 
都回家过年去了!
我可残了。。。
 
看来是无解了!
 
结束,还是无解。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部