【问题标题】:SQL insert syntax error in vba codevba代码中的SQL插入语法错误
【发布时间】:2014-03-12 21:36:05
【问题描述】:

有人能帮我正确格式化这个字符串,以便在执行按钮命令时执行我的 SQL 代码吗?我是 Visual Basic 的新手,不确定我在哪里搞砸了这部分,或者我什至可以在查询中包含访问控件。

这是我尝试执行的代码:

Private Sub new_record_btn_Click()
Dim conn As ADODB.Connection
Dim sSQL As String

Set conn = CurrentProject.Connection

RunCommand acCmdSaveRecord

sSQL = "INSERT INTO tblHydro( [Mine ID], [Facility], [Status], [Commodity], [Is   Mine Currently Below Water Table (3/10/07)?] ) SELECT tblMine.MineID, tblMine.MineName, tblMine.Status, tblMineAcreage.CommodityType, tblPermits.GWImpact FROM (tblMine INNER JOIN tblPermits ON tblMine.MineID = tblPermits.MineID) INNER JOIN tblMineAcreage ON (tblPermits.PermitID = tblMineAcreage.PermitID) AND (tblMine.MineID = tblMineAcreage.MineID) WHERE 'Forms!frmHydroNEW.MineID' = tblHydro.[Mine ID]"
conn.Execute sSQL
frmHydroSub.Requery
End Sub

我从上面得到一个语法错误

我不确定这是否是解决这个问题的正确方法...... :(

非常感谢任何帮助,谢谢

【问题讨论】:

    标签: sql vba ms-access insert


    【解决方案1】:

    你最好使用:

    Set db = CurrentDB
    db.Execute sSQL
    

    所以

    sSQL = "INSERT INTO tblHydro ( [Mine ID], [Facility], [Status], " _
    & "[Commodity], [Is   Mine Currently Below Water Table (3/10/07)?] ) " _
    & "SELECT tblMine.MineID, tblMine.MineName, tblMine.Status, " _
    & "tblMineAcreage.CommodityType, tblPermits.GWImpact " _
    & "FROM (tblMine INNER JOIN tblPermits ON tblMine.MineID = tblPermits.MineID) " _
    & "INNER JOIN tblMineAcreage ON (tblPermits.PermitID = tblMineAcreage.PermitID) " _
    & "AND (tblMine.MineID = tblMineAcreage.MineID) " _
    & "WHERE tblHydro.[Mine ID]=" &  Forms!frmHydroNEW.MineID
    
    ''Or possibly Me.MineID, depending on where the code is running
    
    db.Execute sSQL
    

    不过[Is Mine Currently Below Water Table (3/10/07)?]是个很奇怪的字段名,如果是参数的话,就需要多下功夫了。

    在 VBA 中不能以这种方式引用表单,它必须在引号之外,因此返回一个值,而不是对表单的引用。另请注意,表单必须是打开的。

    【讨论】:

    • 我的错字很糟糕,但是我仍然收到错误消息,“没有为一个或多个必需参数提供值。”调试突出显示 conn.execute 部分
    • 如果 SQL 不正确,Debug 将始终突出显示任何 Execute。
    • & 是字符串连接符,下划线是续行符。它只是使字符串更易于阅读。我怀疑你的主要问题是你有一个参数[Is Mine Currently Below Water Table (3/10/07)?],这在 VBA 中不起作用。
    • 好的,我现在看到了,我将那个长名称更改为 [Currently In GW],但仍然出现相同的“没有给出值”错误,我想知道现在的问题是否是在 where 引用访问控制sql子句?
    猜你喜欢
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 2023-04-08
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多