Ms access 使用Insert命令时出现运行时错误3061 VBA

Ms access 使用Insert命令时出现运行时错误3061 VBA,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,我有以下代码。我正在使用MS Access 2010中的表单在我的表Nlog中输入新行。当我尝试运行代码时,它给出了运行时错误“3061”:参数太少。预期1 我找不到错误 Private Sub Command128_Click() 'add data to table CurrentDb.Execute "INSERT INTO NLog(IDKEY, Company, CoName, State, City, AmtpdTotal, DateRec, Notified, Da

我有以下代码。我正在使用MS Access 2010中的表单在我的表Nlog中输入新行。当我尝试运行代码时,它给出了运行时错误“3061”:参数太少。预期1

我找不到错误

Private Sub Command128_Click()
    'add data to table
    CurrentDb.Execute "INSERT INTO NLog(IDKEY, Company, CoName, State, City, AmtpdTotal, DateRec, Notified, DateNotice, AcctID, TaxType, Period, NoticeReason, Resolution, TaxDue, Intdue, PenDue, Dateres, Amtpdint, amtpdpen, amtpdtax, Assigned, subAssgn, Resolved) " & _
        " VALUES(" & Me.TxtIDKEY & ",'" & Me.Company & "','" & Me.CoName & "','" & _
        Me.State & "','" & Me.City & "','" & Me.TxtAmtpdTotal & "','" & _
        Me.DateRec & "','" & Me.Notified & "','" & _
        Me.DateNotice & "','" & Me.AcctID & "','" & Me.TaxType & "','" & Me.Period & "','" & _
        Me.NoticeReason & "','" & Me.Resolution & "','" & Me.TaxDue & "','" & Me.IntDue & "','" & Me.PenDue & "','" & _
        Me.DateRes & "','" & Me.AmtPdInt & "','" & Me.AmtpdPen & "','" & Me.AmtpdTax & "','" & _
        Me.Assigned & "','" & Me.txtsubass & "','" & Me.Resolved & "')", dbFailOnError 
MsgBox ("Entry Added")

使用字符串变量保存
INSERT
语句。这允许您
调试。打印
字符串,以便检查代码创建的实际语句。您可以
执行该字符串

Dim strInsert作为字符串插入
strInsert=“插入NLog(IDKEY、公司、国家名称、州、城市、AmtpdTotal、DateRec、通知、日期通知、AcctID、税种类型、期间、通知原因、决议、纳税到期日、Intdue、未决、日期、Amtpdint、amtpdpen、amtpdtax、分配、子授权、决议)”&_
“值(“&Me.TxtIDKEY&“,”&Me.Company&“,”&Me.CoName&“,”和”_
Me.State&“,”&Me.City&“,”&Me.TxtAmtpdTotal&“,”和_
Me.DateRec&“,”和Me.Notified&“,”和_
Me.DateNotice&“,”&Me.AcctID&“,”&Me.TaxType&“,”&Me.Period&“,”和_
Me.NoticeReason&“,”&Me.Resolution&“,”&Me.TaxDue&“,”&Me.IntDue&“,”&Me.PenDue&“,”和_
Me.DateRes&“,”&Me.AmtPdInt&“,”&Me.AmtpdPen&“,”&Me.AmtpdTax&“,”和_
Me.Assigned&“,”&Me.txtsubass&“,”&Me.Resolved&“)”
调试。打印strInsert
CurrentDb.executestrinsert,dbFailOnError
然后,您可以在即时窗口中查看已完成的语句(来自
Debug.Print
)的输出。Ctrl+g将带您进入即时窗口

如果错误不明显,可以复制语句文本,在查询设计器中创建新查询,将其切换到SQL视图,然后粘贴到复制的语句中。当您尝试从设计器运行该查询时,Access将显示一个参数对话框,要求您为参数提供一个值。请注意,该对话框还包括参数的“名称”。这个问题的原因通常是字段名拼写错误——因为Access找不到使用该名称的字段,所以它假定该字段必须是一个参数

或者,可以使用VBA代码显示查询中任何参数的名称:

Dim db作为DAO.Database
将qdf设置为DAO.QueryDef
作为DAO.Parameter的Dim prm
Set db=CurrentDb
设置qdf=db.CreateQueryDef(vbNullString,strInsert)
对于qdf.参数中的每个prm
Debug.Print prm.Name
下一个