【问题标题】:Error: Run-time error '3061'. Too few parameters. Expected 1错误:运行时错误“3061”。参数太少。预计 1
【发布时间】:2021-03-18 19:35:31
【问题描述】:
FSQL = "INSERT INTO Q_ClientSearch(SName, OName, Add1, Add2, Add3, TelNo, Email, NID) " & _
       " VALUES('" & M_SName & "', '" & M_OName & "', '" & M_Add1 & "', '" & M_Add2 & _
       "', '" & M_Add3 & "', '" & M_Phone & "', '" & M_Email & "', '" & M_IDNo & "') "

DoCmd.RunSQL FSQL

注意:表中的所有字段都是字符串变量

【问题讨论】:

  • 您在 VALUES 之前的下划线似乎有误
  • 对我来说一切正常。是否有任何变量具有' 作为字符?
  • 你可能还想看看THIS
  • 如果字段NID 是数字,那么您不需要在M_IDNo 周围加上单引号。
  • 所有变量均不包含'或"

标签: vba ms-access


【解决方案1】:

字符串连接只会给您带来麻烦并且难以维护。请使用参数。

创建一个查询,复制下面的 SQL 并从 VBA 中调用它。

查询:

PARAMETERS [prmSName] Text(255), [prmOName] Text (255), [prmAdd1] Text(255), [prmAdd2] Text(255), 
[prmAdd3] Text(255), [prmTelNo] Text(255), [prmEmail] Text(255), [prmNID] Text(255);

INSERT INTO Q_ClientSearch(SName, OName, Add1, Add2, Add3, TelNo, Email, NID)
SELECT [prmSName] AS SName, [prmOName] AS OName, [prmAdd1] AS SName, [prmSName] AS Add1,
       [prmAdd2] AS Add2, [prmAdd3] AS Add3, [prmEmail] AS Email, [prmNID] AS NID;

称呼它:

With CurrentDb().QueryDefs("YourQueryName")
    .Parameters("[prmSName]").Value = M_SName  
    .Parameters("[prmOName]").Value = M_OName  
    .Parameters("[prmAdd1]").Value = M_Add1  
    .Parameters("[prmAdd2]").Value = M_Add2  
    .Parameters("[prmAdd3]").Value = M_Add3  
    .Parameters("[prmTelNo]").Value = M_Phone  
    .Parameters("[prmEmail]").Value = M_Email  
    .Parameters("[prmNID]").Value = M_IDNo  
    .Execute dbFailOnError
End With

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多