设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 10294|回复: 14
打印 上一主题 下一主题

[Access本身] 【Access小品】切掉尾巴--刘晓军筛选代码优化

[复制链接]
跳转到指定楼层
1#
发表于 2010-7-20 09:46:47 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
  上周末与版友瑞哥同志讨论一个子窗体数据源问题,看到一段涉及SQL准则部分的写法,对其中代码甚为不解。瑞哥同志告知是从刘晓军同志案例中套用过来的,于是告诉瑞哥了一个简洁写法。今日看到版友 kent_ 73同志又出现同样问题,这是版友  kent_ 73同志的一段筛选代码:
Dim str As String
str = ""
If Not IsNull(Me.Combo2) Then
    str = str & "([项目] like '" & Me.Combo2 & "') AND "
End If
If Len(str) > 0 Then
    str = Left(str, Len(str) - 5)
End If
Me.表1子窗体.Form.Filter = str
Me.表1子窗体.Form.FilterOn = True

  看来刘晓军同志筛选的案例影响很大。不过这段代码简洁的写法应该如下:
Dim str As String
str = ""
If Not IsNull(Me.Combo2) Then
    str = str & "([项目] like '" & Me.Combo2 & "') AND "
End If
str=str & "true"
Me.表1子窗体.Form.Filter = str
Me.表1子窗体.Form.FilterOn = True

  也就是说将去除字符串尾端的" AND ",改变为在尾端加一个"True"字符串。其原理是:True and True=True;False and True=False;因此尾端加一个True不影响逻辑值的结果。由此推理,这样的筛选代码,最为简洁的写法为:

Dim str As String
str = "True"
If Not IsNull(Me.Combo2) Then
    str = str & " AND ([项目] like '" & Me.Combo2 & "')"
End If
Me.表1子窗体.Form.Filter = str
Me.表1子窗体.Form.FilterOn = True

  也就是说将“True”作为str的初始值,屁股和脑袋对掉,从整体上看就是切掉尾巴。

   

评分

参与人数 1经验 +8 收起 理由
5988143 + 8 我很赞同

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

15#
发表于 2023-5-13 16:30:46 | 只看该作者
学习提高
回复

使用道具 举报

14#
发表于 2023-3-8 09:56:17 | 只看该作者
学习一下
回复

使用道具 举报

13#
发表于 2012-8-5 10:23:46 | 只看该作者
我也很喜欢这样的简洁,但开始学习时,对我这种菜鸟来说,如果没有注解,有时看不懂。
楼主真的很棒啊
12#
发表于 2012-7-25 17:21:25 | 只看该作者
{:soso_e130:}我因为工作对access又爱又恨啊,之前基本都是有问题了去搜下类似的帖子或者直接坐等回答,折腾了将近2个多月,现在总算会一点点了,然后还不知道这份工作可以干多久,又有新的报表要加进去,不过IT的老大让我过去一起做,感觉会轻松许多了,系统的搜了下小品,才发现,确实需要把这位老板的帖子好好读一读,不止是惊喜,啥都有了,我未来两周的工作就是读帖加设计了哈哈。
11#
发表于 2012-7-27 14:03:13 | 只看该作者
我很喜欢这种简洁的代码
10#
发表于 2012-7-27 14:02:55 | 只看该作者
我很喜欢这种简洁的代码
9#
发表于 2010-7-21 09:12:06 | 只看该作者
不錯的技巧
8#
发表于 2010-7-21 08:51:37 | 只看该作者
谢谢分享
学习了

点击这里给我发消息

7#
发表于 2010-7-21 08:49:12 | 只看该作者
又学一招,谢谢分享

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-29 04:02 , Processed in 0.090192 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表