使用 ComboBox 中的值格式化未绑定的文本框

Formatting Unbound Text Box with Value from ComboBox

初级/中级访问用户。

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

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

我曾尝试在控制源 属性 中设置格式,当时以这种方式提取 ComboBox 列值,但收效甚微。它显示了货币格式,但是当我稍后尝试使用文本框中的值以用于表单其他地方的计算(总和)总值字段时,它仅被识别为文本。

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

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

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

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

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

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

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

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

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

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

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

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

然后使用 Val:

将值转换为数字
TotalValueTextbox = Val(Combobox1.Column(5)) + Val(Combobox1.Column(6)) +Val(Combobox1.Column(7))

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