运行时错误'3061'

时间:2017-07-23 10:07:24

标签: vba ms-access

更新用户从数据库注销的日期和时间的问题

在Enter按钮上的登录表单中有下一个代码:

Dim db1 As DAO.Database
Dim KorIme As String 
Dim rst1 As DAO.Recordset
Set db1 = CurrentDb()
Set rst1 = db1.OpenRecordset("tblLogPristupa", dbOpenDynaset)
rst1.AddNew
rst1!KorIme = Me.txtKorisnickoIme.Value
rst1!IDKorisnika = Me.txtKorisnickoIme.Column(5)
rst1!DatumPristupa = Date
rst1!VrijemePristupa = Time()
rst1.Update
rst1.Close

frmOsnovna上的表单LogOff按钮上有下一个代码:

Dim strSQL As String

Dim db As DAO.Database

Dim rst As DAO.Recordset

Set db = CurrentDb()

strSQL = "SELECT tblLogPristupa.IdPristupa, tblLogPristupa.KorIme, tblLogPristupa.DatumOdjave, tblLogPristupa.VrijemeOdjave FROM tblLogPristupa WHERE((tblLogPristupa.IdPristupa)=(Select Max(IdPristupa) FROM tblLogPristupa WHERE tblLogPristupa.KorIme = Me.KorisnikID));"

Set rst = db.OpenRecordset(strSQL, dbOpenDynaset)' HERE IS ERROR 3061

rst.Edit

rst!DatumOdjave = Date

rst!VrijemeOdjave = Time()

rst.Update

rst.Close

数据库是多用户的。我需要在每个用户的tblLogPristupa,日期和时间注销中写一次。

目前这段代码效果不佳。如果有人可以更正此代码,请。

任何第二种解决方案都是好的。谢谢你的进步。

2 个答案:

答案 0 :(得分:0)

3061表示参数太少 - 通常转换为引用不存在的字段。要找出哪个字段,您必须知道数据库的外观。如果您在Access查询设计器中重新创建查询,您会发现在那里会收到更好的错误消息。

答案 1 :(得分:0)

控件的值在查询的SQL中。这需要附加到字符串。

变化:

"...WHERE tblLogPristupa.KorIme = Me.KorisnikID));"

要:

"...WHERE tblLogPristupa.KorIme = " & Me!KorisnikID & "));"