设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[窗体] 【Access小品】代码咱们去哪?-- 出发于假设达到于场景

[复制链接]
跳转到指定楼层
1#
发表于 2015-2-13 15:07:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 todaynew 于 2015-2-13 15:26 编辑

  版友正在隐身同志,希望对我很早以前写的《一塌糊涂》做一个修改,想要实现选择几个字段拼出筛选语句来,对此种想法我颇不以为然。

  关于通用的筛选方法,有很多版友做过研究,也给出了很多精彩绝伦的处理方案,其中采用字段列表和逻辑运算符拼出逻辑表达式的处理方法确实有人做出来过。不过对于此方法的实用性,我是表示怀疑的。为什么表示怀疑呢?我以为问题出在假设和前提上。一般来说,我们对于系统某个功能的使用对象--用户,是需要做出恰当的判断的。也就是说,我们要从假设出发,来构建一种使用的场景,然后在这个基础上来确立解决问题的方案。

  对于SQL语句的特定逻辑表达式,会出现三类用户,第一类是完全搞球不清,第二类是满脑袋门清,第三类是似懂非懂。那么针对这三类用户就会有三种不同的处理方案。其中似懂非懂的这一类是比较难以处理的,因为你不知道他们具体掌握了多少,他们中的每个个体的程度都会有差异。所以一般来讲,这一类用户你要么归并到第一类,要么归并到第二类,不要指望能写出满足第三类用户的东西来。

  通过字段列表和逻辑运算符拼出逻辑表达式的处理方法,实际上是针对第三类用户来写的。正如前所述,这是没必要也达不成目地的。所以实际上通用的筛选方法的处理方案,只是需要针对前两类用户处理。而且,从技术上来说,这种处理方案繁杂,不仅对于编程如此,对于操作也是如此。

  我在《一塌糊涂》一文中所做的示例,它所假设的用户实际上是第一类用户。如果针对第二类用户写处理方案,其逻辑会更加简单。为了说明这两种处理方案的不同,我在这个示例上略微做了些修改,分别做出针对前两类用户的处理逻辑,供初学者参考。

  总结一下:问题处理方法的优劣,很大程度上不取决于技巧,而取决于合理的假设。请初学者时刻记住:代码咱们去哪?

示例:

视图:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

本帖被以下淘专辑推荐:

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

点击这里给我发消息

2#
发表于 2015-2-13 15:42:59 | 只看该作者
强!
回复

使用道具 举报

3#
发表于 2015-2-13 15:54:39 | 只看该作者
todaynew 老师谢谢分享要是添加一个命令将模糊查询的结果输出到EXCEL更完美了
4#
发表于 2015-2-13 16:12:13 | 只看该作者
{:soso_e179:}
5#
 楼主| 发表于 2015-2-13 16:19:00 | 只看该作者
本帖最后由 todaynew 于 2015-2-13 16:25 编辑
yanwei82123300 发表于 2015-2-13 15:54
todaynew 老师谢谢分享要是添加一个命令将模糊查询的结果输出到EXCEL更完美了

这很简单呀。你加一个按钮,然后在按钮的单击事件中写如下代码:
Private Sub 导出E_Click()
    Dim Qdef As QueryDef  '定义查询对象
    Dim Queryname As String '定义查询名称字符串
    Queryname = "tempQuery"   '可以用任何你喜欢的名称做为查询名称只要不与你的实际数据库中的查询同名即可
    If DCount("*", "MSysObjects", "Name='" & Queryname & "' and Type=5") = 0 Then   '判断查询是否存在
        Set Qdef = CurrentDb.CreateQueryDef(Queryname)  '创建查询对象
    Else
        Set Qdef = CurrentDb.QueryDefs(Queryname)          '获取查询对象
    End If
    Qdef.Sql = Me.数据列表.RowSource                               '以列表框的数据源修改查询语句
    DoCmd.OutputTo acOutputQuery, Queryname             '按向导导出需要的格式
   
    Qdef.Close: Set Qdef = Nothing   '关闭查询对象并置空
End Sub

点击这里给我发消息

6#
发表于 2015-2-15 04:47:52 来自手机 | 只看该作者
学习学习,谢谢分享!
7#
发表于 2015-2-15 08:19:18 | 只看该作者
todaynew 发表于 2015-2-13 16:19
这很简单呀。你加一个按钮,然后在按钮的单击事件中写如下代码:
Private Sub 导出E_Click()
    Dim Q ...

老师看看系统提示未声明,是什么原因?谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
8#
 楼主| 发表于 2015-2-15 08:29:41 | 只看该作者
yanwei82123300 发表于 2015-2-15 08:19
老师看看系统提示未声明,是什么原因?谢谢

要引用DAO 3.6,估计你少这个引用
9#
发表于 2015-2-15 12:31:31 | 只看该作者
todaynew 发表于 2015-2-15 08:29
要引用DAO 3.6,估计你少这个引用

谢谢帮助!!
10#
发表于 2015-2-20 09:47:02 | 只看该作者
挺不错。

那个数据列表用子窗体是不是更具通用性?

还有打开文件对话框没有错误处理,如果没有选择文件会报错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-1 21:36 , Processed in 0.091629 second(s), 36 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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