Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共22 条记录, 每页显示 10 条, 页签: [1] [2][3]
[浏览完整版]

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

1楼
wyz20130512 发表于: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楼
有点蓝 发表于: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
3楼
wyz20130512 发表于:2023/12/1 8:59:00
图片点击可在新窗口打开查看
4楼
有点蓝 发表于:2023/12/1 9:01:00
控件是不是绑定列,把绑定的列改为高精度列
5楼
wyz20130512 发表于:2023/12/1 9:05:00
没有绑定,数值列均为“双精度”。
6楼
wyz20130512 发表于: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楼
有点蓝 发表于:2023/12/1 9:29:00
请上传实例测试
8楼
wyz20130512 发表于:2023/12/1 10:30:00
图片点击可在新窗口打开查看
9楼
wyz20130512 发表于:2023/12/1 10:31:00
上传附件失败?
10楼
wyz20130512 发表于:2023/12/1 10:31:00
图片点击可在新窗口打开查看
共22 条记录, 每页显示 10 条, 页签: [1] [2][3]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03711 s, 2 queries.