foxpro用离线视图工作,第1张

foxpro用离线视图工作,第2张

您可以使用USE命令打开脱机视图,就像打开联机视图一样。然而,正如我前面解释的,VFP实际上是打开离线视图的持久表,而不是执行一个通用的SQL SELECT命令。

使用脱机视图时,有一些注意事项:

改变模式为离线视图,增加、修改、删除都是可视化图表,不回写视图所基于的源表。这意味着当其他人打开源表时,他们无法在脱机视图中看到数据更改。
另一方面:您也不能从源表中刷新脱机视图的内容。
视图表的作用类似于普通表的缓存。Getfldstate()和getnextmodified()反映了视图的缓存状态。Update()将视图缓冲区中的更改写回视图表,tablerevert()取消这些更改。没有这些函数,您就不能对源表做任何事情。
不能修改视图表的结构,也不能对其使用create trigger、insert、pack或zap命令(但可以使用delete all)。
与联机视图一样,脱机视图自动使用行缓存和表缓存,因此您应该将multilocks设置为on。如果您尝试关闭缓存,将会收到一条错误消息。
与联机视图不同,打开脱机视图不会自动打开该视图所基于的源表,因为脱机视图与源表是“分离”的。这意味着当您将脱机视图提供给其他人时,您不需要提供源表的副本(它可能非常大或者是非VFP数据表)。这也意味着您可以对源表执行某种维护(比如重建索引),即使当多个用户打开脱机视图时也是如此。我们将在后面看到这个例子。
当您在脱机视图中输入数据时,源表的规则和触发器不会被激活,只有当您将数据更新到源表时才会被激活。也就是说,除非你为offline view定义了使用dbsetprop()的规则,否则不正确的数据就有可能进入offline view而无法更早发现。
如果使用“修补关键字”,则需要为添加到视图中的记录指定关键字值。指定键字段值的最常见方式是调用NEXTID程序来获取表的下一个可用的基本键字段值。如果使用这种方案,需要使用dbsetprop()设置脱机视图中字段的DefaultValue属性,这样在脱机视图中添加记录时就可以获得指定的关键字段值。
使用候选关键字字段的一个缺点是,如果使用脱机视图允许远程数据输入(如在便携式计算机中),您需要为每台便携式计算机指定一个关键字字段值块,这样主键字段的值就不会重复。或者,您可以将用户名或笔记本电脑名称合并到关键字段值中,这样您就不必担心相同的主键字段值。
如果脱机视图用于远程计算机上的数据输入,您需要将脱机视图表(包括FPT)、持久表缓存文件和数据库容器(DBC、DCX和DCT)传输到该远程计算机。
如果您需要确保这些记录在视图脱机后被修改过,请使用use命令的admin子句。这需要对视图表进行独占访问,否则您会收到一条错误消息。以下是使用此命令的示例:

使用LV _客户管理专用

当您以管理模式打开视图时,它会自动使用表缓存而不是行缓存。

试图更改表的缓存模式将导致错误。

但是当在管理模式下打开一个视图时,可以使用getnextmodified()和getfldstate()来确定这些记录中的哪些记录和哪些字段被修改了。

有趣的是,当一个脱机视图在管理模式下打开时,它的源表不会自动打开,所以VFP必须使用TBF文件来检查哪些记录被修改了。

当视图以管理模式打开时,无法更新源表;有关更多详细信息,请参考下一章的更新源表。但是,您可以使用tablerevert()来撤消对脱机视图的修改。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » foxpro用离线视图工作

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情