设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
楼主: rjacky
打印 上一主题 下一主题

[ADO/DAO] 请教如何通过ADO或DAO的实现快速统计?

[复制链接]
跳转到指定楼层
1#
发表于 2007-7-27 06:16:00 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
<>表  “学生管理” 有如下字段</P>
<><br>事件ID     学生姓名        时间          类别       内容            摘要<br>             <br>1             甲         2007-7-1        奖励      成绩优秀       月度小考分数全班第一</P>
<>2             乙         2007-7-3        处罚      迟到           早上10点才回到学校</P>
<P>3             乙         2007-7-3        处罚      早退           下午2点就离开课室        </P>
<P>4             丙         2007-7-7        奖励      表现突出       主动打扫卫生</P>
<P>5             甲         2007-7-9        奖励      成绩优秀       级运动会长跑第一</P>
<P>6             丙         2007-7-9        处罚      违规           上课打瞌睡</P>
<P>7             乙         2007-7-15       处罚      违规           与隔壁班大熊打架         </P>
<P>……</P>
<P>在每月和期末的时候就需要进行统计汇总,用Dcount 等域函数,是可以做到在子窗体中使用数据表显示如下的的统计结果的:</P>
<P>成绩优秀次数=dcount("[ID]","学生管理","[内容]="成绩优秀" and [姓名]='"me.姓名"')</P>
<P>奖励小计=dcount("[ID]","学生管理","[类别]="奖励" and [姓名]='"me.姓名"')</P>
<P><br><br></P>
<P><br>但是在数据量多或使用次数多时非常慢,请教如何通过ADO或DAO的实现?</P><br><br><br><br>
[此贴子已经被作者于2007-7-26 23:05:49编辑过]

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2007-7-27 07:15:00 | 显示全部楼层
<>以上是我所举的简单例子,但实际要进行的统计远远比这例子复杂,在数据表子窗体里面要至少进行15X20约300次dcount操作,在记录数目过1000条的时候非常慢,差不多要1分钟才出结果。</P>
<>所以只能抛弃使用域函数,无奈通过使用很多个嵌套查询来实现的,非常麻烦。猜想如果能转用ADO或DAO应该会简便一些,请各位指教一下。</P>
3#
 楼主| 发表于 2007-7-28 02:27:00 | 显示全部楼层
<>谢谢楼上两位朋友热心的指导!我现在也是用查询的方法来实现的,不过比你们的麻烦不少,现在又学到新方法了。</P>

<>但还是想了解一下如何用ADO或DAO实现,想和查询对比一下有何差别,请大家指教。</P>
4#
 楼主| 发表于 2007-7-28 02:43:00 | 显示全部楼层
<>to 3楼的朋友:</P>
<>我的保护mdb方法操作繁琐,设置要求比较高,你先确认一下,能不能做到:</P>
<>1、客户端的操作系统所在分区必须为ntfs格式;</P>
<P>2、用户在客户端上没有管理员权限,只有普通用户权限;</P>
<P>3、用户能容忍禁打开这个收保护的数据库时,office助手和帮助功能被禁用,F1等快捷键被禁用,输入法帮助被禁用</P>
<P>4、数据库的所有窗口必须设置为弹出模式,也就是说不能同时打开或操作多个窗口(如果你用的access2000,那么所有的报表会在窗体设置为模式时将会显示不正常),自定义菜单不能使用</P>
<P>5、如果你的数据库有打印功能,那么用户不能随意选择打印机,基本只能使用预先设置的打印机</P>
<P><br><br>以上只要有任何一点不能满足,稍懂电脑的用户就能突破限制,所有的努力就会白费</P><br>
[此贴子已经被作者于2007-7-27 19:11:16编辑过]

5#
 楼主| 发表于 2007-7-28 02:49:00 | 显示全部楼层
<><FONT face=Verdana color=#61b713><STRONG>tz-chf</STRONG><FONT color=#000000>兄,你懂的话就说一下吧,之前也有不少朋友问过你呢</FONT></FONT></P>

<>查询虽然维护方便,但是如果做在VBA里面安全性更高一点</P>
[此贴子已经被作者于2007-7-27 18:50:45编辑过]

6#
 楼主| 发表于 2007-7-28 07:58:00 | 显示全部楼层
<>回楼上,通过ado做在vba代码里面,生成mde可以避免用户看到前台的查询或修改查询。</P>

<>回fswxs,不满足这5点真的是徒劳白费心,我一一给你说明,假设那个能访问数据库的用户名是sales:</P>
<>1、2两点是为了避免用户可以轻易知道数据库路径。如果不设定的话,用户在打开数据库后,调出任务管理器,就能看到当前运行access的用户名是sales,然后他就能直接打开系统盘下的隐藏目录"Documents and Settings\sales\Application Data\Microsoft\Office\Recent",这个目录就是office记录该用户最近所有访问过文件的路径(如果他们不是管理员而C盘是NTFS的话他们是看不了其他用户信息的)</P>
<P>3、不禁用"ctrl+o"、"ctrl+n"等access快捷键,用户在打开数据库后,先"ctrl+n"以sales身份再次运行一个access主程序,点击一下文件菜单就可以看到刚才的数据库路径在哪里,然后再按一下ctrl+o,马上就弹出对话询问要打开什么文件,用户可以在这个对话框输入数据库路径(如\\服务器名\数据库文件夹$)直接copy走你的mde,也能以sales身份运行任何程序;同样,不禁用office助手和帮助、输入法帮助,用户只要打开这些帮助也能打开类似对话框跳转出去,不过麻烦了一点。</P>
<P><BR>4、5两点,数据库窗口不设置为弹出模式来阻止用户点击菜单,用户简直就能直接通过菜单更改你的设计或导出数据库。</P>
<P><BR>你可以自己操作上面的内容来体会一下,即使用第三方软件隐藏了sales的密码和数据库路径,access自己马上就给你暴露出来,安全性太低。</P>
<P><BR>第三方的软件很多,可以试试一个国产中文软件的RunAs tool,百度一下就有了,他能将用户名,密码,路径打包成一个exe,要求不高的话够用了。<BR>老外做的功能更强,例如提供对目标程序的MD5和数字签名校验来预防陷阱欺骗,可以绑定机器或硬盘,也能同时加载多个用户配置文件、注册表和打印机设置等,不过是英文的,设定很麻烦。</P>
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-25 15:02 , Processed in 0.122245 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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