CursorAdapter可以使用如下四种数据源来对本地和远程数据进行控制:
1、Native
2、Open Database Connectivity (ODBC)
3、ActiveX Data Object (ADO)
4、Extensible Markup Language (XML)
CursorAdapter对不同类型的数据源的支持进行了扩展,以使其转换为一个临时表(CURSOR)。CursorAdapter对象具有如下的功能:
1、 可以动渗掘态地使用不同的数据源
2、 既可以使用CursorAdapter对象的数据源,也可以使用数据环境的数据源,只需简单的对CursorAdapter的UseDeDateSource进行正确的设置就可以了。
3、 在数据源本身技术限制的范围内对数据源进行共享。
4、 对与CursorAdapter相关联的临时表(CURSOR)的结构可以有选择地进行定义。
5、 通过设置一些属性,可以控制从数据源到CURSOR的数据载入方式,这些属性有:Fetchsiz,maxrecords,fetchasneeds,nodate,fetchmemo,mapvarchar….等。
6、 基于数据源的类型设置,可以从不同的数据源中向CURSOR中提供数据。
7、 通过对CursorAdapter对象的属性和方法进行设置,可以控制数据的插入、更新和删除的方式,可以有自动与程序控制两种方式。
8、 可以把CursorAdapter对象添加到容器中而不是数据环境中,比如:表单集、表单、和其它的容器中。
9、 不需要与数据环境关联而把CursorAdapter类作为一个独立的类来使用。
相对于CursorAdapter对象来说,数据源只是数据传输层面中的一个管道,用它来从数据源中提取数据传送到CURSOR中。VFP9不支持CursorAdapter对象之间建立关联,但是可以使用与CursorAdapter关联的临时表(CURSOR)来建立关联。
数据的更新
1、 使用TABLEUPDATE( ) 和 TABLEREVERT( )函数进行更新
CursorAdapter对象可以很好地使用TABLEUPDATE( ) 和 TABLEREVERT( )函数进行工作,通过使用与CursorAdapter相关联的临时表来执行相应的更新与还原命令。注意:VFP9中在TABLEUPDATE( )执行期间不能执行TABLEREVERT( )。
2、 自动更新与CursorAdapter
对于本地和远程视图,VFP可以自动产生INSERT、UPDATE、DELETE命令来执行自动更新,对于CursorAdapter对象,可以按要求的方式来决定怎样生成这些命令。
当CursorAdapter的InsertCmd、UpdateCmd和DeleteCmd属性为空时,VFP自动生成这些相关的SQL命令盯谈,你必须判定这些自动生成的SQL命令是否与你正在使用的数据源相适应。为确保自动生成这些SQL命令,必须正确设置如下的CursorAdapter属性:
. Tables
. KeyFieldList
. UpdatableFieldList
. UpdateNameList
对于各种数据源,对TABLES和UPDATENAMELIST属性具有如下一般性规则,在进行程序设计时应当注意:
1、 TABLES:为确保自动更新后台数据能正确完成,必须按严格的格式为TABLES中的表名提供一个表名列表,这个顺序与表在SQL的INSERT,UPDATE和DELETE中出现的顺序应一致。
2、 UPDATENAMELIST:必须提供一个本地和远程的字段名列表对,它们有逗号分隔,每一对名字中包含一个本地字段名,紧跟一个远程字段名,远程字段名前TABLES中的表名。
3、 如果ALLOWINSERT,ALLOWUPDATE,ALLDELETE的属性为真(.T.),还必须设置正确主键值列表(KEY LIST)
批量更新
在表缓存的模式下,如果CA的BATCHUPDATECOUNT值大于1,CA对象使用批量更新模式对远程数据进行数据更新,在这种模式下,根据不同的数据源,必须符合如下条件:
1、 ODBC数据源:所有的INSERT,UPDATE,DELETE使用相同的ODBC句柄。
2、 ADO数据源:所有更新 *** 作使用相同的ADODB的COMMAND对象来执行远程数据的更新。
3、 XML数据源:对所有允许的更新 *** 作,CA对象都要使用XML作为数据源为类型。
注意:如果使用批量更新模式,以下事件不会被触发。即使在批量更新中有一个更新失败,VFP尝试为每一行发送一条单独的更新命令,然而,这些事件仍然不会被触发。它们是:
BeforInsert
AfterInsert
BeroreUpdate
AfterUpdate
BeforeDelete
AfterDelete
总的来讲,使用CA对数据进行存取时,可以按如下的原则来进行设置:
更新命令:
1、 让CA自动生成更新语句的命令
2、 直接对相关的更新命令写入自己的更新语句
更新方法:
1、 由VFP自动执行更新
2、 在程序中使用TABLEUPDATE()来执行更新
不管使用哪种方法,你都必须为更新设置冲突检测。
我将在以后的文章中对各种数据源的使用进行逐步介绍
那是因为你根本敏告没做对吧?在命令窗口输入:modi comm aa.prg
在出现的编辑窗口中输入你的上述多行命令,保存退出。然后在命令窗口输入:do aa
就自动执行你的程序了。
如果你是在州顷命令窗口输入的,当然回车才执行一行命令册拿陆了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)