VFP 5.0远程视图使用面面观

2024-03-25 09:58

本文主要是介绍VFP 5.0远程视图使用面面观,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

武汉交通科技大学计算机系 吴业福 袁小玲   摘要:远程视图是Visual Foxpro 5.0 中开发Client/Server 应用系统的基础,本文首先介绍了远程视图有关参数的放置技巧,然后介绍如何去设计、使用远程视图,最后讨论了使用远程视图的四个实际问题。   关键词:远程视图;远程数据;连接;锁定;缓冲。 一、绪论   VFP 是一种较好的客户/ 服务器应用系统开发工具,用VFP 开发C/S 系统的关键是如何访问远程数据( 远程服务器中的Table/View)。可以使用VFP 提供的SQL Pass-Through 函数访问远程数据,但最常用的方法是使用远程视图(Remote View) 去访问远程数据。本文结合本人的使用经验对远程视图的使用技巧加以介绍。 二、远程视图的环境设置   在设计远程视图时,需要对远程视图的有关环境信息进行设置。使用Tools 菜单中的Options.... 选项来设置Remote Data 选项。其选项设置说明如下:   *Share Connection: 指出今后设计的远程视图是否使用共享连接。使用共享连接可大大减少数据库服务器中客户访问许可数,但会影响客户机的访问速度。   *SQL Updates/Criteria: 指出对后台数据进行update 操作的条件。   它有四种可能:   ①Key Field only ②Key and Updatable Fields   ③Key and Modified Fields ④Key and Time Stamp。   一般选择③较合适。   *SQL Updates/Method: 指出对后台数据的更新方法。   它有两种选择:①SQL Delete then Insert ②SQL update。   一般选择②比较合适。   *Connection Defaults: 主要用于SQL Pass-Through 函数访问远程数据,对于远程视图则不需要放置。 三、远程视图的设计   有两种方法设计远程视图,一是使用View Designer;二是使用SQL 语句。用View Designer 可设计较为简单的视图,而使用SQL 的Create Remote View 语句则可进行复杂视图的设计。如果试图去用View Designer 观察或修改( 用Create 创建的视图) 则极有可能被破坏它( 例如:若创建视图的Select 语句中含有exists 子句, 则一定会被破坏!)   1. 用Create 命令设计   例如:假定连接名为WYFconnect,两个远程表为SealList 和ShipList. Create 命令可如下:   CREATE SQL VIEW ViewTest REMOTE CONNECTION WYFconnect AS SELECT SealList.* FROM SealList, ShipList WHERE SealList IS NOT NULL AND SealList AND 箱号NOT IN (SELECT 箱号FROM ShipList WHERE ShipList. 箱号IS NOT NULL AND ShipList. 船名=SealList. 船名   使用该方法可以在程序中动态地构造满足不同条件的远程视图(View Designer 不能构造带参数的远程视图)。例如:设m.ShipName 为一可变内存变量,其创建语句为:   CREATE SQL VIEW ViewTest REMOTE CONNECTION WYFconnect AS SELECT * FROM SealList WHERE 船名=m.ShipName.   2. 用View Designer 设计   启动View Designer 选择连接名后出现设计图, 在其上部可以加入远程服务器中的表或视图,在其下部进行参数/ 条件设置:   *Select Criteria: 设置远程数据值上的记录必须满足的条件,类似于下SQL Select 语句中的Where 子句。在这里可以构造复杂条件,但条件中使用的函数和语法规则必须是后台数据库支持的,例如:不能使用DTOC( 日期)=‘90/01/01’,而必须使用Convert(char(10), 日期)=‘90/01/01’, 因为后台数据库不支持DTOC() 函数。   *Fields: 选择结果集中的字段,在这里要强调的是Function/Expression 的使用,使用它可构造出与源表字段不同的字段,如:T. 船名+‘’+T. 中文AS 船舶。实践证明Function/Expression 中不能使用双引号,而只能使用单引号。   *Order by 和Group by: 对结果分组、分类。要求符合后台数据库所支持的SQL 语法。   *Update Criteria: 设置视图的有关替换参数, 具体如下:   ①要选中Send SQL Update   ②SQL where 一般选择Key and Modify Fields   ③Update Using 一般选择SQL Update   ④务请选择关键字段和可更改字段( 在钥匙符号下面和铅笔符号下面加“√”),否则将无法正确完成Insert/update 功能。 四、远程视图的使用   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

这篇关于VFP 5.0远程视图使用面面观的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/844642

相关文章

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

C#中lock关键字的使用小结

《C#中lock关键字的使用小结》在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时,其他线程无法访问同一实例的该代码块,下面就来介绍一下lock关键字的使用... 目录使用方式工作原理注意事项示例代码为什么不能lock值类型在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND