Как умножить все записи в столбце на значение из текстового поля?

У меня есть таблица со столбцом NUMBER под названием «Цена». У меня также есть форма с текстовым полем, в котором пользователь вводит процент (например, 0,9), и кнопка, которая при нажатии будет умножать все записи в Price на это число из текстового поля. У меня это не работает.

Эти первые 2 примера предназначены только для проверки основного случая, который вообще не является переменной.

Dim strSQL  As String
Dim dbs     As DAO.Database

Set dbs = CurrentDb

strSQL = "UPDATE table_name SET Price = 20;"
dbs.Execute strSQL

Я попробовал вышеописанное, но умножил цену на 20 следующим образом: (это работает)

strSQL = "UPDATE table_name SET Price = Price * 20;"

Я знаю, что переменная работает, написав следующие строки:

Dim textVariable AS Double
Textbox.SetFocus
textVariable = Textbox

MsgBox (textVariable)

Но это не работает внутри оператора SQL:

Dim textVariable As Double
Dim strSQL  As String
Dim dbs     As DAO.Database

Set dbs = CurrentDb

Textbox.SetFocus
textVariable = Textbox

strSQL = "UPDATE table_name SET Price = Price * textVariable;"
dbs.Execute strSQL

Сообщение об ошибке: «Ошибка времени выполнения« 3061 »- слишком мало параметров, ожидается 1». В режиме отладки "dbs.Execute strSQL" выделен желтым цветом.


person Tesel    schedule 20.08.2019    source источник


Ответы (1)


Чтобы поместить переменную в строку SQL, вам нужно построить ее из вашей переменной, так как в настоящее время вы умножаете столбец Price на «textVariable» вместо значения, хранящегося в нем.

strSQL = "UPDATE table_name SET Price = Price * " & textVariable & ";"

Кроме того, вероятно, было бы неплохо также проверить, чтобы значение, введенное в TextBox, было допустимым числом, либо в коде, либо в установке ограничения для самого текстового поля, так как в настоящее время ваш код будет генерировать исключение несоответствия типа, если значение в текстовом поле не является допустимым двойным значением.

person Dawn Rose    schedule 20.08.2019
comment
Это сработало, но, похоже, не работает с десятичными числами, такими как 0,9 или 0,9. При вводе 0,9 или 0,9 умножается на 9. Что я делаю не так? - person Tesel; 20.08.2019
comment
Я тестировал его, используя InputBox, а не текстовое поле в форме, и это правильно умножается на десятичное число. Я бы рекомендовал использовать Debug.Print, чтобы проверить, какое значение вы извлекаете из TextBox, проблема может быть связана с тем, что сам TextBox не имеет правильного формата значения и игнорирует десятичные знаки. Кроме того, вы также можете Debug.Print сохраненный strSQL - person Dawn Rose; 20.08.2019