1. 缓冲与锁定设置
对于远程视图,建议使用缓冲机制来提高远程视图的工作效率和使用的方便性。首先在Option 菜单中设置Data 组件,需设置下列参数:
①选择Open Exclusive 以让库共享打开,库中的远程视图则可共享使用;
②Locking And Buffering 设置:选中Automatic File locking 和Multiple Record Locks,并将Buffering 设置成Fields Buffering,加锁方式设置为“记录级乐观锁定”。在具体设计Form 时,对数据环境中的每一个远程视图光标可重新根据需要来设置锁定和缓冲机制。如果不重新设置,它取Form 的缺省设置。
2. 数据的写入与前台刷新
对于采用了Buffering 技术的远程视图,当修改/ 删除/ 增加了记录时,需用TableUpdate(.T.,.T.) 函数来确保数据写到后台数据库中;若要取消对缓冲区中视图数据的修改,需用TableRevert(.T.) 函数。例如:
Select View1
Append Blank
Begin Transaction
if TableUpdate(.T.,.T.)
EndTranseaction
else
RollBack
=TableRevert( ·T ·)
endif
如果该远程视图与别的表/ 远程视图发生级联修改/ 删除/ 增加关系,则需使用事务机制,以确保数据的完整性。
如果对应视图的后台表/ 视图数据发生变化时,使用下述方法让前台客户机中的数据与实际后台数据一致:
①Select 〈远程视图名〉
USE〈远程视图名〉&& 再次打开即可
②Select 〈远程视图名〉
=Requery() && 刷新缓冲区值
五、远程视图使用中碰到的若干问题
1. 如何在一个远程视图中多次使用同一远程数据源?
依靠别名。例如:Select A. 船名,A. 航次,B. 姓名as 操作员,C. 姓名as 仓库员from Shipname A, worker B, worker C where A. 操作员代码=B.Code and A. 仓库员代码=C.Code
2. 设计远程视图时Select 语句的语法应符合VFP 或后台数据库?
后台数据库支持的SQL 语法。例如:Create SQL View AAA Remote Conection BB As Select A.* From Shipname A Where Convert(Char(10), 进港日期)=‘1998/05/30’
3. 远程视图能否使用Pack 和Recall 语句?
不能使用pack 语句,例如:
use View1;
delete for 〈条件〉 && 加删除标志
pack && 错误,必须使用TableUpdate () 函数
对于Recall 命令,如果已执行了TableUpdate(),则执行无效; 若未发Tableupdate(), 则可用Recall 来取消删除标记。
4. 本地视图的数据源有远程视图,如何刷新本地视图?
例如:有两个远程视图Rview1 Rview2, 创建本地视图的命令为:Create SQL view As Select A.* B.* from Rview1 A,R view2 B where A. 箱号=B. 箱号
刷新view 之前必须先刷新Rview1 和Rview2:
=requery (“Rview1”)
=Requery (“Rview2”)
=Refresh (“view”)
六、小结
远程视图是VFP 访问远程数据服务器中数据的有利武器,有了前面的介绍,就可得心应手地设计C/S 应用系统了。
参考文献
[1 ]E.sander 等著visual FoxPro3.0 实用指南机械工业出版社1996
The Skills of Using Remote View in Visual Foxpro 5.0
Wuyefu and Yuanxiaoling
Dept. Computer, Wuhan Transaction University , WuHan430063
ABSTRACT: In the paper, it is introduced how to choice option parameters and to use remote view in Visual Foxpro 5.0. In the end, the solution to some problems is also discussed.
KEYWORDS: Remote view, Remote Data, Connection, Lock, buffering