设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 4162|回复: 8
打印 上一主题 下一主题

[表] 关于记录集的问题

[复制链接]
跳转到指定楼层
1#
发表于 2016-1-5 10:43:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于记录集的问题,请各路大虾解惑。请原谅新手可能在你们看来比较白痴的问题。之前也搜索了贴子,似乎没看见具体介绍记录集干嘛的,有些相关的看了也有点云里雾里。所以就想彻底问清楚下。1.记录集和access里面建立的表、查询之类的有啥区别?似乎利用记录集可以对记录进行各种操作,但是用access自身功能好像也能做到吧?是不是用记录集是为了效率?方便?2.声明记录集后,该记录集是在哪里,在access 各类对象(表、查询、窗体..)里面么?比较啰嗦,希望能看明白。因为自己也困惑。看了记录集的定义,也没搞清楚。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2016-1-5 12:38:38 | 只看该作者
我是一个极烂的Access菜鸟,我的解释可能会不那么简单清晰:
1、记录集(recordset)主要有两种,一种是dao的recordset,一种是ado的recordset,它们功能是一样的,只不过对应底层的东西不太一样。Dao的recordset对应的是jet/ace引擎,用的是odbc数据库驱动。可以说dao是专用于access。ado的recordset对应的是oledb的数据库驱动,是通用的(指不仅可以用于access,也适用于sql server,oracle等数据库)
2、Recordset主要用来干什么?Recordset是一种数据容器,你可以把它理解成一个增加许多功能的二维数组。它主要是用于在内存中存放临时数据。这个过程是这样的,Sql查询其实都是一些字符串,sql语句是让jet/ace引擎执行查询,但查询完成后从数据库得到的数据要放在哪里呢?就是放在内存中的Recordset,为什么要放在内存中的Recordset呢?因为对数据的修改很频繁,可能输完之后发现输错了又想临时修改。这些修改都是直接在内存中的Recorset进行的,这样就不用频繁去读写数据库了,特别是如果后台用的是Sql server,Oracle之类,它们往往是安装在服务器上,而不是在本地电脑。如何避免一次又一次没意义地读写数据库,是使用Recordset最大的意义
3、窗体和Recordset的关系。窗体也好,控件也好,主要是用来展示数据,展示的数据从哪里来呢?就是从内存中的Recordset来。当然控件要展示的数据来源其实是很多的,不单单是Recordset,有可能是数组,也有可能是直接写好的string,硬盘上的图片,网络中的数据等。所以Recordset是控件数据的来源之一,但不是唯一。
4、Access过度包装的后果。Aceess窗体似乎可以直接读取表,查询。其实它是一个假象,这是为了方便让新手操作,而过度包装,每一个Accesss窗体的recordsource的背后都会自动产生一个隐藏的Recordset,也就是说无论如何,它都需要通过Recordset来读写数据库的数据。只不过它强制性要求Recordset的数据一发生变化,就立即更新表中的数据。因为这个Recordset不是显性声明,所以让人误以为不需要Recordset。这种过度包装,对新手方便,但也会给新手带来很多很多不必要的困惑。
5、被Recordset困死的VBA。Recordset给vba访问数据库带来了很大的方便。但它也变成了VBA访问数据库唯一的方式了,这也把VBA给困死了。所以用VBA的人基本上只用access和sql server,其它的数据库很少很少被用到了,因为绝大多数人除了使用Recordset访问数据库,其它的都不会用,用不来。而用Recordset访问非微软的数据库,会有很多不方便。这就是微软统治你的开始。
3#
 楼主| 发表于 2016-1-5 13:12:51 | 只看该作者
ganlinlao 发表于 2016-1-5 12:38
我是一个极烂的Access菜鸟,我的解释可能会不那么简单清晰:
1、记录集(recordset)主要有两种,一种是dao ...

非常感谢,看了您的回复,总算有点思路了。不好意思,脑子有点白,还有几个疑问。那是不是说声明的记录集在access 表那一块区域是看不到的?但是同样可以修改表区域里已有表的数据? 另外,能否让这个声明的记录集 成为新建表出现在ACCESS 表对象队列里么?
4#
发表于 2016-1-5 14:47:03 | 只看该作者
首先记录集不局限于Access。也就是说,即便是sql server或者其它数据库,同样可以用记录集来完成增删改查等操作。
其次,比起表/查询来,记录集更加灵活。只是批量操作记录的时候,recordset可能没有内置的操作查询高(曾经对几万条数据操作出现假死,到底是语句问题还是性能问题,没做过具体测试)。也就是说,记录集主要为了方便操作。例如,由于没有建立其恰当的关系时,更新查询可能无法完成,这时候不妨考虑记录集。
最后,大部分情况下,记录集是不可见的,但不代表它不存在,就像空气一样。如果绑定了窗体记录或者表,查询的话,你可以认为记录集就是窗体展示的记录,又或者是表,查询里的记录,但不代表一定非要创建一个这样的查询才能获取记录集。
5#
 楼主| 发表于 2016-1-5 15:28:08 | 只看该作者
roych 发表于 2016-1-5 14:47
首先记录集不局限于Access。也就是说,即便是sql server或者其它数据库,同样可以用记录集来完成增删改查等 ...

谢谢,版主!    有点明白了!最近在研究版主的那个单机版本的代码!只是对小白来讲没注释还太高深,到时候还请帮忙答疑
6#
发表于 2016-1-5 16:11:27 | 只看该作者
比较简单的来说,你个人用眼和手操作的,叫表啊,查询啊,列表,
给电脑程序用的,就叫记录集,
两者你可以认为是一样的,只是给谁直接用不一样,你就这么简单的理解就行了
每个人对于程序的理解和理解方式都不太一样,ACCESS不如EXCEL有那么多标准辅助理解性的功能,比如录制宏,
所以比较注重于你个人的理解能力和举一反三的能力,大神们的作品或示例,你也不可能全部的去默写出来,你只要理解方法就行了,
就算是大神们,也不全是一个字不差的全部自已写,很多的情况下,也是套用,
学习要有积累,这是个痛苦而快乐的过程,这了一个方法,你可以光想就想了几天,
多思多动手,多问多学习,可以试着多帮助别人,你就会提高的很快了。
7#
发表于 2016-1-5 16:37:11 | 只看该作者
0520john 发表于 2016-1-5 15:28
谢谢,版主!    有点明白了!最近在研究版主的那个单机版本的代码!只是对小白来讲没注释还太高深,到 ...

注释通常是为了开发者而写的,不可能面面俱到,否则就应该出书,而不仅仅是写程序。
甚至有资深行家认为只要名称定义得比较恰当的话,注释都可以不需要写的。有兴趣的话,你可以看看《高效能程序员的修炼》。
8#
 楼主| 发表于 2016-1-6 08:51:59 | 只看该作者
xinrenq 发表于 2016-1-5 16:11
比较简单的来说,你个人用眼和手操作的,叫表啊,查询啊,列表,
给电脑程序用的,就叫记录集,
两者你可 ...

谢谢!实践出真知!
9#
 楼主| 发表于 2016-1-6 08:52:49 | 只看该作者
roych 发表于 2016-1-5 16:37
注释通常是为了开发者而写的,不可能面面俱到,否则就应该出书,而不仅仅是写程序。
甚至有资深行家认为 ...

谢谢版主!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-1 17:27 , Processed in 0.112554 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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