两个dw数据相加的问题。在线等待,急死我了。

chdd 2002-04-06 02:51:36
我有:
型号 数量
dw_1 a 1
dw_2 a -1
想把dw_1中和dw_2中相同型号的数量提取出来计算后,放到dw_3中显示,并将数量添加到一个表A中。即:
dw_3 a 0
并且等下次再用的时候,要先清空表A中的数据,再重复刚开始的计算。
...全文
107 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rasky 2002-06-18
  • 打赏
  • 举报
回复
回复daixf_csdn,
别忘了,他的计算条件是:
dw_1中和dw_2中相同型号的数量提取出来计算后,放到dw_3中显示,并将数量添加到一个表A中。
所以,根本不用考虑你说的那种情况
lesni 2002-04-07
  • 打赏
  • 举报
回复
dw_3的SqlSelect:
select a.name,a.count + b.count from a,b where a.name = b.name and ...
省略部分为原数据窗口的其他条件。
grt 2002-04-07
  • 打赏
  • 举报
回复
用游标也可以做,把dw1先插进表3,dw2根据相同型号的条件,数量相加后update,如果没有相同型号的记录就用插入作为表3的新记录。
圣殿骑士18 2002-04-06
  • 打赏
  • 举报
回复
上述方法有问题!!
关键是可能表1有的型号表2没有,或者刚好相反。
所以无论以表1还是表2作为双重循环的
第一重循环都不行,可能丢失某表的型号的数据。
应该如下解决:
1。首先要将表1,2的型号union得到记录集
2.根据型号记录集作循环,将两表的数据相加(如果某表没有此型号则为0)。
Rasky 2002-04-06
  • 打赏
  • 举报
回复
那就麻烦了,用方法2把逐个取出来相加再放回dw_3
long i, ll_row, ll_ins
string ls_xh//型号
decimal ld_sl//数量
for i = 1 to dw_1.rowcount()
ls_xh = dw_1.getitemstring(i, 'xh')
ll_row = dw_2.find("xh='"+ls_xh+"'",1, dw_2.rowcount())
if ll_row > 0 then
ld_sl = dw_1.getitemdecimal(i, 'sl')+dw_2.getitemdecimal(i,'sl')
else
ld_sl = dw_1.getitemdecimal(i, 'sl')
end if
if ld_sl > 0 then
ll_ins = dw_3.insert(0)
dw_3.setitem(ll_ins, 'xh', ls_xh)
dw_3.setitem(ll_ins, 'sl', ld_sl)
end if
next
if dw_3.update() > 0 then
commit;
else
rollback;
end if
考虑一下吧!不知道管不管用,没试过的

chdd 2002-04-06
  • 打赏
  • 举报
回复
我的表是从两个数据库中提取出来的。
zuoyangguang 2002-04-06
  • 打赏
  • 举报
回复
up
Rasky 2002-04-06
  • 打赏
  • 举报
回复
方法一好像好点,计算和的工作可交给数据窗口做
你只要把数据取出来放到dw_3中就可以了
banalman 2002-04-06
  • 打赏
  • 举报
回复
问题可这样解决 :
方法一 1 :建立两表的连接,如果是两张表是普通连接,通过型号即可
2 :计算数量之和,
3 :生成第三个数据窗的响应数据
方法二 通过程序
string ls_type1[],ls_type2,ls_type3//分别存储三个数据窗的型号数值
decimal ldec_num1[],ldec_num2[],ldec_num3[]//分别存储dw_1和dw_2 ,dw_3的数量字段的数值

ls_type1=dw_1.object.型号
ls_type2=dw_2.object.型号

ldec_num1=dw_1.object.数量
ldec_num2=dw_2.object.数量
int p=1
for i=1 to uperbound(ls_type1)
ls_type_tem=ls_type1[i]
for j=1 to uperbound(ls_type2)
if ls_type2 [j]=ls_type_tem then
ls_type3[p]=ls_type_tem
ldec_num3[p]=ldec_num1[i]+ldec_num2[j]
p=p+1
exit
else
continue
end if
next
next
//在数据窗3中插入响应的记录
if uperbound(ls_type3) >0 then
for q=1 to uperbound(ls_type3)
dw_3.object.data[q,1]=ls_type3[q] //型号
dw_3.object.data[q,2]=ldec_num3[q] //数量
next
end if
//如果数据窗仅供显示,可不必更新这样可不知是否符合你的需求?
圣殿骑士18 2002-04-06
  • 打赏
  • 举报
回复
笨办法,用循环解决吧。

chdd 2002-04-06
  • 打赏
  • 举报
回复
最好给出源码,我刚开始学习编程,请大家多多帮助。

1,079

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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