我有一个继续表格,用户可以在其中直接编辑存储在表中的数据。 在用户关闭表单或编辑其他记录之前,系统会询问他是否要保存更改。 我为此使用更新前事件:
Private Sub Form_BeforeUpdate(Cancel As Integer)
'Msg Box Nachricht bestimmen.
strMsg = "M?chten Sie die ?nderungen speichern?" & Chr(10)
strMsg = strMsg & "Dr?cken Sie Ja um zu speichern oder Nein um die ?nderungen zu verwerfen."
'Msg Box anzeigen.
iResponse = MsgBox(strMsg, vbQuestion + vbYesNo, "Speichern?")
'Nutzer Antwort pruefen
If iResponse = vbNo Then
'Aenderungen verwerfen.
Me.Undo
'Update abbrechen.
Cancel = True
End If
End Sub
当表单加载时,我通过使用以下命令获取文本字段的当前值:
Private Sub Form_Load()
TempVars("Status") = txtStatus.Value
End Sub
现在,如果用户更改此文本字段,则该记录(具有txtStatus的旧值)应保存在新表中。 这段代码没有“ Where”部分,将表中的所有记录复制到新表中:
Dim Status As String
Dim Counter As Integer
Counter = 0
If txtStatus.Value <> TempVars("getStatus") Then
Status = txtStatus.Value
Counter = Counter + 1
End If
Dim sql As String
Dim dbs As DAO.Database
Set dbs = CurrentDb()
sql = "Insert into tblStatusFahrzeugeHistory (F_ID, Status, seit, bis, von, an, Bemerkung, Datenbank_Nutzer, Eintrag_erstellt_am, Eintrag_erstellt_um)" & _
"Select tblStatusFahrzeuge.F_ID, tblStatusFahrzeuge.Status, tblStatusFahrzeuge.seit, tblStatusFahrzeuge.bis, tblStatusFahrzeuge.von, tblStatusFahrzeuge.an, tblStatusFahrzeuge.Bemerkung, tblStatusFahrzeuge.Datenbank_Nutzer, tblStatusFahrzeuge.Eintrag_erstellt_am, tblStatusFahrzeuge.Eintrag_erstellt_um " & _
"From tblStatusFahrzeuge Where txtStatus.Value = Status "
dbs.Execute sql, dbFailOnError
dbs.Close
Set dbs = Nothing
End If
我试图使用“在哪里”部分将仅在表单上更改的记录插入到新表中,但是代码不起作用。我得到了这个错误代码:预期运行时错误'3061'1个参数,但是传递的参数太少了。有人知道我在做什么错吗?
查询引擎无法“查看” txtStatus.Value。您将不得不在查询中添加参数,或者将文本框的值连接到查询文本中: