Office中国论坛/Access中国论坛

标题: 【Access小品】代码咱们去哪?-- 出发于假设达到于场景 [打印本页]

作者: todaynew    时间: 2015-2-13 15:07
标题: 【Access小品】代码咱们去哪?-- 出发于假设达到于场景
本帖最后由 todaynew 于 2015-2-13 15:26 编辑

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

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

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

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

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

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

示例:[attach]55680[/attach]

视图:
[attach]55681[/attach]



作者: tmtony    时间: 2015-2-13 15:42
强!
作者: yanwei82123300    时间: 2015-2-13 15:54
todaynew 老师谢谢分享要是添加一个命令将模糊查询的结果输出到EXCEL更完美了
作者: joshey    时间: 2015-2-13 16:12
{:soso_e179:}
作者: todaynew    时间: 2015-2-13 16:19
本帖最后由 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
作者: zpy2    时间: 2015-2-15 04:47
学习学习,谢谢分享!
作者: yanwei82123300    时间: 2015-2-15 08:19
todaynew 发表于 2015-2-13 16:19
这很简单呀。你加一个按钮,然后在按钮的单击事件中写如下代码:
Private Sub 导出E_Click()
    Dim Q ...

老师看看系统提示未声明,是什么原因?谢谢
作者: todaynew    时间: 2015-2-15 08:29
yanwei82123300 发表于 2015-2-15 08:19
老师看看系统提示未声明,是什么原因?谢谢

要引用DAO 3.6,估计你少这个引用
作者: yanwei82123300    时间: 2015-2-15 12:31
todaynew 发表于 2015-2-15 08:29
要引用DAO 3.6,估计你少这个引用

谢谢帮助!!
作者: 玉树TMD临风    时间: 2015-2-20 09:47
挺不错。

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

还有打开文件对话框没有错误处理,如果没有选择文件会报错
作者: nncchh    时间: 2015-7-20 14:21
学习学习
作者: nncchh    时间: 2015-7-20 14:22
学习学习,谢谢分享!
作者: nncchh    时间: 2015-7-20 14:22
学习学习,谢谢分享!
作者: owen2016    时间: 2016-8-20 15:21
已经下载学习,谢谢




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3