Форматирование несвязанного текстового поля со значением из ComboBox - PullRequest
1 голос
/ 05 октября 2019

Новичок / Пользователь с промежуточным доступом.

У меня есть форма в MS Access (O365 ProPlus), которая имеет ComboBox, основанный на запросе из шести столбцов.

После обновления я хочу извлечь значение из столбца ComboBox и заполнить его в несвязанном текстовом поле. Однако форматирование должно быть «Валютой», и оно неправильно переносится из настройки форматирования «Валюта» в поле «Свойства формы» для текстового поля.

Я пытался отформатировать в свойстве Control Source при извлечении значений столбца ComboBox таким способом, который имел ограниченный успех. В нем отображался формат «Валюта», но когда я позже пытаюсь использовать значение в текстовом поле для использования в вычисляемом (итоговом) общем значении поля в другом месте формы, оно распознается только как текст.

Текстовое поле TotalValue объединяет текстовые поля только со знаками доллара в валюте.

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

Ожидаемые результаты - одно число, складывающее числовые значения вышеупомянутых текстовых полей. Вместо этого я получаю number1number2number3, как будто я объединяю текстовые строки.

Формат валюты (если он работает в предыдущих текстовых полях) идет со знаком доллара, но десятичные дроби не переносятся, и он объединяет значения вместо их добавления.

Я даже попытался добавить текстовое поле третичного теста и сделал его значение Control Source равным 12 разам (произвольное значение) одного из текстовых полей, и оно умножилось правильно, но когда задействовано несколько текстовых полей с использованием вычисления суммы, как указановыше это не сработало.

Ответы [ 2 ]

0 голосов
/ 05 октября 2019

Проблема в том, что комбинированный список всегда возвращает текст. Если вы введете его в виде чисел или валюты, они будут отформатированы с использованием настроек по умолчанию.

Итак, добавьте несколько дополнительных столбцов для хранения ваших сумм без форматирования валюты, но выведите текст с помощью 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 как Валюта и в Combobox1 установите ширину столбцов дополнительных столбцов равной 0 (нулю).

0 голосов
/ 05 октября 2019

Использование функции Format () с параметром Currency приводит к строке со знаком $. Символ «плюс» (+) является оператором конкатенации, оставшимся от старого бейсика, а также арифметическим оператором. Конкатенация будет иметь приоритет в некоторых ситуациях, как вы столкнулись с текстовыми полями в форме.

Вместо форматирования данных в форме, поместите $ в метку рядом с текстовым полем.

В противном случае рассчитайте с прямой ссылкой на столбцы комбинированного списка.

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

...