深入CursorAdapter(三),第1张

深入CursorAdapter(三),第2张

大型计算机等级站布置的检查:

VFP程序员长期以来一直想要一个可重用的数据类。虽然在过去的版本中有很多解决这个问题的方法,但总是存在一些缺陷。现在在VFP 8中,我们有了一个真正可重用的数据类。这个月,Doug向我们展示了如何通过对CursorAdapter和DataEnvironment进行子类化来构建可重用的数据类,以及如何在表单和报表中使用它们。

文本
××

在过去的两期中,我们讨论了VFP 8中新的CursorAdapter基类。我个人的看法是,这是VFP 8最重要的变化之一,因为它为我们提供了一个简单易用的统一接口,用于SQL Server等非VFP数据源。此外,正如您在这个月所看到的,它们也构成了可重用数据类的基础。

在讨论可重用数据类之前,我们先来看看我建立的CursorAdapter和DataEnvironment的一些子类。我给它们添加了一些额外的函数,它们将成为我们可重用数据类的起点。

SFCursorAdapter

SFSorAdapter(在附件SFDataClasses.vcx中)是CursorAdapter的一个子类,它有一些附加功能,如下所示:

它可以自动处理参数化查询:可以静态(常量)或动态(表达式,如“= =Thisform.txtName.value”,在光标打开或刷新时会进行运算)定义一个参数值。※.

它可以在光标打开后自动对其进行索引。※.

对于ADO,它还将执行一些特殊的工作,例如将DataSource属性设置为ADO记录集,并将该记录集的ActiveConnection属性设置为ADO Connection对象。当使用参数化查询时,它还会创建一个ADO命令对象,并将其传递给CursorFill方法。※.

它提供简单的错误处理(cErrorMessage属性中会有错误信息)。※.

它还有CursorAdapter所没有的Update和Release方法。※.

这个类的INIT方法创建了两个集合(使用新的Collection基类,用于维护某物的集合),一个用于SelectCmd属性可能使用的参数,另一个用于光标打开后应该自动创建的标记。它还将MULTILOCK设置为ON,因为这是CursorAdapter Cursor的要求。

this . oparameters = CreateObject(' Collection ')
this . otags = CreateObject(' Collection ')
设置多锁

AddParameter方法添加一个类似parameters集合的参数。将参数的名称传递给这个方法(这个名称应该与参数在SelectCmd属性中出现的名称一致),也可以根据需要附加参数的值(如果现在不将参数的值传递给它,可以在以后调用Getparameter方法来这样做)。这段代码演示了VFP 8中的一对新函数:新的空基本类,它没有属性、事件或方法,因此是构建轻量级对象的理想选择;还有AddProperty()函数,它类似于AddProperty方法,只是它用于那些没有这个方法的对象。

lparameters tcName,tu value
local lo parameter
lo parameter = createobject(' Empty ')
add property(lo parameter,' Name ',tcName)
add property(lo parameter,' value ',tu value)
this . oparameters . add(lo parameter,TC Name)

使用GetParmeter方法返回一个特殊的parameter对象——通常在需要设置参数值时使用。

lparameters TC name
local lo parameter
lo parameter = this . oparameters . item(TC name)
return lo parameter

connection方法用于将DataSource属性设置为所需的连接。如果DataSourceType为“ODBC”,则向该方法传递一个连接句柄。如果是“ADO”,DataSource必须是ADO Recordset对象,对象的ActiveConnection属性必须设置为活动的ADO Connection对象,所以我们需要将这个ADO Connection对象传递给SetConnection方法。Set创建一个记录集,并将该记录集的activeSetConnection设置为传递的ADO Connection对象。

lparameters tuConnection
与此
do case
case。DataSourceType = 'ODBC'
。data source = tu connection
case。DataSourceType = 'ADO'
。DataSource = Createobject('ADODB。RecordSet ')
. data source . active connection = tu connection
end case
end with

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 深入CursorAdapter(三)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情