Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

两个筛选语句,为什么只筛选了一个子窗体呢?

xiaowuo  发表于:2017-03-17 15:10:36  
复制

Private Sub List0_AfterUpdate()
Dim i As Integer
sFilter = ""
For i = 0 To Me.List0.ListCount - 1
    If Me.List0.Selected(i) Then
        sFilter = sFilter & "期号='" & Me.List0.ItemData(i) & "' or "
    End If
Next
If sFilter <> "" Then
    sFilter = Mid(sFilter, 1, Len(sFilter) - 4)
End If

Me.按期号多选对比项目名称销售的子窗体.Form.Filter = sFilter

Me.按期号多选对比项目名称销售的子窗体.Form.FilterOn = True


Me.按期号多选对比报帐分类销售的子窗体.Form.Filter = sFilter

Me.按期号多选对比报帐分类销售的子窗体.Form.FilterOn = True
End Sub



问:上述代码在触发list0的更新后事件后执行(选中列表框中的其中2个期号值后),也能使两个子窗体开始执行筛选代码,但是当我在List0列表中将刚才选择的两个期号重新点击(也就是清除所选两个期号)后,只有第一个子窗体执行了筛选操作,而第二个子窗体只有第一次点取消期号有筛选,而第二次的清除操作没有反映(此时list0的状态是没有任何选中的状态),各位老师请帮忙看看是什么原因,谢谢啦

 

Top
MDZZ 发表于:2017-03-18 13:03:26
上附件看看

xiaowuo 发表于:2017-03-20 10:56:17

点击下载此附件

@MDZZ,请帮帮看看,谢谢啦



MDZZ 发表于:2017-03-20 13:33:30
没问题 啊  试试吧子窗体删了重新放个

xiaowuo 发表于:2017-03-20 15:31:07

点击下载此附件


@MDZZ,己上传问题描述图片,请再次帮忙(测试过重建窗体,与新建所有窗体,都不行,可能是Access2003的问题吧)



MDZZ 发表于:2017-03-20 15:41:11
点击下载此附件  的确不会出现你的  问题 吧代码改下了 你现在看看呢

xiaowuo 发表于:2017-03-20 16:06:52

确定是Access2003的问题了,我这测试了下你修改的还是与原先的一样问题,伤脑筋,只能增加以下手动清除源的方法解决了;


   Dim strsql As String '设置一个SQL变量,因为Access2003的列表框问题,故在点击清除选择按后,要再重新设置一下右边两个子窗体的数据源后,才能正常刷新为初始状态,不然第2个子窗体会出现筛选错误。
   strsql = "select * from 按期号对比分析各期各项目名称的增减情况" '使子窗体默认打开时以年级为排序依据
   Me.按期号多选对比项目名称销售的子窗体.Form.RecordSource = strsql
   Me.按期号多选对比项目名称销售的子窗体.Requery




   Dim strsql2 As String '设置一个SQL变量,因为Access2003的列表框问题,故在点击清除选择按后,要再重新设置一下右边两个子窗体的数据源后,才能正常刷新为初始状态,不然第2个子窗体会出现筛选错误。
   strsql2 = "select * from 按期号对比分析各期报帐分类的增减情况" '使子窗体默认打开时以年级为排序依据
   Me.按期号多选对比报帐分类销售的子窗体.Form.RecordSource = strsql2
   Me.按期号多选对比报帐分类销售的子窗体.Requery




总记录:6篇  页次:1/1 9 1 :