lookup和计算列的问题

nightmaple 2009-11-19 05:43:41
a表
product totalQty
产品A 100
产品B 200

b表
Id customer product Qty
1 客户1 产品A 10
2 客户2 产品A 20

DBGridEh中要显示成如下
Id customer product Qty balQty(剩余数量)
5 客户3 产品A 5 50
5 客户3 产品A 15 50
5 客户3 产品B 30 170

a,b表是数据库中的,DBGridEh显示的是没存入数据库,点保存时才批量更新

要怎么实现界面上的:产品A的balQty(50)=a表中totalQty(100)-b表中Qty和(10+20)-界面上的产品A的Qty(5+15)???

请高手帮忙....

-----------------------------------------------------------
P.S
我现在只能实现成如下:
产品A的balQty(65)=a表中totalQty(100)-b表中Qty和(10+20)-界面上的产品A的Qty(5)
产品A的balQty(55)=a表中totalQty(100)-b表中Qty和(10+20)-界面上的产品A的Qty(15)
Id customer product Qty balQty(剩余数量)
5 客户3 产品A 5 65
5 客户3 产品A 15 55
5 客户3 产品B 30 170

DBGridEh的数据源为ADOQueryB.SQL为
select customer,product,Qty from b

lookup数据源为ADOQueryA.SQL为
select a.product,a.totalqty-sum(b.qty) as TQty from a left join b on a.product=b.product
group by a.product

我在ADOQueryb中添加lookup关联到ADOQueryA表返回TQty的字段:TQty
在ADOQueryb中添加一个计算列:balQty

在ADOQueryb的CalcFields事件中
ADOQueryb.FieldByName('balQty').asinteger:=ADOQueryb.FieldByName('TQty').asinteger-ADOQueryb.FieldByName('Qty').asinteger;
...全文
64 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
nightmaple 2009-11-20
  • 打赏
  • 举报
回复
怎么沉了?
高人来帮忙啊。。。。
nightmaple 2009-11-19
  • 打赏
  • 举报
回复
2楼代码贴错了,
Filter:='prduct='''+Color+'''';
改成
Filter:='product='''+prduct+'''';
nightmaple 2009-11-19
  • 打赏
  • 举报
回复
我现在最主要的问题就是界面上的(没保存到数据库)同一产品的数量不知道怎么统计

我有写一个function获取界面上同一产品的数量
function TFrom1.GetTempQty(prduct: string):integer;
var i,TotalQty:integer;
begin
TotalQty:=0;
with ADOQueryb do
begin
DisableControls;
Filtered:=true;
Filter:='prduct='''+Color+'''';
for I := 0 to ADOQueryb.RecordCount - 1 do
begin
TotalQty:=TotalQty+FieldByName('Qty').AsInteger;
Next;
end;
Filtered:=false;
EnableControls;
end;
result:=TotalQty;
end;

然后在ADOQueryb的CalcFields事件中
ADOQueryb.FieldByName('balQty').asinteger:=ADOQueryb.FieldByName('TQty').asinteger-self.GetTempQty(FieldByName('product').AsString);

但是报Stack overflow的错,估计是CalcFields事件中代码执行得太频繁而导致的。
有什么办法可以解决啊?
阿三 2009-11-19
  • 打赏
  • 举报
回复
建几个视图进行辅助,看能不能简化下。
课程介绍:          Informatica 9.6 实战课程,将从数据仓库体系架构介绍,服务器搭建配置,实例组件操作,丰富的案例,及项目实战开发过程 来讲述ETL工具Informatica的实际应用,真正完成数据仓库全流程开发应用,ODS层,EDW层,DM层,学完该课程具备ETL软件开发工程师能力水平,能独立完成项目开发工作,从入门到高级项目开发应用,每个实例都载图,课件,教程,数据等,能达到中高级ETL开发能力,本课程的学习要求,一定跟着实例动手实战,操作才能掌握实例的开发步骤,及开发注意事项。每个组件都用具体案例讲解,保证学以致用。掌握ETL的开发技能,搭建数据仓库体系架构。应对各环境操作。具体数据实操与应用。 你将收获:ETL软件开发工程师能力与水平数据仓库体系架构案例综合应用实战ETL实战项目开发数据采集与数据处理数据清洗与数据仓库指标统计学会使用Informatica完成项目开发掌握ETL开发流程掌握数据质量管理 适用人群 数据仓库初学者 数据仓库开发工程师 数据库开发工程师 BI开发工程师 数据可视化工程师大数据开发与应用 数据仓库管理 数据管理 数据分析师 业务数据分析 零基础入门ETL ETL大数据处理 数据仓库体系架构图: 课程大纲:01_Informatica9.6课程导学02_数据仓库体系介绍03_Oracle_安装04_Oracle_配置.wmv05_PLSQL工具汉化破解06_Informatica9.6安装.wmv07_Informatica9.6服务器配置.wmv08_客户端的安装配置连接.wmv09_客户端工具介绍10_源数据介绍11_入门实例EMP_0112_入门实例EMP_0213_入门实例DEPT表14_表达式Fx组件实例115_表达式Fx组件实例216_聚合组件实例17_查找Lookup组件实例18_过滤Filter组件实例19_Informatica9.6 排序sort组件实例详解20_Informatica9.6 分发器Router组件实例21_Informatica9.6 sql连接查询复习22_Informatica9.6 连接查询同构SQ23_Informatica9.6 连接查询异构JOIN24_Informatica9.6 等级函数Rank实例25_Informatica9.6 数据合并Union组件实例26_Informatica9.6 存储过程Px组件实例27_1行转案例sql28_2行转案例ETL过程29_工资大于该职位下平均工资案例30_增量抽取案例31_缓慢变化维案例32_对文件数据的读取写入33_项目1薪酬统计项目介绍34_Informatica 项目1薪酬统计项目接口入库ODS35_Informatica 项目1薪酬统计项目EDW层明细表临时表1sql36_Informatica 项目1薪酬统计项目EDW层明细表临时表2ETL37_Informatica 项目1薪酬统计EDW层明细表138_Informatica 项目1薪酬统计EDW层明细表239_Informatica 项目1薪酬统计EDW层明细表340_Informatica 项目1薪酬统计DM层月考勤统计报表41_Informatica 项目1开发DM层统计报表142_Informatica 项目1开发DM层统计报表243_Informatica 项目1开发DM层统计报表344_Informatica 项目1开发DM层薪资报表145_Informatica 项目1开发DM层薪资报表246_Informatica 项目1开发DM层薪资报表347_Informatica 项目2计费系统项目介绍48_Informatica 项目2计算系统项目ODS层49_Informatica 项目2计费系统EDW层150_Informatica 项目2计费系统EDW层251_Informatica 项目2计费系统EDW层352_Informatica 项目2计费系统DM层 

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧