Умножьте каждую запись в столбце Double на десятичное число - PullRequest
0 голосов
/ 25 октября 2019

У меня есть столбец «Цена» типа Double. У меня также есть форма с кнопкой, которая должна открыть поле ввода, чтобы позволить пользователю ввести желаемую сумму скидки, например, пользователь вводит 0,6 (скидка 60%), и вычисление выполнено, 1 - 0,6 = 0, 4. 0,4 - это число, на которое умножается каждая запись в столбце «Цена». Кажется, я не могу заставить это работать.

Одна из моих попыток при вводе 0,5, умноженная только на 5, пропустила 0 до 5., что было странно.

Dim strDiscount As String
Dim discount  As Double
Dim holder As Double
Dim strSQL  As String
Dim dbs     As DAO.Database

Set dbs = CurrentDb

strDiscount = InputBox("Enter how much discount you want:", "Amount of discount")

holder = Val(strDiscount)
discount = (1-holder)
strSQL = "UPDATE Prislista SET Listpris = Listpris *" & _
discount
dbs.Execute strSQL

Одна из попыток выдала сообщение об ошибке, сообщающее, что в моей операционной системе Windows установлено неверное расположение. Кое-что об использовании запятой вместо точки. Ну, у меня есть мой windows и ms-доступ на шведском языке, и для меня не имеет значения, должен ли я использовать запятую или точку при вводе скидки.

Ответы [ 2 ]

2 голосов
/ 25 октября 2019

Во-первых, всегда сохраняйте суммы и количества как Валюта , если достаточно четырех десятичных знаков.

Далее, используйте CCur для преобразования вашего локализованного текста из InputBox в число.

В-третьих, используйте Str для преобразования десятичного числа в его нейтральное строковое выражение.

Затем:

Dim strDiscount As String
Dim discount  As Currency
Dim holder As Currency
Dim strSQL  As String
Dim dbs     As DAO.Database

Set dbs = CurrentDb

strDiscount = InputBox("Enter how much discount you want:", "Amount of discount")

holder = CCur(strDiscount)
discount = (1 - holder)
strSQL = "UPDATE Prislista SET Listpris = Listpris * " & Str(discount) & ""
dbs.Execute strSQL

Пример:

strDiscount = "0,6"
holder = CCur(strDiscount)
discount = 1 - holder
? Str(discount)
 .4
0 голосов
/ 25 октября 2019

В то время как пользовательский интерфейс в доступе будет использовать ваши локальные настройки, VBA использует только настройки США.

Так что вам нужно конвертировать 0,5 в 0.5.

Ниже должно работать:

holder = Val(Replace(strDiscount,",","."))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...