Access交流中心

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

求助大神:这段VBA该如何修改?

执着小白  发表于:2018-11-19 16:30:39  
复制

背景汇报:
1.本人属小白中的小白,最近迷上了ACCESS;
2.在本论坛中下载了老师的作品稍加修改后,体验了一键快速搜索数据的快感,兴奋之余衷心感谢原创老师的无私奉献;


面临的困难:
1.查询窗体的“查询”,事件过程是原作品设计好的,事件代码如下:
Private Sub cmdOK_Click()
? ? On Error Resume Next


? ? Dim A
? ? Dim i As Integer
? ? Dim strCombine As String


? ? strCombine = ""


? ? A = Split(Me.strFind.Value, " ")


? ? For i = 0 To UBound(A)
? ? ? ? strCombine = strCombine & "'*" & A(i) & "*'" & " OR " & Me.strField & " like "
? ? Next
? ? strCombine = Left(strCombine, Len(strCombine) - 10 - Len(Me.strField))
? ? Debug.Print strCombine


? ? '让子窗体应用窗体查询
? ? Me.Child1.Form.Filter = Me.strField & " Like " & strCombine
? ? Me.Child1.Form.FilterOn = True


End Sub


2.点击“查询”按钮后,得到的数据效果如下(图1):

可以看到,前三条记录是一模一样的,只有第四条记录不同。


求助内容:

请求大神,能否在“查询”按钮的事件过程中加入相应代码,实现:

1.查询结果中,当“一级机构”、“二级机构”、“三级机构”、“岗位”、“现职级”完全相同时,只保留其中一条记录;

2.查询结果中,当“一级机构”、“二级机构”、“三级机构”、“岗位”、“现职级”任何一个不同,哪怕是空值,也保留该条记录;

3.对应图1,想实现的效果如下图(图2):



附上access原件:点击下载此附件


跪求大神,留下完整代码,小白感激不净!!!!



 

Top
伊西军 发表于:2018-11-19 16:57:16

可以学习下这两篇文章

SQL中Distinct的用法 

http://www.accessoft.com/article-show.asp?id=10714

SQL GROUP BY 语句

http://www.accessoft.com/article-show.asp?id=6755



高锡华 发表于:2018-11-19 17:35:56

感谢伊西军老师,受教学习了

不过我现在的困惑是,相应的SQL语句,怎么加到“查询”按钮的事件过程,即如何修改以下VBA代码:

Private Sub cmdOK_Click()
    On Error Resume Next


    Dim A
    Dim i As Integer
    Dim strCombine As String


    strCombine = ""


    A = Split(Me.strFind.Value, " ")


    For i = 0 To UBound(A)
        strCombine = strCombine & "'*" & A(i) & "*'" & " OR " & Me.strField & " like "
    Next
    strCombine = Left(strCombine, Len(strCombine) - 10 - Len(Me.strField))
    Debug.Print strCombine


    '让子窗体应用窗体查询
    Me.Child1.Form.Filter = Me.strField & " Like " & strCombine
    Me.Child1.Form.FilterOn = True


End Sub

恳求老师解惑



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