对于ADO,一向以为是Access进阶中不能不说,又不能细说的问题。不能不说,是因为鉴于某些特殊要求,这是几乎绕不过去的;而不能细说,则是自认掌握得不够深刻,深怕误人子弟。
然而我还是要说。前些日子,版友枯木一线在论坛里说了记录集和表的区别,原文大体是“表是数据表,记录集可以是表,可以是查询”。窃以为流于肤浅,有灌水之嫌疑,便回复了。对于灌水我向来宽容,但在常规交流上灌水则深恶痛绝,原因有三,一是容易影响那些真正需要求助的帖子被跟进回复,成为沉底。二则影响版友搜索资料,浪费时间和精力;三则容易引发歧义,造成理解偏差。
不过,我仍然觉得“理解过于肤浅”并不为过。从可操作的对象来说,记录集并不仅仅可以操作表和查询,还通过SQL语句创建记录集,又或者读取SQLServer里的表、存储过程等等,读Excel文件,甚至读取本地的ADTG文件等等。而对于表,则可以是外部的链接数据,或者本地的数据。从具体操作来说,并非所有链接表都能在Access里进行操作,如,希望修改Excel表的数据,只能通过打开该Excel文件来处理。而记录集则可以通过建立连接,然后读取记录集来更新Excel表的数据。另外,它们之间的方法属性等等也完全迥异,这里不一一细说。
言归正传。下面,我们开始讲解ADO吧。由于掌握得不够深刻,部分子集我会绕过去或者略谈,例如记录对象(Record)和流对象(Stream)。记录对象代表一组数据,可以是记录集中的一条记录,或者只有一条记录的记录集。既然如此,那么在Access里就不必专门去创建这么一个对象了,因为这完全可以通过某些特定条件和方法去记录集中获取(例如用Where设置条件,用Move移动光标位置等等)。而流对象则代表文本文件、XML文档或者web文档,甚至一些OLE对象的数据流(详见红尘如烟写过一个 上传下载的例子和附上我之前改进的一个例子: http://www.office-cn.net/thread-97193-1-1.html)。 由于文字比较多,这次大约分四部分讲完,附件将在最后一节上传。 是以为序言。 |