vfp9 中的ca的使用方法

vfp9 中的ca的使用方法,第1张

VFP对数据的存取多种多样,可直接使用本地表、本地视图、远程视图、以及SPT和ADO,这么多的数据源都有各自不同有用法,要想学会他们真要下一番苦功丛则核。本人一直使用VFP开发程序,对这些东西也没有一个清晰的了解(太笨了),特别对远程数据进行访问时更是不知选什么好。今天,VFP8、VFP9出来了,提供的CursorAdapter既可以对本地数据进行存取,又可以对远程的不同类型的数据源进行存取,不需要关心数据源,只要对CursorAdapter的属性进行适当的设置就可以了,甚至可以在程序中动态的对这些属性进行改变,从而达到更快速开发程序的目的,这在以前的版本中简直不可想象,感谢VFP的开发者们为我们提供了CursorAdapter类。

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

就自动执行你的程序了。

如果你是在州顷命令窗口输入的,当然回车才执行一行命令册拿陆了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12418999.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存