如何用文本框中的值乘以列中的所有记录?

时间:2019-08-20 12:39:33

标签: ms-access access-vba

我有一个带有NUMBER列的表格,称为“价格”。我也有一个带有文本框的表单,用户可以在其中输入一个百分比(例如0.9)和一个按钮,当按下该按钮时,价格中的所有记录将与该文本框中的该数字相乘。我没有这个工作。

这前两个示例仅用于测试基本情况,根本没有任何变量。

Dim strSQL  As String
Dim dbs     As DAO.Database

Set dbs = CurrentDb

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

我已经尝试了上述方法,但是将Price乘以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”突出显示为黄色。

1 个答案:

答案 0 :(得分:1)

为了将变量放入SQL字符串,您需要从变量中构造变量,因为当前您正在将Price列乘以“ textVariable”而不是其中存储的值。

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

此外,最好检查一下以确保输入到TextBox中的值是有效数字(无论是在代码中还是在文本框本身上设置限制),因为当前您的代码将引发类型不匹配如果“文本框”中的值不是有效的double值,则为例外。