以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]这段代码存在什么问题? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=40464) |
||||
-- 作者:zyqzyy -- 发布时间:2013/9/20 22:09:00 -- [求助]这段代码存在什么问题? ‘实现目的:数量由单次用量和规格自动算出,不足一个包装单位时按一个包装单位计算。规格为整数时运行正常,规格为小数时出现错误:试图除以零。 Dim dr As DataRow = e.DataRow
|
||||
-- 作者:有点甜 -- 发布时间:2013/9/20 22:22:00 -- 100 mod 0.5 这样是不行的。 mod 的后面,必须是整数。
|
||||
-- 作者:zyqzyy -- 发布时间:2013/9/20 22:36:00 -- 比如试剂的规格经常是0.5mg、0.2g,等等,如何办呢? |
||||
-- 作者:逛逛 -- 发布时间:2013/9/20 22:39:00 -- 乘10 除10 |
||||
-- 作者:有点甜 -- 发布时间:2013/9/20 22:40:00 -- 你适当变通一下 (dr("单次用量") * 10) Mod (dr("规格") * 10)
|
||||
-- 作者:zyqzyy -- 发布时间:2013/9/20 22:42:00 -- 5 mod 1.5 能正常运行,5 mod 0.5 却不能运行,不知何故? [此贴子已经被作者于2013-9-20 22:42:36编辑过]
|
||||
-- 作者:zyqzyy -- 发布时间:2013/9/20 22:55:00 -- 故障依旧,闹心! |
||||
-- 作者:有点甜 -- 发布时间:2013/9/20 23:51:00 -- 测试良久,发觉必须改成如下方能正常。不知其原因 Dim dr As DataRow = e.DataRow Select Case e.DataCol.Name Case "规格", "单次用量", "单价" Dim b1 As Boolean = ((dr("单次用量")*10) Mod (dr("规格")*10) <> 0) Dim b2 As Boolean = ((dr("单次用量")*10) Mod (dr("规格")*10) = 0) If dr.Isnull("规格") OrElse dr.Isnull("单次用量") Then dr("数量") = Nothing dr("金额") = Nothing ElseIf dr("单次用量") / dr("规格") <= 1 Then dr("数量") = 1 ElseIf dr("单次用量") / dr("规格") > 1 AndAlso b1 dr("数量") = (dr("单次用量") * 10) \\ (dr("规格") * 10) + 1 ElseIf b2 dr("数量") = (dr("单次用量") * 10) \\ (dr("规格") * 10) End If End Select dr("金额") = dr("单价") * dr("数量") * dr("频次") * dr("天数") |
||||
-- 作者:zyqzyy -- 发布时间:2013/9/21 0:03:00 -- 万分感谢,困惑了多天的问题在您这儿得到无私的帮助。再次感谢! |
||||
-- 作者:程兴刚 -- 发布时间:2013/9/21 1:13:00 -- 以下是引用zyqzyy在2013-9-20 22:42:00的发言:
5 mod 1.5 能正常运行,5 mod 0.5 却不能运行,不知何故? [此贴子已经被作者于2013-9-20 22:42:36编辑过]
因为余数不能小于1 |