【问题标题】:How to put a variable into SQL code in access [duplicate]如何在访问中将变量放入SQL代码[重复]
【发布时间】:2020-12-29 17:56:10
【问题描述】:

对不起,我的愚蠢问题。 我在 Access (VBA) 中编程,我试图将一个名为 machine 的变量发送到 sql 代码中,然后将其插入到表中。但我不知道该怎么做。这是我到目前为止的代码:

Private Sub MachineToevoegen_Click()
        Dim SQL As String
        Dim Machine As String
        Machine = Machine_keuze
        SQL = "INSERT INTO Machines ([Machine]) VALUES(Machine)"
        DoCmd.RunSQL SQL
    End Sub

如果有人可以帮助我,那就太好了。

【问题讨论】:

  • 错误信息(如果不添加Option Explicit)?阅读 vba 设置字符串变量!阅读Bobby Tables 了解为什么不应该连接 sql 字符串,而是使用参数!
  • 您没有将字符串分配给Machine。请看我下面的编辑。

标签: sql vba ms-access


【解决方案1】:

创建一个查询,将Machine 作为参数传递。

例如:

PARAMETERS [prmMachine] Text (255);
INSERT INTO Machines ([Machine])
SELECT [prmMachine] AS _Machine;

然后,在 VBA 中调用查询:

With CurrentDb().QueryDefs("YourQueryName")
    .Parameters("[prmMachine]").Value = Machine_keuze 
    .Execute dbFailOnError
End With

【讨论】:

    【解决方案2】:

    试试下面。

    Private Sub MachineToevoegen_Click()
    
        Dim SQL As String
        Dim Machine As String
    
        Machine = "Machine_keuze"
        SQL = "INSERT INTO Machines ([Machine]) VALUES('" & Machine & "')"
        DoCmd.RunSQL SQL
    
    End Sub
    

    【讨论】:

    • 不要向没有经验的用户展示如何连接 sql 字符串,因为它们会被注射咬伤!并查看字符串 ;(
    • @ComputerVersteher 我同意,但是对于初学者来说很难捕捉到高级查询。
    • 难于理解为什么"INSERT INTO Machines ([Machine]) VALUES('" & "Machinename containg'Quote" & "')"(例如“O'neil 电容器”)会失败?
    • 说很难是无稽之谈。只需使用临时变量:TempVars!Machine = "Machine_keuze"SQL = "INSERT INTO Machines ([Machine]) SELECT TempVars!Machine"。添加了 0 行,避免了字符串分隔符的问题,因此在概念上对初学者来说可能更简单
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    相关资源
    最近更新 更多