1

新手/中级访问用户。

我在 MS Access (O365 ProPlus) 中有一个表单,它有一个基于六列查询的组合框。

更新后,我想从 ComboBox 的列中提取值并将其填充到未绑定的文本框中。但是,格式必须是货币,并且它不能从文本框的表单属性字段中设置货币格式正确继承。

当以这种方式拉取 ComboBox 列值时,我尝试在 Control Source 属性中进行格式化,但这种方式的成功有限。它显示了货币格式,但是当我稍后尝试使用文本框中的值以用于表单上其他地方的计算(总和)总价值字段时,它仅被识别为文本。

文本框仅将TotalValue文本框与货币美元符号连接起来。

Combobox1_AfterUpdate: ()
Textbox1 = Combobox1.Column (2)
Textbox2 = Combobox1.Column (3)
Textbox3 = Combobox1.Column (4)
TotalValueTextbox = Textbox1 + Textbox2 + Textbox3

预期结果是将上述文本框的数值相加的一个数字。相反,我number1number2number3好像在连接文本字符串。

货币格式(如果它在前面的文本框中有效)带有美元符号,但小数不携带,它连接值而不是添加它们。

我什至尝试添加一个第三级测试文本框,并使其控制源值等于其中一个文本框的 12 倍(任意值),并且它正确相乘,但是当使用上面列出的总和计算涉及多个文本框时,它不起作用.

4

2 回答 2

0

将 Format() 函数与 Currency 参数一起使用会产生一个带有 $ 符号字符的字符串。加号 (+) 字符是旧 BASIC 遗留下来的连接运算符以及算术运算符。在某些情况下,串联将具有优先权,就像您在表单上遇到文本框一样。

不要在表单上格式化数据,而是将 $ 放在文本框旁边的标签中。

否则,直接参考组合框列进行计算。

= Combobox1.Column(2) + Combobox1.Column(3) + Combobox1.Column(4)

于 2019-10-05T04:40:25.000 回答
0

问题是,组合框总是返回文本。如果您输入数字或货币,这些将使用您的默认设置进行格式化。

因此,添加一些额外的列来保存没有货币格式但强制使用Str文本的金额。在组合框的源查询中,添加三列:

Column5: Str([Amount1]
Column6: Str([Amount2]
Column7: Str([Amount3]

然后使用Val将值转换为数字:

TotalValueTextbox = Val(Combobox1.Column(5)) + Val(Combobox1.Column(6)) +Val(Combobox1.Column(7))

最后,将TotalValueTextbox的Format属性指定为Currency,并在 Combobox1 中将额外列的列宽设置为 0(零)。

于 2019-10-05T08:31:50.170 回答