调用VBA过程-缺少错误=

调用VBA过程-缺少错误=,vba,excel-2007,Vba,Excel 2007,我试图调用一个名为Ins_to_temp的VBA过程,但它不起作用。奇怪的是,Ins_to_temp是根据另一个过程的模型构建的:截断确实有效的表 你能帮我理解为什么在“Ins_to_temp(x,y,z)”行出现错误吗?它说缺少一个“=”!(好像这是一个函数,但显然是一个过程) 作为参考,以下是一个有效的程序: Sub Truncate_table(tbl1 As String) Connect Dim strQ As String Set rstR = New ADO

我试图调用一个名为Ins_to_temp的VBA过程,但它不起作用。奇怪的是,Ins_to_temp是根据另一个过程的模型构建的:截断确实有效的表

你能帮我理解为什么在“Ins_to_temp(x,y,z)”行出现错误吗?它说缺少一个“=”!(好像这是一个函数,但显然是一个过程)

作为参考,以下是一个有效的程序:

Sub Truncate_table(tbl1 As String)
    Connect
    Dim strQ As String
    Set rstR = New ADODB.Recordset
    rstR.CursorType = adOpenStatic
    strQ = "DELETE FROM " & tbl1
    rstR.Open strQ, objCon, adOpenDynamic, adLockOptimistic
End Sub
我可以称之为:Truncate_table(“coll”)
谢谢

您的问题是打字错误:

Sub Ins_to_temp(tbl1 As String, tbl2 As String, idx As String)
    Connect
    Dim strQ As String
    Set rstR = New ADODB.Recordset
    rstR.CursorType = adOpenStatic

    strQry = "insert into " & tbl1 & " (select * from " & tbl2 & " where id = '" & idx & "')"

    ' the line above should be

    strQ = "insert into " & tbl1 & " (select * from " & tbl2 & " where id = '" & idx & "')"

    rstRec.Open strQ, objCon, adOpenDynamic, adLockOptimistic
End Sub

那么这个呢,有用吗

Sub Test()
   Ins_to_temp tbl1:="temp_clients", tbl2:="clients", idx:="202"
End Sub

删除括号,即将其称为
Ins\u to_temp“temp\u clients”、“clients”、“202”
如果tbl1和tbl2的列顺序完全相同,则“insert-in”只能工作!谢谢你们两位,是的,去掉支架就成功了,我真不敢相信,谢谢!但是truncate过程使用括号不是很奇怪吗?所以我猜,当你有一个参数时,放括号是可以的,但由于语法规则,当你有几个参数时,放括号是不行的?令人惊讶的是,关于
()
对过程调用的影响的解释,请看这里。我在这里写问题时打错了,但最初代码没有包含它,所以应该是其他内容。谢谢。好的,我想首先要检查的是错误是来自VBA还是来自查询。如果手动键入SQL字符串,是否会出现错误?谢谢,罗杰去掉括号后它就工作了:Ins_to_temp“temp_clients”,“clients”,“202”有趣的是,我一开始就试过了,但是用括号!我也会尝试这个变体,当然它会起作用。非常感谢。
Sub Test()
   Ins_to_temp tbl1:="temp_clients", tbl2:="clients", idx:="202"
End Sub