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 搭建自己的静态博客

空数组作为 active_record 序列化属性的默认值

在 CloudKit 中保存对象数组

datacombo必须绑定到控件吗

Access Access 2007中的记录集问题