二者明明值是相等的,不知为何会弹出提示框?请老师指点!
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编辑过]
调试
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
这是不是二进制在处理小数时的缺陷?
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
将其转换为整数,问题解决了,但仍旧不明白为什么会出现计算的误差。