Access 是将数字并排书写,而不是将它们相加
Access is writing numbers next to each other instead of adding them up
我想添加一些列表字段,如果我按下按钮,这些字段会填充 table 中的数字。对于调试,我选择了简单的值。
下面第一个字段应该是所有字段的平均值,第二个应该是总和,第三个应该是每列的总和乘以一定的百分比然后求和(公式&图片如下).
默认情况下,如果没有给出百分比值,它应该只显示总和。
这是问题所在:
无论是否给出百分比,一切都按预期正常工作:
除非我在第 2 行中输入值或值:
。
然后,通常显示总和(每隔一行正确)的字段只是将每行的每个数字放在一起,而不是将它们相加。如果给出百分比,也会发生这种情况。
如果我清空第 2 行,它会再次正常工作。
我无法解释为什么会这样,有人知道为什么吗?
最后一个字段的公式是:
(CB
是第 1 列,OF
是第 2 列,AS
是第 3 列,[FehlleistungXX]
是具有百分比值的字段:)
=0+Nz([DeltaDetailCB1]+[DeltaDetailCB2]+[DeltaDetailCB3]+[DeltaDetailCB4]+[DeltaDetailCB5]+[DeltaDetailCB6]+[DeltaDetailCB7]+[DeltaDetailCB8]+[DeltaDetailCB9]+[DeltaDetailCB10]+[DeltaDetailCB11]+[DeltaDetailCB12]+[DeltaDetailCB13]+[DeltaDetailCB14]+[DeltaDetailCB15]+[DeltaDetailCB16];0)*Nz(1+[FehlleistungCB]*0,01;0)
+Nz([DeltaDetailAS1]+[DeltaDetailAS2]+[DeltaDetailAS3]+[DeltaDetailAS4]+[DeltaDetailAS5]+[DeltaDetailAS6]+[DeltaDetailAS7]+[DeltaDetailAS8]+[DeltaDetailAS9]+[DeltaDetailAS10]+[DeltaDetailAS11]+[DeltaDetailAS12]+[DeltaDetailAS13]+[DeltaDetailAS14]+[DeltaDetailAS15]+[DeltaDetailAS16];0)*Nz(1+[FehlleistungAS]*0,01;0)
+Nz([DeltaDetailOF1]+[DeltaDetailOF2]+[DeltaDetailOF3]+[DeltaDetailOF4]+[DeltaDetailOF5]+[DeltaDetailOF6]+[DeltaDetailOF7]+[DeltaDetailOF8]+[DeltaDetailOF9]+[DeltaDetailOF10]+[DeltaDetailOF11]+[DeltaDetailOF12]+[DeltaDetailOF13]+[DeltaDetailOF14]+[DeltaDetailOF15]+[DeltaDetailOF16];0)*Nz(1+[FehlleistungOF]*0,01;0)
编辑 1: 我尝试删除字段并用其他字段的副本替换它们,但没有解决问题。
首先,我建议将每个字段包含在 Nz
表达式中,而不是选择性地将计算表达式包含在 Nz
表达式中,即:
=
(
(
Nz([DeltaDetailCB1],0)+
Nz([DeltaDetailCB2],0)+
Nz([DeltaDetailCB3],0)+
Nz([DeltaDetailCB4],0)+
Nz([DeltaDetailCB5],0)+
Nz([DeltaDetailCB6],0)+
Nz([DeltaDetailCB7],0)+
Nz([DeltaDetailCB8],0)+
Nz([DeltaDetailCB9],0)+
Nz([DeltaDetailCB10],0)+
Nz([DeltaDetailCB11],0)+
Nz([DeltaDetailCB12],0)+
Nz([DeltaDetailCB13],0)+
Nz([DeltaDetailCB14],0)+
Nz([DeltaDetailCB15],0)+
Nz([DeltaDetailCB16],0)
) *
(1+(Nz([FehlleistungCB],0)*0.01))
)
+
(
(
Nz([DeltaDetailAS1],0)+
Nz([DeltaDetailAS2],0)+
Nz([DeltaDetailAS3],0)+
Nz([DeltaDetailAS4],0)+
Nz([DeltaDetailAS5],0)+
Nz([DeltaDetailAS6],0)+
Nz([DeltaDetailAS7],0)+
Nz([DeltaDetailAS8],0)+
Nz([DeltaDetailAS9],0)+
Nz([DeltaDetailAS10],0)+
Nz([DeltaDetailAS11],0)+
Nz([DeltaDetailAS12],0)+
Nz([DeltaDetailAS13],0)+
Nz([DeltaDetailAS14],0)+
Nz([DeltaDetailAS15],0)+
Nz([DeltaDetailAS16],0)
) *
(1+(Nz([FehlleistungAS],0)*0.01))
)
+
(
(
Nz([DeltaDetailOF1],0)+
Nz([DeltaDetailOF2],0)+
Nz([DeltaDetailOF3],0)+
Nz([DeltaDetailOF4],0)+
Nz([DeltaDetailOF5],0)+
Nz([DeltaDetailOF6],0)+
Nz([DeltaDetailOF7],0)+
Nz([DeltaDetailOF8],0)+
Nz([DeltaDetailOF9],0)+
Nz([DeltaDetailOF10],0)+
Nz([DeltaDetailOF11],0)+
Nz([DeltaDetailOF12],0)+
Nz([DeltaDetailOF13],0)+
Nz([DeltaDetailOF14],0)+
Nz([DeltaDetailOF15],0)+
Nz([DeltaDetailOF16],0)
) *
(1+(Nz([FehlleistungOF],0)*0.01))
)
我怀疑 Nz
函数返回的值被解释为带有加法运算符 (+
) 的字符串,然后用于连接每个 [=11] 返回的字符串=] 表达式.
如果我的代码产生相同的结果,您可以通过将整个表达式包含在 CDbl()
.
中来强制数据类型转换
但是,我必须说,在单个表达式中重复这么多字段是一个危险信号,表明您的数据库设计不佳。
我想添加一些列表字段,如果我按下按钮,这些字段会填充 table 中的数字。对于调试,我选择了简单的值。
下面第一个字段应该是所有字段的平均值,第二个应该是总和,第三个应该是每列的总和乘以一定的百分比然后求和(公式&图片如下).
默认情况下,如果没有给出百分比值,它应该只显示总和。
这是问题所在:
无论是否给出百分比,一切都按预期正常工作:
除非我在第 2 行中输入值或值:
然后,通常显示总和(每隔一行正确)的字段只是将每行的每个数字放在一起,而不是将它们相加。如果给出百分比,也会发生这种情况。
如果我清空第 2 行,它会再次正常工作。
我无法解释为什么会这样,有人知道为什么吗?
最后一个字段的公式是:
(CB
是第 1 列,OF
是第 2 列,AS
是第 3 列,[FehlleistungXX]
是具有百分比值的字段:)
=0+Nz([DeltaDetailCB1]+[DeltaDetailCB2]+[DeltaDetailCB3]+[DeltaDetailCB4]+[DeltaDetailCB5]+[DeltaDetailCB6]+[DeltaDetailCB7]+[DeltaDetailCB8]+[DeltaDetailCB9]+[DeltaDetailCB10]+[DeltaDetailCB11]+[DeltaDetailCB12]+[DeltaDetailCB13]+[DeltaDetailCB14]+[DeltaDetailCB15]+[DeltaDetailCB16];0)*Nz(1+[FehlleistungCB]*0,01;0)
+Nz([DeltaDetailAS1]+[DeltaDetailAS2]+[DeltaDetailAS3]+[DeltaDetailAS4]+[DeltaDetailAS5]+[DeltaDetailAS6]+[DeltaDetailAS7]+[DeltaDetailAS8]+[DeltaDetailAS9]+[DeltaDetailAS10]+[DeltaDetailAS11]+[DeltaDetailAS12]+[DeltaDetailAS13]+[DeltaDetailAS14]+[DeltaDetailAS15]+[DeltaDetailAS16];0)*Nz(1+[FehlleistungAS]*0,01;0)
+Nz([DeltaDetailOF1]+[DeltaDetailOF2]+[DeltaDetailOF3]+[DeltaDetailOF4]+[DeltaDetailOF5]+[DeltaDetailOF6]+[DeltaDetailOF7]+[DeltaDetailOF8]+[DeltaDetailOF9]+[DeltaDetailOF10]+[DeltaDetailOF11]+[DeltaDetailOF12]+[DeltaDetailOF13]+[DeltaDetailOF14]+[DeltaDetailOF15]+[DeltaDetailOF16];0)*Nz(1+[FehlleistungOF]*0,01;0)
编辑 1: 我尝试删除字段并用其他字段的副本替换它们,但没有解决问题。
首先,我建议将每个字段包含在 Nz
表达式中,而不是选择性地将计算表达式包含在 Nz
表达式中,即:
=
(
(
Nz([DeltaDetailCB1],0)+
Nz([DeltaDetailCB2],0)+
Nz([DeltaDetailCB3],0)+
Nz([DeltaDetailCB4],0)+
Nz([DeltaDetailCB5],0)+
Nz([DeltaDetailCB6],0)+
Nz([DeltaDetailCB7],0)+
Nz([DeltaDetailCB8],0)+
Nz([DeltaDetailCB9],0)+
Nz([DeltaDetailCB10],0)+
Nz([DeltaDetailCB11],0)+
Nz([DeltaDetailCB12],0)+
Nz([DeltaDetailCB13],0)+
Nz([DeltaDetailCB14],0)+
Nz([DeltaDetailCB15],0)+
Nz([DeltaDetailCB16],0)
) *
(1+(Nz([FehlleistungCB],0)*0.01))
)
+
(
(
Nz([DeltaDetailAS1],0)+
Nz([DeltaDetailAS2],0)+
Nz([DeltaDetailAS3],0)+
Nz([DeltaDetailAS4],0)+
Nz([DeltaDetailAS5],0)+
Nz([DeltaDetailAS6],0)+
Nz([DeltaDetailAS7],0)+
Nz([DeltaDetailAS8],0)+
Nz([DeltaDetailAS9],0)+
Nz([DeltaDetailAS10],0)+
Nz([DeltaDetailAS11],0)+
Nz([DeltaDetailAS12],0)+
Nz([DeltaDetailAS13],0)+
Nz([DeltaDetailAS14],0)+
Nz([DeltaDetailAS15],0)+
Nz([DeltaDetailAS16],0)
) *
(1+(Nz([FehlleistungAS],0)*0.01))
)
+
(
(
Nz([DeltaDetailOF1],0)+
Nz([DeltaDetailOF2],0)+
Nz([DeltaDetailOF3],0)+
Nz([DeltaDetailOF4],0)+
Nz([DeltaDetailOF5],0)+
Nz([DeltaDetailOF6],0)+
Nz([DeltaDetailOF7],0)+
Nz([DeltaDetailOF8],0)+
Nz([DeltaDetailOF9],0)+
Nz([DeltaDetailOF10],0)+
Nz([DeltaDetailOF11],0)+
Nz([DeltaDetailOF12],0)+
Nz([DeltaDetailOF13],0)+
Nz([DeltaDetailOF14],0)+
Nz([DeltaDetailOF15],0)+
Nz([DeltaDetailOF16],0)
) *
(1+(Nz([FehlleistungOF],0)*0.01))
)
我怀疑 Nz
函数返回的值被解释为带有加法运算符 (+
) 的字符串,然后用于连接每个 [=11] 返回的字符串=] 表达式.
如果我的代码产生相同的结果,您可以通过将整个表达式包含在 CDbl()
.
但是,我必须说,在单个表达式中重复这么多字段是一个危险信号,表明您的数据库设计不佳。