Ms access MS Access 2013保存的追加查询未更新所有字段

Ms access MS Access 2013保存的追加查询未更新所有字段,ms-access,vba,ms-access-2013,Ms Access,Vba,Ms Access 2013,我保存了一个查询qryInsertLog,如下所示: PARAMETERS UserIDPar Long, UnitIDPar Long, LogEntryPar LongText, FNotesPar LongText; INSERT INTO tblLogBook ( UserID, UnitID, LogEntry, FNotes ) SELECT [UserIDPar] AS Expr1, [UnitIDPar] AS Expr2, [LogEntryPar] AS Expr3, [FN

我保存了一个查询qryInsertLog,如下所示:

PARAMETERS UserIDPar Long, UnitIDPar Long, LogEntryPar LongText, FNotesPar LongText;
INSERT INTO tblLogBook ( UserID, UnitID, LogEntry, FNotes )
SELECT [UserIDPar] AS Expr1, [UnitIDPar] AS Expr2, [LogEntryPar] AS Expr3, [FNotesPar] AS Expr4;
我试图在未绑定表单上单击保存按钮时运行此查询,其中的参数是从表单控件收集的。“保存”按钮的VBA代码为:

Private Sub cmdSave_Click()

Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim okToSave As Boolean

If Me.cboUser.Value = 0 Or IsNull(Me.cboUser.Value) Then
    MsgBox "You must choose a user. Record not saved."
    okToSave = False
ElseIf Me.cboUnit.Value = 0 Or IsNull(Me.cboUnit.Value) Then
    MsgBox "You must choose a unit. Record not saved."
    okToSave = False
ElseIf Me.txtLogEntry.Value = "" Or IsNull(Me.txtLogEntry.Value) Then
   MsgBox "You must have somtehing to log. Record not saved."
    okToSave = False
Else
    okToSave = True
End If

Set db = CurrentDb
Set qdf = db.QueryDefs("qryInsertLog")

qdf.Parameters("UserIDPar").Value = Me.cboUser.Value
qdf.Parameters("UnitIDPar").Value = Me.cboUnit.Value
qdf.Parameters("LogEntryPar").Value = Me.txtLogEntry.Value
qdf.Parameters("FNotesPar").Value = IIf(IsNull(Me.txtFNotes.Value), "", Me.txtFNotes.Value)

If okToSave Then
     qdf.Execute
End If

qdf.Close
Set qdf = Nothing

End Sub
运行此代码时,表的FNotes字段不会更新。其他三个字段按预期更新。FNotes是唯一不需要的字段。我为FNotes paramater硬编码了一个字符串,如下所示:

qdf.Parameters("FNotesPar").Value = "why doesn't this work"
而不是使用表单控件值,并得到相同的结果:该字段只是不更新。当我从“访问对象”窗口运行此查询并从提示中提供参数值时,它工作正常。当我创建绑定到表的表单时,它似乎也可以正常工作


我不明白为什么更新LogEntry字段没有问题,但FNotes字段无法更新。

通过
DAO.Recordset
而不是
DAO.QueryDef
添加新记录

首先,包括这个声明

Dim rs作为DAO.Recordset
然后在
设置db=CurrentDb
之后使用此选项

Set rs=db.OpenRecordset(“tblLogBook”)
用rs
如果可以的话
.AddNew
!UserID=Me.cboUser.Value
!UnitID=Me.cboUnit.Value
!LogEntry=Me.txtLogEntry.Value
!FNotes=Nz(Me.txtFNotes.Value,“”)
.更新
如果结束
.结束
以

注意
Nz(Me.txtFNotes.Value,”)
提供了与
IIf(IsNull(Me.txtFNotes.Value),“”,Me.txtFNotes.Value)相同的内容

您有参数查询问题。最后一个也不走运?使用debug.print检查您的值。在执行中添加一个dbFailonError。我敢打赌它又是长文本参数。