126个字段的乘积求和

yjrryyx 2009-04-16 01:56:18
我有二个表:hj1,hj2

hj1是姓名和产量表:

姓名 产1 产2 产3 ....产126 合计金额

王一 50 20 30
张三 100 100 20
...
...

hj2是单价表:

产1 产2 产3 ....产126
12.5 13.6 18.2

现在要求王一及所有人的合计金额:50*12.5+20*13.6+30*18.2=822元

如何写代码,好像是要先循环hj2表的所有字段
hj=0
for gnCount = 1 TO FCOUNT( )

hj=hj+
endf
我晕头转向不知代码怎么样写,请高手指点,谢谢!






...全文
116 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
WWWWA 2009-04-16
  • 打赏
  • 举报
回复
CLEAR ALL
SELECT 2
USE hj2
ff=''
FOR i=1 TO 3
ff=ff+'产'+TRANSFORM(i)+'*hj2.产'+TRANSFORM(i)+'+'
ENDFOR
ff='update dd set hj1='+LEFT(ff,LEN(ff)-1)
?ff
&ff

这种方法不推荐,不灵活,字段名是固定的
yjrryyx 2009-04-16
  • 打赏
  • 举报
回复
我之所以暂不结贴,主要是等另一高手APPLE_8180的解答,现在我已满足了,因我已说话在先,故分全给WWWWA一个人了,再次谢谢APPLE_8180的解答,为让更多的新手有学习的机会,16点结贴,新手们赶快留足迹了!
十豆三 2009-04-16
  • 打赏
  • 举报
回复
Use hj2 &&如果hj2只有一条记录
lcString="Update hj1 Set 合计金额=0"
For lnI=1 To 126
lcString=lcString+"+hj1.产"+Transform(lnI)+"*hj2.产"+Transform(lnI)
Endfor
&lcString.
WWWWA 2009-04-16
  • 打赏
  • 举报
回复
点管理结贴吧
WWWWA 2009-04-16
  • 打赏
  • 举报
回复
其实
姓名 产1 产2 产3 ....产126 合计金额
这种形式可以通过交叉表来实现
表结构
姓名 项目 数量
王一 产1 50
王一 产2 20
王一 产3 30
select 姓名,sum(iif(项目='产1',数量,0)) as 产1....
from tt group by 姓名
yjrryyx 2009-04-16
  • 打赏
  • 举报
回复
顶尖高手啊,我用你一楼的代码测试完全正确,100分全归你了!
这是车间里的计件表全是用EXCEL做的,便于车间主任可视化的看到所的人的产量,每个人的计件总额通过手工加起来的,我现在把它导出来为二个表,这样就便于计算了。
再次谢谢你,如在浙江湖州我请你吃饭!
WWWWA 2009-04-16
  • 打赏
  • 举报
回复
1、假设你的字段为N型,合计金额为HJ
2、表结构不合理,否则用连接就OK了。

姓名 项目 数量
王一 产1 50
王一 产2 20
王一 产3 30
hj2:
项目 价格
产1 12.5
产2 13.6
产3 18.3

select 姓名,sum(数量*价格) as hj
from tt a inner join hj2 b
on a.项目=b.项目
group by 姓名
WWWWA 2009-04-16
  • 打赏
  • 举报
回复
示例:
CLEAR ALL
SELECT 1
USE dd
dd1=AFIELDS(aa1,'dd')
FF=''
SELECT 2
USE HJ2
FOR i=1 TO ALEN(AA1,1)
IF aa1(i,2)='N' AND AA1(I,1)<>'HJ'
FF=FF+AA1(I,1)+'*'+TRANSFORM(&AA1(I,1))+'+'
ENDI
ENDFOR
FF=LEFT(FF,LEN(FF)-1)
SELECT 1
REPLACE ALL HJ WITH &FF

2,748

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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