如何从连续表格中的 VBA 访问当前记录?
How do I access the current record from VBA within a continuous form?
我有一个连续的表格,我只想从更新后调用的 VBA 函数访问当前记录。在这个函数中,我分别引用了这些对象,这样我就可以监视它们,看看那里有什么。 f(表格)看起来很正常。 Recordset
和RecordsetClone
的内容在调试器中显示为"Object/Recordset2"。当执行 rs 赋值时,我得到一个仅声明 "mismatched type" 的异常。我已经尝试了很多不同的变体,但似乎没有什么是正确的。这应该简单明了,但是...
Private Sub Line_AfterUpdate()
Dim rs As ADODB.Recordset
Dim f As Form
Set f = Me
Set rs = f.RecordsetClone
MsgBox rs.Fields("RawLine")
End Sub
我使用的是 Access 2013,但此数据库的早期开发是在 Access 2007 中进行的。
这是修改后的代码。感谢 Albert D. Kallal 提供我需要的信息。
Private Sub Line_AfterUpdate()
Dim line As New TemplateLineClass
Call SetFileRefresh(1)
Call line.init(Nz(Me!RawLine, ""))
Me!before = line.before
Me!after = line.after
Me!FieldMarker = line.subName
Me!DefaultValue = line.DefaultValue
Me.Refresh
End Sub
最初我试图通过 Recordset 或 RecordsetClone 字段访问当前记录。显然,当您这样做时,您在 AfterUpdate 事件调用期间看不到更新的字段。当您使用 Me!fieldName 方法时,您确实会看到更新。
请注意,更新后事件发生在字段上,而不是表单上。
我有一个连续的表格,我只想从更新后调用的 VBA 函数访问当前记录。在这个函数中,我分别引用了这些对象,这样我就可以监视它们,看看那里有什么。 f(表格)看起来很正常。 Recordset
和RecordsetClone
的内容在调试器中显示为"Object/Recordset2"。当执行 rs 赋值时,我得到一个仅声明 "mismatched type" 的异常。我已经尝试了很多不同的变体,但似乎没有什么是正确的。这应该简单明了,但是...
Private Sub Line_AfterUpdate()
Dim rs As ADODB.Recordset
Dim f As Form
Set f = Me
Set rs = f.RecordsetClone
MsgBox rs.Fields("RawLine")
End Sub
我使用的是 Access 2013,但此数据库的早期开发是在 Access 2007 中进行的。
这是修改后的代码。感谢 Albert D. Kallal 提供我需要的信息。
Private Sub Line_AfterUpdate()
Dim line As New TemplateLineClass
Call SetFileRefresh(1)
Call line.init(Nz(Me!RawLine, ""))
Me!before = line.before
Me!after = line.after
Me!FieldMarker = line.subName
Me!DefaultValue = line.DefaultValue
Me.Refresh
End Sub
最初我试图通过 Recordset 或 RecordsetClone 字段访问当前记录。显然,当您这样做时,您在 AfterUpdate 事件调用期间看不到更新的字段。当您使用 Me!fieldName 方法时,您确实会看到更新。
请注意,更新后事件发生在字段上,而不是表单上。