使用组合框的值格式化未绑定文本框

问题描述 投票:1回答:2

新手/中级访问用户。

我在MS Access(O365 ProPlus)中有一个表单,该表单具有一个基于六列查询的ComboBox。

AfterUpdate,我想从ComboBox的列中提取Value并将其填充在未绑定的文本框中。但是,格式必须为“货币”,并且不能正确设置文本框的“表单属性”字段中的“货币”格式。

我曾尝试以这种方式获得有限的成功来拉出ComboBox列值时尝试在Control Source属性中设置格式。它显示了货币格式,但是当我稍后尝试在文本框中使用该值以在表单上其他位置的计算(总)总值字段中使用时,它仅被识别为文本。

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

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

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

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

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

vba ms-access access-vba ms-access-forms
2个回答
0
投票

使用具有Currency参数的Format()函数会导致带有$符号的字符串。加号(+)字符是旧BASIC和算术运算符遗留下来的连接运算符。在某些情况下,连接将具有优先级,就像您在窗体上的文本框遇到的那样。

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

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

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


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))

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

© www.soinside.com 2019 - 2024. All rights reserved.