在子窗体中设置过滤器

 Jean_香香 发布于 2023-02-03 08:09

我有一个主要形式"属性",它有两个子表单,其中一个显示该属性中的房间,另一个显示每个房间的占用者.

当您更改属性时,房间会在第一个子表单中更改,这是连续的.当您向下滚动房间子窗体,使新房间处于活动状态时,我希望占用者在第二个子窗体中进行更改.

到目前为止,我已经在"属性"主要形式的Current事件中写了这个:

Dim dblRoomID As Double
dblRoomID = Forms.Properties.frmRoomsByPropertySubform.Form.room_id

哪个成功从第一个子窗体中拉出Room_ID.

现在,我需要使用Room_ID在第二个子表单中设置过滤器,该子表单当前显示所有属性的所有占用者,但具有Room_ID字段.

我不能

Forms.Properies.frmStudentsRoomQuickview.Form.Filter = "[Room_ID]=" & dblRoomID

或docmd.applyfilter工作 - 我一直在假设这是因为活动形式需要是'frmstudentRoomQuickview'以供后来工作 - 但我不明白为什么简单地设置.filter不会工作.

编辑:我应该添加,我不能在"房间"表格中使用子表格,因为房间形式需要连续.

编辑2:

Private Sub Form_Current()
Dim dblRoomID As Double
    If IsNull(Forms.Properties.frmRoomsByPropertySubform.Form.room_id) Then
        Forms.Properties.frmRoomsByPropertySubform.Visible = False
        Forms.Properties.frmStudentsRoomQuickview.Visible = False
    Else
        Forms.Properties.frmRoomsByPropertySubform.Visible = True
        Forms.Properties.frmStudentsRoomQuickview.Visible = True
        dblRoomID = Forms.Properties.frmRoomsByPropertySubform.Form.room_id
        Call frmStudentsRoomQuickview_Enter(dblRoomID)
    End If

End Sub

Private Sub frmStudentsRoomQuickview_Enter(dblRoomID)
Forms.Properties.frmStudentsRoomQuickview.Filter = "[room_id] = " & dblRoomID
Forms.Properties.frmStudentsRoomQuickview.FilterOn = True
Forms.Properties.frmStudentsRoomQuickview.Requery
Debug.Print Screen.ActiveForm.name
End Sub

我现在得到"程序声明与具有相同名称的事件或程序的描述"错误

1 个回答
  • 您是否尝试打开过滤器?

    Forms.Properies.frmStudentsRoomQuickview.Form.Filter = "[Room_ID]=" & dblRoomID
    Forms.Properies.frmStudentsRoomQuickview.Form.FilterOn = True
    

    编辑:

    看过你的更新后,我就明白了这个问题.问题是您无法将参数传递给_Enter事件.你必须做这样的事情:

    Dim dblRoomID As Double
    
    Private Sub Form_Current()
    
        dblRoomID = 0
    
        If IsNull(Forms.Properties.frmRoomsByPropertySubform.Form.room_id) Then
            Me.frmRoomsByPropertySubform.Visible = False
            Me.frmStudentsRoomQuickview.Visible = False
        Else
            Me.frmRoomsByPropertySubform.Visible = True
            Me.frmStudentsRoomQuickview.Visible = True
            dblRoomID = Me.frmRoomsByPropertySubform.Form.room_id
            DoStudentsRoomQuickViewFilter
        End If
    
    End Sub
    
    Private Sub DoStudentsRoomQuickViewFilter()
        If dblRoomID <> 0 Then
            Me.frmStudentsRoomQuickview.Form.Filter = "[Room_ID] = " & dblRoomID
            Me.frmStudentsRoomQuickview.Form.FilterOn = True
            Me.frmStudentsRoomQuickview.Requery
            Debug.Print Screen.ActiveForm.Name
        End If
    End Sub
    
    Private Sub frmStudentsRoomQuickview_Enter()
        DoStudentsRoomQuickViewFilter
    End Sub
    

    2023-02-03 08:16 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有