Access子窗体放在菜单选项卡时加载查询弹出参数框如何解决
解决方案
方案1:延迟绑定窗体记录源(最稳妥)
- 打开frmExpedicao的设计视图,清空「记录源」属性的内容,不要提前绑定slcExpedicao
- 修改Form_Load事件代码如下:
Private Sub Form_Load() ' 先给筛选控件完成赋值 Me.flt_dt_entrega = Date Me.op_tp_solicitacao = 1 ' 再绑定记录源触发查询加载 Me.RecordSource = "slcExpedicao" End Sub
该方案从根本上避免了控件未初始化就加载查询的问题,兼容性最好。
方案2:给查询参数加兜底默认值
打开slcExpedicao的设计视图,修改参数部分的筛选条件:
- 日期字段的筛选条件改为
Nz([Forms]![frmExpedicao]![flt_dt_entrega], Date()) - 单据类型字段的筛选条件改为
Nz([Forms]![frmExpedicao]![op_tp_solicitacao], 1)Nz函数会判断如果控件未赋值(为空)时自动使用后面的默认值,不会触发参数输入弹窗。
方案3:选项卡按需加载子窗体
如果菜单窗体的选项卡只在点击对应标签时才需要加载内容,可以给选项卡的Change事件加代码:
Private Sub TabCtl0_Change() ' TabCtl0替换为你菜单里选项卡控件的实际名称 If Me.TabCtl0.Value = 1 Then ' 1替换为frmExpedicao所在选项页的实际索引 ' 只有切换到对应页时才绑定子窗体记录源 Me.frmExpedicao子窗体控件名.Form.RecordSource = "slcExpedicao" End If End Sub
同时需要先把frmExpedicao的记录源属性清空,避免提前加载触发参数检测。
内容的提问来源于stack exchange,提问作者Julia
相关产品推荐
相关产品推荐

