You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用两个组合框同步三个子窗体:能否在rs.FindFirst中用多条件?

主窗体与多子窗体同步记录的最终解决方案

最初尝试通过子窗体的Filter和FilterOn属性实现记录同步,虽然能筛选出ID=1001且Day=2的三条子窗体记录,但主窗体仍停留在ID=1001且Day=1的记录,与组合框选中值不符。当时的VBA代码如下:

Private Sub find_cupnx_AfterUpdate()
    ' 定位匹配控件值的记录
    Dim rs As Object

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[cupnx] = " & Me![find_cupnx] & ""
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

Private Sub find_visit_AfterUpdate()
    Dim strF As String
    With Me
    strF = "[Visit]='" & .find_visit & "'"
    .F_4100form_s1.Form.Filter = strF
    .F_4100form_s1.Form.FilterOn = True
    .F_4100form_s2_Toxicity.Form.Filter = strF
    .F_4100form_s2_Toxicity.Form.FilterOn = True
    .F_4100form_s3_Infection.Form.Filter = strF
    .F_4100form_s3_Infection.Form.FilterOn = True
    End With
End Sub

之后想替换掉Filter属性,改用带多条件的Recordset.Clone和Bookmark方法,思路代码(待修正)如下:

Private Sub find_visit_AfterUpdate()
    ' 定位匹配控件值的记录
    Dim rs As Object

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[cupnx] = " & Me![find_cupnx] & "" And "[visit] = '" & Me![find_visit] & "'"
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

尝试过Gustav的多同步子窗体示例,但没能理解其中逻辑。最终通过在同一个AfterUpdate()事件中结合Filter/FilterOn属性与Recordset.Clone、Bookmark方法,实现了主窗体与子窗体的正确记录同步,最终代码如下:

Option Compare Database
Option Explicit


Private Sub find_cupnx_AfterUpdate()
    ' 定位匹配控件值的记录
    Dim rs As Object

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[cupnx] = " & Me![find_cupnx] & ""
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

Private Sub find_visit_AfterUpdate()
    ' 定位匹配控件值的记录
    Dim rs As Object

    Set rs = Me.Recordset.Clone
    rs.FindFirst "[cupnx] = " & Me![find_cupnx] & " And [visit] = '" & Me![find_visit] & "'"
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    
    Dim strF As String
    With Me
    strF = "[Visit]='" & .find_visit & "'"
    .F_4100form_s1.Form.Filter = strF
    .F_4100form_s1.Form.FilterOn = True
    .F_4100form_s2_Toxicity.Form.Filter = strF
    .F_4100form_s2_Toxicity.Form.FilterOn = True
    .F_4100form_s3_Infection.Form.Filter = strF
    .F_4100form_s3_Infection.Form.FilterOn = True
    End With
End Sub

内容的提问来源于stack exchange,提问作者ElphiusMostafa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 02:20:30