Foxtable(狐表)用户栏目专家坐堂 → [求助]明明相等,却不知为何执行了?


  共有4132人关注过本帖树形打印复制链接

主题:[求助]明明相等,却不知为何执行了?

帅哥哟,离线,有人找我吗?
wyz20130512
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1249 积分:9480 威望:0 精华:0 注册:2013/5/12 9:22:00
[求助]明明相等,却不知为何执行了?  发帖心情 Post By:2023/11/30 20:57:00 [只看该作者]

二者明明值是相等的,不知为何会弹出提示框?请老师指点!

图片点击可在新窗口打开查看

CurrentChanged代码:

If Forms("应收款").Opened Then
    
    Dim t2 As WinForm.Table = Forms("应收款").Controls("Table2") '子表
    Dim jzhje As WinForm.NumericComboBox = Forms("应收款").Controls("ncb_JZHJE") '记账金额
    Dim fpje As WinForm.NumericComboBox = Forms("应收款").Controls("ncb_fpje") 'fa piao金额
    jzhje.FormatString = "#,###.00"
    fpje.FormatString = "#,###.00"
    If e.Table.Current IsNot Nothing Then
        jzhje.Value = 0 '初始化,以免形成累计值。
        
        '通过For Each Next循环取得当前行所有数值列的总和。
        For Each c As Col In e.Table.Cols
            If c.IsNumeric Then
                jzhje.Value = jzhje.Value + e.Table.Current(c.Name)
            End If
        Next
    End If
'    Filter = "账单编号 = '" & e.Table.Current("账单编号") & "'"
    fpje.Value = t2.Table.Compute("Sum(金额)") + t2.Table.Compute("Sum(税额)")
    
    '若二者金额不一致,则弹出提示框,并将其底色设置为红色。
    If jzhje.Value <> fpje.Value Then
        jzhje.BackColor = Color.Red
        fpje.BackColor = Color.Red
        MessageBox.Show("【记账金额】与【fa piao金额】不相符!" & vbCrLf & "请核查!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
    Else
        jzhje.BackColor = Color.NavajoWhite
        fpje.BackColor = Color.NavajoWhite
    End If 
End If
[此贴子已经被作者于2023/11/30 21:03:25编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111376 积分:566944 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/30 21:26:00 [只看该作者]

调试
dim a as Decimal =  jzhje.Value
dim b as Decimal =  fpje.Value
msgbox(a)
msgbox(b)
msgbox(a=b)
    If a <> b Then
        jzhje.BackColor = Color.Red

 回到顶部
帅哥哟,离线,有人找我吗?
wyz20130512
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1249 积分:9480 威望:0 精华:0 注册:2013/5/12 9:22:00
  发帖心情 Post By:2023/12/1 8:59:00 [只看该作者]

图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111376 积分:566944 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/1 9:01:00 [只看该作者]

控件是不是绑定列,把绑定的列改为高精度列

 回到顶部
帅哥哟,离线,有人找我吗?
wyz20130512
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1249 积分:9480 威望:0 精华:0 注册:2013/5/12 9:22:00
  发帖心情 Post By:2023/12/1 9:05:00 [只看该作者]

没有绑定,数值列均为“双精度”。

 回到顶部
帅哥哟,离线,有人找我吗?
wyz20130512
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1249 积分:9480 威望:0 精华:0 注册:2013/5/12 9:22:00
  发帖心情 Post By:2023/12/1 9:25:00 [只看该作者]

这是不是二进制在处理小数时的缺陷?

If CInt(jzhje.Value) <> CInt(fpje.Value) Then
        jzhje.BackColor = Color.Red
        fpje.BackColor = Color.Red
        MessageBox.Show("【记账金额】与【fa piao金额】不相符!" & vbCrLf & "请核查!", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning)
    Else
        jzhje.BackColor = Color.NavajoWhite
        fpje.BackColor = Color.NavajoWhite
    End If 

将其转换为整数,问题解决了,但仍旧不明白为什么会出现计算的误差。

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111376 积分:566944 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/1 9:29:00 [只看该作者]

请上传实例测试

 回到顶部
帅哥哟,离线,有人找我吗?
wyz20130512
  8楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1249 积分:9480 威望:0 精华:0 注册:2013/5/12 9:22:00
  发帖心情 Post By:2023/12/1 10:30:00 [只看该作者]

图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
wyz20130512
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1249 积分:9480 威望:0 精华:0 注册:2013/5/12 9:22:00
  发帖心情 Post By:2023/12/1 10:31:00 [只看该作者]

上传附件失败?

 回到顶部
帅哥哟,离线,有人找我吗?
wyz20130512
  10楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1249 积分:9480 威望:0 精华:0 注册:2013/5/12 9:22:00
  发帖心情 Post By:2023/12/1 10:31:00 [只看该作者]

图片点击可在新窗口打开查看

 回到顶部
总数 22 1 2 3 下一页