Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]希望“西出阳关无故人”老师再指点一下

qinghe  发表于:2020-11-16 09:58:23  
复制

因为原帖http://www.accessoft.com/bbs/showtopic.asp?id=32090不能上传图片附件,我在这里重新再发一个提问帖,希望得到“西出阳关无故人”老师的指导。

R20000 = $5
R10000 =$2.5
R5000 = $1.25
R2000 = $0.5
R1000 =$0.25
R500 = $0.125

R100 = $0.025

我用下面的方法进行计算
DoCmd.RunSQL "UPDATE Source_FaceValueDistributionPlan SET Source_FaceValueDistributionPlan.U100 = Int(round([应发],1)/100);"
    DoCmd.RunSQL "UPDATE Source_FaceValueDistributionPlan SET Source_FaceValueDistributionPlan.U50 = Int((round([应发],1)-U100*100)/50);"
    DoCmd.RunSQL "UPDATE Source_FaceValueDistributionPlan SET Source_FaceValueDistributionPlan.U20 = int((round([应发],1)-U100*100-U50*50)/20);"
    DoCmd.RunSQL "UPDATE Source_FaceValueDistributionPlan SET Source_FaceValueDistributionPlan.U10 = Int((round([应发],1)-U100*100-U50*50-U20*20)/10);"
    DoCmd.RunSQL "UPDATE Source_FaceValueDistributionPlan SET Source_FaceValueDistributionPlan.R2W = Int((round([应发],1)-U100*100-U50*50-U20*20-U10*10)/5);"
    DoCmd.RunSQL "UPDATE Source_FaceValueDistributionPlan SET Source_FaceValueDistributionPlan.R1W = Int((round([应发],1)-U100*100-U50*50-U20*20-U10*10-R2W*5)/2.5);"
    DoCmd.RunSQL "UPDATE Source_FaceValueDistributionPlan SET Source_FaceValueDistributionPlan.R5K = Int((round([应发],1)-U100*100-U50*50-U20*20-U10*10-R2W*5-R1W*2.5)/1.25)"
    DoCmd.RunSQL "UPDATE Source_FaceValueDistributionPlan SET Source_FaceValueDistributionPlan.R2K = Int((round([应发],1)-U100*100-U50*50-U20*20-U10*10-R2W*5-R1W*2.5-R5K*1.25)/0.5);"
    DoCmd.RunSQL "UPDATE Source_FaceValueDistributionPlan SET Source_FaceValueDistributionPlan.R1K =Int((round([应发],1)-U100*100-U50*50-U20*20-U10*10-R2W*5-R1W*2.5-R5K*1.25-R2K*0.5)/0.25);"
    DoCmd.RunSQL "UPDATE Source_FaceValueDistributionPlan SET Source_FaceValueDistributionPlan.Hu5 = Int((round([应发],1)-U100*100-U50*50-U20*20-U10*10-R2W*5-R1W*2.5-R5K*1.25-R2K*0.5-R1K*0.25)/0.125);"
    DoCmd.RunSQL "UPDATE Source_FaceValueDistributionPlan SET Source_FaceValueDistributionPlan.Hu1 = 100*int(40*([应发]-U100*100-U50*50-U20*20-U10*10-R2W*5-R1W*2.5-R5K*1.25-R2K*0.5-R1K*0.25-Hu5*0.125)+0.5)/100;"


得到了一些数据为-1的结果。这显然是错误的。
希望得到纠正指导!


再次感谢“西出阳关无故人”老师在原帖的耐心回复!


 

Top
西出阳关无故人 发表于:2020-11-16 14:25:42
问题出在    (round([应发],1)    中.这里的意义是取[应发]的值到1位小数(第二位进行四舍五入),导致应发实际参与计算的数据变化,使得结果不对.要不改为    (round([应发],3)    或直接用    [应发]    .

qinghe 发表于:2020-11-16 15:47:06
谢谢老师

qinghe 发表于:2020-11-16 15:58:00


qinghe 发表于:2020-11-16 16:15:18


总记录:4篇  页次:1/1 9 1 :