关于给计算字段赋值的问题 ( 积分: 100 )

  • 主题发起人 主题发起人 yorkjj
  • 开始时间 开始时间
Y

yorkjj

Unregistered / Unconfirmed
GUEST, unregistred user!
在query1中有三个字段,jbno,jbmc,yallcosthj
其中yallcosthj为计算字段
我需要在dbgrid中显示出来
执行query1已经能够正确显示为这样:
代码 级别 销售收入
合计
10 贵宾卡
20 金卡
...
就差yallcosthj字段无法显示出来
我又加入了query2控件,执行后:
销售收入 代码
1920
420 10
1500 20
...
如何将query2中的yallcost值赋给query1中的yallcosthj.
然后在dbgrid中正确显示为:
代码 级别 销售收入
合计 1920
10 贵宾卡 420
20 金卡 1500
...
我在query1中的oncalcfields事件中写了这样一段代码 query1.FieldByName('yallcosthj').AsFloat:=query2.fieldbyname('yallcost').asfloat;
最后显示是这样的:
代码 级别 销售收入
合计 1920
10 贵宾卡 1920
20 金卡 1920
不知道该怎么写了,望DX解答.谢谢了
 
方法多了!
你在oncalcfields里写代码也行,但要先根据query1的jbno定位query2。代码应该这样写:
query2.locate('jbno',query1.FieldByName('jbno').asString);
query1.FieldByName('yallcosthj').AsFloat:=query2.fieldbyname('yallcost').asfloat;
更简单的做法是直接在query1中直接添加lookup字段,以都jbno为key,yallcosthj作为返回值即可。
 
for i:=0 to Query1.RecordCount do
begin
Query2.Locate('')
Query2.Locate('jbno',Query1.FieldByName('jbno').AsString);
Query1.FieldByName('yallcosthj').AsFloat:=Query2.fieldbyname('yallcost').AsFloat;
end;
 
if Query2.Locate('jbno',Query1['jbno'],[]) then
Query1['yallcosthj'] := Query2['yallcost']
ELSE
Query1['yallcosthj'] = null
 
多人接受答案了。
 
后退
顶部