2008-01-26

VFP遠程視圖使用面面觀

摘要:遠程視圖是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

0 Comments:

張貼留言

<< Home