我正在我的KLOG表中进行计算。 但是,我的PRICES表中包含了我在KLOG表中计算所需的数据。
示例: KLOG表有PRICE_ID字段(整数)。 PRICES表也是如此。
所以我试图做这样的事情(在KLOG表的oncalculatefields):
if KLOG.FieldByName('PRICE_ID') = 1 then begin
KLOG.FieldByName('calculated_field_value_1').Value := KLOG.FieldByName('calculated_field_value_2').Value +5;
这个(+5)是我的PRICES表中的字段值(BONUS),PRICE_ID = 1。
那么我怎样才能在我的KLOG表的计算事件中引用这个BONUS字段? 你能用SELECT吗?类似的东西:
KLOG.FieldByName('calculated_field_value_1').Value := KLOG.FieldByName('calculated_field_value_2').Value + (select BONUS from PRICES where PRICES.PRICE_ID = KLOG.PRICE_ID);
我不确定我是否写得正确。
答案 0 :(得分:2)
您没有告诉我们您正在使用哪种数据访问组件。
建议的方法是使用查询组件(md5sum
,TSQLQuery
,TADOQuery
,...),然后让该查询的SQL检索所有必要的信息。您要在TIBQuery
中访问的所有字段都应该在该查询中。
这就像是
OnCalcFields()
将*替换为您实际需要的字段名称 如果您愿意,您甚至可以在查询中进行简单的计算,例如:
之类的东西select * from KLOG, PRICES
where KLOG.PRICE_ID=PRICES.PRICE_ID
无论如何,使用查询组件而不是表组件是很好的做法; (与select [..], PRICES.PRICE*KLOG_QUANTITY as TotalPrice from KLOG, PRICES
where KLOG.PRICE_ID=PRICES.PRICE_ID
...一起)它通常允许您检索比整个表更少量的数据。