Office中国论坛/Access中国论坛

标题: 构筑ACCESS的大厦 [打印本页]

作者: zww3008    时间: 2011-8-23 18:55
标题: 构筑ACCESS的大厦
进入本论坛以来我才接触ACCESS,很多东西是边看边学,本贴主要是自己学的一些体会总结,并与大家探讨。ACCESS能做些什么?大家已经有了很多探讨。从事工作多年以来,感受最深的就是,做软件开发的不做实际应用,做实际业务的,不做软件,两者难以深度熔通。ACCESS作为简单的应用平台,满足了广大实际应用者的需求,可以自给自主地真正接自己的思想和意愿设计作品。

一接触ACCESS,我就面临不少问题并开始思考,我要的作品,该如何开工?她的宏观构造如何搭建,微购部位如何修饰?这座大厦该如何建筑?

一个ACCESS作品,如果仅仅是一个人自己玩的,我想一切问题都不是问题了。大多数的应用,是基于内部局域网的多人同时操作的需求,基于此,我们首先面临哪些问题、最需要考虑哪些方面呢?

我总结归纳如下几大方面,后面视大家讨论程度展开:

1、数据的安全。
2、权限架构。
3、主控面板(菜单)
4、易用易维护性。

一般都较忙,只能有时间写点...
作者: zww3008    时间: 2011-8-23 18:55
本帖最后由 zww3008 于 2011-8-23 19:29 编辑

不知从何说起,就先第3点说起吧。因为这个最简单了,呵呵。

● 构筑ACCESS的主控面板(菜单)

一个好的ACCESS作品,主控面板(菜单)是一个系统的基础和总缆。看过不少大侠的作品,对主控面板或是系统菜单可谓是八仙过海各显神通,凝聚了大量精力,太复杂了,我看的是眼花燎乱。
我的选择就是,统统抛开!ACCESS本身就提供了无与伦比的自定义菜单功能。关于ACCESS自定义菜单的方法,版主todaynew有一个非常好的动画演示教学贴,有需要的可去搜索一下,我就是从那学到的。^-^

ACCESS自带的自定义菜单有如下优点:
1、构造非常简单。
2、易用易维护,可以随时移位、增删、可以在多个菜单中定义同一个窗体(其实就象WINDOWS的桌面快捷方式而以)。完全满足我一边开发一边应用的要求,根本不会影响日常使用(这里又满足我的第4点要求)。
3、可以直接采用系统内部菜单和命令。
4、菜单可以以图标、文字单一或混编方式,可以更改图标,可以加分组线等等细微之处。

即然如此,为什么很多人不用这个方法?我想应该就是菜单权限问题。此问题属于我的第2个问题,我只用一句万能代码通吃。
下回分解。
[attach]46485[/attach]
作者: zww3008    时间: 2011-8-23 18:56
先点个位...
作者: gaoyh2008    时间: 2011-8-23 18:57

作者: aslxt    时间: 2011-8-23 19:19
草图好像看到了
作者: todaynew    时间: 2011-8-23 19:37
归纳总结是良好的学习习惯,表示支持!
作者: zww3008    时间: 2011-8-23 20:46
本帖最后由 zww3008 于 2011-8-23 23:47 编辑

呵呵,正在看大运闭幕式,一不小心看到版主对贴子加高亮显示了。谢谢版主。
再总结一点。

● 我们对权限的各种要求

实现ACCESS权限控制的方法有很多种,但我们往往较难全面满足,且要求实现简单。不多说,先提要求:

1、登录权限。
打开程序时要有登录用户名和密码验证(这个一般都有)。

2、静态权限(到窗体)。
系统登录后,按不同用户,对不同窗体分别有打开浏览、增加、修改、删除等基本权限(一般按权限表设置)。

3、静态权限(到控件)。
精细到窗体的控件,对特殊数据的浏览权、特殊按钮的使用权等精细化。

4、按钮动态权限。
我是管理员,对窗体数据有修改删除权限,但当我窗体打开后走开,清洁工帮我擦试键盘时,鼠标所在区域的数据全部被弄的一蹋糊涂。大家可能都有这样的需求,希望点击编辑或修改按钮后,窗体才被允许修改数据,但是这个权限又得结合静态权限。也就是不俱备静态权限的人,即使点击修改按钮也不会开放编辑权限。

5、条件动态权限。
根据窗体上的条件,如“审核”复选框,来确定是否再允许修改。往往用来:当数据输入期,允许录入,当主管审核后或数据已输入后自动判断,不再允许修改。这个应该也不少人都要求这样吧。这个条件动态权限,可以根据条件自动发生作用,也可以结合按钮动态权限,也就是,只有具备静态权限、且按下编辑按钮、且未审核的记录,才允许修改。

6、子窗体及控件按需可控。
子窗体及控件权限可以设置与主窗体的权限同步,也可以设置为不同步。避免主窗体已禁止修改,子窗体却能修改的漏洞。

7、无漏洞权限。
一般设计有主控面板或菜单的ACCESS系统,往往是从主控面板或菜单的入口设置权限,就好比火车站的检票口,来控制窗体的打开与否。但是,实际应用中,往往需要各窗体通过按钮或超链接或双击事件等,来打开其他窗体,这样就又多开放了许多个入口,又得在那里设计权限条件,给程序设计上带来相当麻烦,稍有不慎、一有遗漏,就会留下后门或缺口,这就好比进入火车站内部后,无法防止乘客不按秩序在内部窜火车。尤其是结合控件权限等各种要求综合一起,如何得以实现?

所有这些,大家提提看还有哪些?要求是不是太多、太复杂了?
==================================

补充两个更苛刻的要求:

8、特别控件授予永久VIP权限。
如带查询条件的窗体,对查询条件输入的文本框、复选框、组合框等,无论任何情况下,都应该可以直接输入,而窗体的其他部分,却仍然需要遵从权限管理。此外,对窗体的另一些特殊控件,如果希望无论任何情况下都予以锁定,不受权限开放,不给用户编辑修改。

9、记录翻页重新锁定。
当窗体记录翻动时,尤其对单个窗体视图的窗体,当使用“编辑”按钮打开编辑权限后,窗体翻动到下一条记录时,窗体自动恢复锁定。避免对不需要修改的记录出现误修改。


作者: ui    时间: 2011-8-23 20:58
很有深度,值得继续,并加分。
作者: zww3008    时间: 2011-8-23 21:13
[attach]46486[/attach]
作者: tmtony    时间: 2011-8-23 21:54
很好的文章,软件功能也很不错。
作者: zww3008    时间: 2011-8-24 00:04
对权限控制,补充两个更苛刻的要求:

8、特别控件授予永久VIP权限。
如带查询条件的窗体,对查询条件输入的文本框、复选框、组合框等,无论任何情况下,都应该可以直接输入,而窗体的其他部分,却仍然需要遵从权限管理。此外,对窗体的另一些特殊控件,如果希望无论任何情况下都予以锁定,不受权限开放,不给用户编辑修改。

9、记录翻页重新锁定。
当窗体记录翻动时,尤其对单个窗体视图的窗体,当使用“编辑”按钮打开编辑权限后,窗体翻动到下一条记录时,窗体自动恢复锁定。避免对不需要修改的记录出现误修改。

所有这一切,我只需要两条代码实现:

在需要受权限控制的窗体的OPEN事件中加入一句
    setOpenForm Name, Cancel
解决所有静态权限问题。

在编辑按钮事件中加入
FrmEdits Me,TRUE  '动态开放编辑
FrmEdits Me           动态锁定编辑
FrmEdits Me,Not NZ(me.审核)  '条件动态权限

包含所有动态权限、静态权限、控件权限、主子窗体权限成份。在任意位置链接、引用、触发、双击打开本窗体时,权限都有效。说白了,我是将火车站(主控面板)的检票工作移位到了火车车箱(窗体)上,这样,不论火车行到广州还是北京,一切的乘客上车都得受检,且只需一处受检。工作极大简化。且不会出现漏洞。这样,就可以实现ACCESS自定义菜单加上权限管理了。

作者: jinzhanxi    时间: 2011-8-24 09:36
很强大,坐等更新,谢谢分享
作者: 轻风    时间: 2011-8-24 11:35
拜读
作者: asklove    时间: 2011-8-24 14:00
学习了
作者: zww3008    时间: 2011-8-24 19:40
昨晚深夜回的解释权限问题的贴怎么不见了?
作者: jinzhanxi    时间: 2011-8-25 08:09
顶起来,继续学习
作者: goto2008    时间: 2011-8-25 16:24
瞄瞄
作者: zww3008    时间: 2011-8-25 19:09
咳,昨晚辛辛苦苦码了不少字,点回复,显示回复内容需要审核,之后就没了{:soso_e135:}

说到上面的九点权限问题,可能大家都会遇到想到。都要实现起来,难度可能会很大,有没有一种好方法实现集成一下呢?我就来个现学现卖吧,呵呵,其实红尘如烟版主早就有了。

刚上论坛就接触到了红尘如烟版主的ACCESS开发平台(2008版),可后来他又改变了思路,重新做的2009版还是回到主控菜单与主控面板的权限管理方式上去了。我在他的基础上修改了一下,只用到了一个函数,主控面板完全可以不要了。现在,我只要两句通用代码,就可解决以上九条权限管理要求:

1、 对需要权限管理的窗体,在LOAD事件中只要一句
setOpenForm Name, Cancel
解决所有静态权限问题。

2、在“编辑”铵钮代码中,只要一句
FrmEdits Me,TRUE    '动态开放权限
FrmEdits Me             '动态锁定权限
FrmEdits Me,Not NZ(Me.审核)    '条件动态权限
另外,利用标记功能 ,分别对一些控件贴上各种“标签”,如证明你是良民,他是坏蛋,这个永远允许,那个永远禁止,呵呵,你自己定义就行了,可分别实现不同控制功能。
这种方法的好处就是,将权限校验由菜单入口,移到了窗体本身上,即如,原来是由每个火车站的候车室检票,一列火车需要经过十个城市,则需要配置建设十个火车站检票口,麻烦!且这种权限控制对火车站内部乱窜的人员根本虚设。现在,将检票口移到了车箱口,火车去到哪里,只需要一个检票口即可搞掟,且无漏洞。这样,就可以实现由ACCESS自定义菜单来做主控菜单,且可以在任意窗体里按置链接按钮或通过双击来关联打开其他窗体了,丝毫不用担心泄密问题。有权限的人可以打开窗体并根据权限分配不同操作,无权限的人打开窗体前弹出提示,无法打开。




作者: zww3008    时间: 2011-8-25 20:14
1、数据的安全。
4、易用易维护性。


再来漫谈一下数据的安全和易用易维护性两个问题。
我把这两个放在一起说,也正是当时一直懵懵懂懂,所想过和经历过的一个程,这些问题在构建一座大厦这前,可能大家都会思考。

说到数据的安全性。我们总会想到以下一些问题和对策:
1、对数据库使用人员的基本限制,需要设计登录及以权限加以保护。
2、想不让别人看到你作品的源代码,可通过禁止SHIFT键的方法。
3、可对MDB和VBA分别加密码。
4、再进一步,将mdb编译成MDE
......
呵呵,当我学了很多高招之后,别人给你来个崭草除根,直接将MDB或MDE替换、删除、或直接拷贝复制带走,你耐我何?一切的高招原来是那么的不堪一击!
怎么办?这就来到了我选择前后台架构的问题。

ACCESS数据库的架构,常见的形式有:
1、单个文件形式的ACCESS文件(单机版)
2、ACCESS前台+ACCESS后台
3、ACCESS前台+SQL后台

考虑以什么架构形式,是作为一座大厦在开工之前应该思考、规化好的问题,然而,作为菜鸟的我,作出的作品给更菜的菜鸟使用,还未动工,就要考虑什么升迁、链接、SQL......喔喔,我头都大了,能折腾到这个程度,我都可以不用ACCESS了。即然ACCESS有他的优势,何不扬长避短,让其发挥出最大的易用性优势,做程序是做给人们带来更简便的。
作者: tmtony    时间: 2011-8-25 20:40
因为为避免广告,论坛设置23:30--7:30是发贴需要审核 时间,但奇怪我在后台看不到需要审核的贴哦
作者: jinzhanxi    时间: 2011-8-26 08:55
学习到新知识,支持!
作者: zww3008    时间: 2011-8-30 02:21
今天喝了很多酒又喝了很多茶,睡不着{:soso_e118:}

我的领导需要我每周、每月...都做一份报表给他,大到宏观数据,小到鸡毛蒜皮,辛辛苦苦好不容易做好了又说按另外一个意思重做,且每次做的报表起不到历史继承作用。反复折腾。于是想到学习ACCESS,编个系统,让大家把日常的填写纸质工作单的形式,全部改填写电子单,将日常工作、工时、采购成本及收入相关信息每日实时记录、自动按筛选条件生成各种报表。由于我们的用户都是菜鸟级,不相把问题搞得太复杂,本着越简单越好的原则,我这样开始了规化并制作。一周后,一个最简单的工作单系统就已生成。于是我跟领导说,以后,我不再每周给报表给你了,我另外给你一个文件发到你邮箱,不但是周期性报表,还是实时的,你想看时就打开看就可以了。于时,很
作者: zww3008    时间: 2011-8-30 02:22
完了,不知按到了哪个键,没写完就出去了。
作者: zww3008    时间: 2011-10-15 12:43
发了几次贴因故障未发出。加上忙,有时间就想休息,对软件又在原有基础上做了些修改,现在接着再谈。

我追求的是傻瓜式的操作方式。公司经常要求做出各种数据统计和报表,我蒙生了用ACCESS做一个系统的念头,要求各员工将日常工作和数据实时记录,实时即可得到各种数据和报表。因为应用有限(不是什么大量的复杂的系统),使用者水平有限,所以我就想删繁就简,最简单的莫过于一个MDB文件,不分前后台的。公司有不少24小时运行的电脑,我把MDB数据库放在某一台上,然后另外做一个引导链接用的客户端,放在服务器上共享,任何想用的领导同事直接去拷贝下载客户端过来,双击打开就可使用了,完全用户自己搞掂,不需要我的帮助和干预,不需要在用户机上检查安装ACCESS,不需要设置服务器和数据库链接(我自己使用的版本内置了相关信息)。领导想要数据,随时在公司内任何一台电脑上打开客户端就行了。整个使用阶段,可以一边使用,一边升级,我经常晚上时不时的对MDB数据库进行升级、增加功能等等,不影响其他用户使用,不需要分发升级前台客户端或到其他电脑上去做什么跟进修改。因为我修改的就是包括窗体和表的整个MDB文件。
这样即大大方便了大家也方便了我,我根本不用去其他用户电脑做任何操作,同时也很隐蔽,谁也不去注意那是一个什么做和系统,也不知道数据库在哪里。就是知道哪台电脑,也看不到数据库,即无法通过复制带走数据,也无法通过删除或替换损坏数据,对安全性还是比较有保障的。

客户端附上,有兴趣的可以一试。因为使用到了ACCESS绿色版的注册器(软件破解用),运行时会被360等拦截报“木马”,其实根本不是。如果你电脑已经安装有正式版的ACCESS2003,则不需要调用绿色版,也就不会被误报“木马”。

该客户端之前我也在论坛上发过,兼容各种版本的ACCESS打开设计的程序数据库,但前天才发现在用户电脑上使用他的ACCESS2007打开服务器上ACCESS2003做的公司数据库时会造成损坏,再用2003无法打开,幸好通过另一个同事的电脑,他的客户端还未关闭,直接利用内置的压缩和修复数据库功能修复了。所以现在改了一下,限定只能用ACCESS2003做平台。
[attach]46978[/attach]
作者: zww3008    时间: 2011-10-15 12:51
后面有时间的话,再来整理通用权限代码......
作者: yanghua1900363    时间: 2011-10-15 17:39
多谢分享!
作者: chuyuchun    时间: 2011-10-15 21:27
{:soso_e104:}顶
作者: tzh1600    时间: 2011-10-17 14:40
本帖最后由 tzh1600 于 2011-10-17 14:40 编辑

楼主想得很周到细致
确实存在窗体权限细分的问题
我以前用笨办法,同一个窗体有几种权限就复制几份,然后分别设置对应不同权限的控件,再根据不同用户打开具有对应权限的窗体
作者: china086    时间: 2011-10-21 23:25
楼主想得很周到细致

作者: yangruihao    时间: 2011-10-23 10:22
{:soso_e179:}
作者: jinzhanxi    时间: 2011-10-26 13:37
顶上去
作者: wlylhw    时间: 2012-3-18 13:18
zww3008 发表于 2011-8-23 20:46
呵呵,正在看大运闭幕式,一不小心看到版主对贴子加高亮显示了。谢谢版主。
再总结一点。

学习学习
作者: bridgeman    时间: 2012-6-5 12:02
不错.楼主辛苦了.
作者: liuxiangyucdpc    时间: 2012-7-22 15:14
占位做记号
作者: iamee    时间: 2012-7-23 15:02
很好的东东~~~~~~~
作者: \~暀倳洳煙    时间: 2014-12-30 20:04
构筑ACCESS的大厦




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