【发布时间】:2017-09-25 09:07:40
【问题描述】:
https://msdn.microsoft.com/en-us/vba/access-vba/articles/form-recordset-property-access
这个链接正是我需要的,但是在关注它之后我仍然无法让我的子表单刷新他们的数据。我已将它们绑定到 ADO 数据源,当它们打开时,数据会正确显示,但是当我更改子窗体的基础数据时,它不会显示,直到我关闭并重新打开主窗体。
Private Sub Form_Open(Cancel As Integer) 'Subform code fires when main form opens.
Dim ADOcnn10 As ADODB.Connection
Dim ADOstr10 As String
ADOstr10 = "Provider='Microsoft.Access.OLEDB.10.0';Persist Security Info=False;Data Source=C:\data\Data.accdb;User ID=Admin;Data Provider=Microsoft.ACE.OLEDB.12.0"
Set ADOcnn10 = New ADODB.Connection
ADOcnn10.Open ADOstr10
Dim ADOrst10 As ADODB.Recordset
Set ADOrst10 = New ADODB.Recordset
ADOrst10.Open "SELECT * FROM tblTemp", ADOcnn10, adOpenKeyset, adLockOptimistic
Set Me.Recordset = ADOrst10
Forms(0).RecordSource = Forms(0).RecordSource
End Sub
【问题讨论】:
-
我不太明白你的问题。我没有看到特定于子表单的代码,
Forms(0).RecordSource = Forms(0).RecordSource对我来说似乎不是一个明智的代码行。您能否准确说明子表单何时停止显示?您是通过链接主字段 - 链接子字段链接这些子表单,还是通过记录集中的 WHERE 子句手动链接? -
啊,那我明白了。每当临时表更改时,您可以在主窗体上尝试
Me.MySubform.Recordsource = Me.MySubform.Recordsource吗? -
听起来您的连接有问题。尝试添加
Adorst10.CursorLocation = adUseClient以确保您使用的是客户端游标(我认为Microsoft.Access.OLEDB.10.0提供程序不支持服务器端游标,您需要一个有效的游标来刷新表单)。
标签: vba ms-access ado subforms