
假设有一个学籍表,有一个字段名入学成绩,要输出入学成绩最大值。程序如下:
clear
use 学籍
max=入学成绩
do while not eof()
if max<入学成绩
max=入学成绩
endif
skip
enddo
"入学成绩最大值是:",max
use
return
或者用scan结构去写:
clear
use 学籍
max=入学成绩
scan
if max<入学成绩
max=入学成绩
endif
endscan
"入学成绩最大值是:",max
use
return
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()来执行更新
不管使用哪种方法,你都必须为更新设置冲突检测。
我将在以后的文章中对各种数据源的使用进行逐步介绍
完全可以。
sql="select from 数据表 where ID=需要指定的记录号"
变量=rs("字段名")
注意:where ID=需要指定的记录号 中 where后面是查询条件,你可以使用你的表中的任何字段进行查询。
格式是:where 字段名='" & 查询变量 & "' ,这是字符型字段,如果是数字字段,没有单引号。
以上就是关于VFP 提取数据库中数据的命令全部的内容,包括:VFP 提取数据库中数据的命令、vfp9 中的ca的使用方法、vfp程序中能不能通过指针获取数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)