Form.Recordset 属性(访问)
Posted
技术标签:
【中文标题】Form.Recordset 属性(访问)【英文标题】:Form.Recordset Property (Access) 【发布时间】: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
提供程序不支持服务器端游标,您需要一个有效的游标来刷新表单)。
【参考方案1】:
我选择了一种解决方法: 1. 抛弃子表单,用独立表单代替 2. .重新查询仍然没有工作... 3.所以我现在关闭并重新打开(曾经是子表单)以检索他们的最新记录集 该应用程序现在可以使用这种方法正常工作。 如果有人可以推荐一门可以教我正确编码的学习课程,那就太好了,否则......
【讨论】:
以上是关于Form.Recordset 属性(访问)的主要内容,如果未能解决你的问题,请参考以下文章
vuepress-theme-reco + Github Actions 构建静态博客,部署到第三方服务器
卡夫卡的岛上书店:一个利用 vuepress 的主题 vuepress-theme-reco 以及 vuepress-theme-vdoing 搭建自己的静态博客