设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3607|回复: 10

[窗体] 与DAO或者ADO没关系吗?

[复制链接]
发表于 2015-5-22 22:37:29 | 显示全部楼层 |阅读模式
如下图:

图中测试按钮的代码是:
Private Sub 测试_Click()
MsgBox Me.学生成绩_子窗体.Form.Recordset.RecordCount & "条记录"
End Sub

我并没有提前引用ADO或者DAO,直接用这个Recordset.RecordCount属性
经测试是可以的!但是在帮助文件中看到下面这句话:

感觉Recordset必须要和ADO或者DAO有关系,所以就矛盾了。
求坛友指正一下我哪里理解错了?

本帖子中包含更多资源

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

x

点击这里给我发消息

发表于 2015-5-22 23:32:15 | 显示全部楼层
窗体  .Recordset
本身就可以是dao 或ado
有些引用不需要显式引用的
 楼主| 发表于 2015-5-23 09:17:28 | 显示全部楼层
tmtony 发表于 2015-5-22 23:32
窗体  .Recordset
本身就可以是dao 或ado
有些引用不需要显式引用的

老师,常见的有哪些对象本身可以视为DAO或者ADO呢?
现在我知道了设置了记录源的窗体或者子窗体可以。
还有其他的吗?
发表于 2015-5-23 11:43:05 | 显示全部楼层
如图所示,DAO是优先于ADO的。
如果使用New关键字就会出错(DAO没有New关键字的,ADO才有)。
Sub test()
Dim rst As New Recordset
End Sub
事实上,Access会优先调用DAO库,因此即便不显式引用,给出的属性、方法也是DAO的。例如,假设你想打开一个记录集——使用ADO的Open方法时,输入一个O之后,会出现如下情况:

这意味着它没有Open的方法,只有OpenRecordset的方法,也就是说,这是一个DAO而不是ADO。
但是个人建议,还是显式定义吧,特别是同时引用了ADO和DAO库时,很容易混淆它们之间的方法的。

本帖子中包含更多资源

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

x
 楼主| 发表于 2015-5-23 11:58:09 | 显示全部楼层
roych 发表于 2015-5-23 11:43
如图所示,DAO是优先于ADO的。
如果使用New关键字就会出错(DAO没有New关键字的,ADO才有)。
Sub test() ...

老师,那意思是我这个例子虽然没有提前引用DAO,但是在使用Recordset.RecordCount属性的时候Access自动引用了DAO吗?

如果Access有自动引用DAO这样的特性,是不是意味着以后可以不用在引用那里选"Microsoft DAO 3.6 Object Library"呢?
发表于 2015-5-23 14:18:48 | 显示全部楼层
三个太阳 发表于 2015-5-23 11:58
老师,那意思是我这个例子虽然没有提前引用DAO,但是在使用Recordset.RecordCount属性的时候Access自动引 ...

我想,你可能还没明白我的意思。
你打开附件,先打开窗体运行一次。再按下Alt+F11,进入VBE里,打开工具\引用,删掉这个库:
Microsoft Office 14.0 Access database engine Object Library
看看还能不能运行。

上述的库,其实就是Office 2007版本的DAO库。DAO 3.6支持的是2003版本以前的。

本帖子中包含更多资源

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

x
 楼主| 发表于 2015-5-23 16:30:35 | 显示全部楼层
本帖最后由 三个太阳 于 2015-5-23 16:32 编辑
roych 发表于 2015-5-23 14:18
我想,你可能还没明白我的意思。
你打开附件,先打开窗体运行一次。再按下Alt+F11,进入VBE里,打开工具 ...

不能运行了!
老师:
1、Microsoft Office 14.0 Access database engine Object Library这个库是它自动引用的吧?
我记得我没有手动去引用!要是它自动引用这样就很省事了。
2、随着2003版office的淘汰,DAO 3.6 是不是以后可以不用手动引用了呢?
反正现在高版本的office会自动引用Microsoft Office 14.0 Access database engine Object Library,
我的是2013版的,现在已经是Microsoft Office 15.0 Access database engine Object Library的了。

发表于 2015-5-23 16:53:16 | 显示全部楼层
三个太阳 发表于 2015-5-23 16:30
不能运行了!
老师:
1、Microsoft Office 14.0 Access database engine Object Library这个库是它自动 ...

1、这个的确是自动引用的,正如2003版本的DAO也是自动引用的一样。——不信你可以用Access 2003新建一个文件试试。
2、如果格式是2003的(即mdb文件),建议还是留意下有没有引用DAO 3.6库(虽然一般情况下都引用了)。格式是2007版本的也许不用检查这一点。——暂时我没试过。
最后一点,大多数的库是需要的时候再引用就好了。但是不建议把默认引用的库删掉。
 楼主| 发表于 2015-5-23 17:28:23 | 显示全部楼层
roych 发表于 2015-5-23 16:53
1、这个的确是自动引用的,正如2003版本的DAO也是自动引用的一样。——不信你可以用Access 2003新建一个 ...

老师,顺便再问一个问题吧:
老师认为DAO和ADO在access中应用方面最大的区别体现在哪些点上面呢?
目前我只知道DAO可以生成实实在在的查询等对象,ADO好像只能对数据库中已存在的表,查询等对象
的内容进行一些添加,删除等这些动作操作!
发表于 2015-5-25 14:28:22 | 显示全部楼层
三个太阳 发表于 2015-5-23 17:28
老师,顺便再问一个问题吧:
老师认为DAO和ADO在access中应用方面最大的区别体现在哪些点上面呢?
目前 ...

ADO其实也可以生成表、删除表、修改字段的,用Connection对象执行SQL语句即可(Create  Table、Drop Table、Alter Table Add/Drop Column:新增或删除字段)。
只是实际操作上我们很少用罢了,毕竟对字段进行增删改操作的情况是极少数的,而生成表或删除表操作,Access里的查询或者DeleteObject操作就可以完成,何必非要去折腾那么复杂的SQL代码呢?
此外,DAO和ADO孰优孰劣的争论一直没停止过,我也说不上什么。
只是觉得DAO的对象较多,因此部分操作ADO可能无法完成,例如:如果需要指定工作组文件打开mdb文件。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-28 23:04 , Processed in 0.095431 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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