当前页面位置: » 丰搜网 » 文档中心 » 详细内容
foxpro 用离线视图工作
你可以用 use 命令打开离线视图就象打开一个联线视图一样。然而, 就象我在前面的说明一样, vfp 事实上打开离线视图的持久表而不是执行一条一般的 sql select 命令。
使用离线视图工作时有一些要注意的事:
- 改变模式到离线视图,添加, 修改或删除操作都是对视图表而没有写回到视图所基于的源表。这意味着其它人打开源表时,看不到数据在离线视图中的改变。
- 在另一方面: 你也不能从源表中刷新离线视图的内容。
- 视图表的行动象一个普通表的缓存。getfldstate() 和getnextmodified() 反映了视图的缓存状态。tableupdate() 将视图缓冲中的修改写回到视图表中, tablerevert() 则取消修改。没有这些函数将不能对源表进行任何处理。
- 你不能修改视图表的结构,也不能使用对它使用create trigger, insert, pack, 或 zap 命令 (但可以使用delete all)。
- 与联线视图一样, 离线视图自动使用行缓存和表缓存, 因此你应该将multilocks 设置为 on。如果你试图关闭缓存将会得到一条错误信息。
- 与联线视图不同的是, 打开一个离线视图不会自动打开视图所基于的源表 ,这是由于离线视图是与源表"脱离的"。这意味着当你把离线视图交给别人时,不需要提供源表的拷贝 (它可能会非常大或是一个非vfp 数据表)。同时也意味着你可以在源表上进行某些类型的(诸如重建索引之类)维护, 甚至在多个用户打开离线视图时。稍后我们将看到这种例子。
- 在离线视图上输入数据时,源表的规则和触发器不会激活, 仅当你将数据更新到源表时, 源表的规则和触发器才会激活。这就是说除非你为使用 dbsetprop()为离线视图定义了规则, 有可能有不正确的数据进入离线视图并不能在较早的时候被发现。
- 如果你使用"修补关键字", 你需要为添加到视图中的记录指定关键字值。最常用的指定关键字段值的方法是调用一个nextid 程序来为该表的取得下一个可用的基本关键字段值。如果你使用的是这种方案, 你需要使用dbsetprop() 来设置离线视图中的字段的defaultvalue 属性,这样添加记录到离线视图中时可取得指定的关键字段值。
- 使用候选关键字段的一个不利因素是: 如果离线视图用于允许远程数据输入 (如在笔记本电脑中), 你需要为每一个笔记本电脑指定一个关键字段值块,这样主关键字段的值才不会重复。作为一种选择, 你可以将用户名或笔记本电脑名组合进关键字段值中, 这样就不用担心会出现相同的主关键字段值了。
- 如果一个离线视图是用于一个远程计算机上进行数据输入, 你需要传送离线视图表(包括fpt), 持久表缓存文件和数据库容器(dbc, dcx, 和dct) 到那个远程计算机中。