VFP遠(yuǎn)程視圖使用面面觀

字號(hào):

摘要:遠(yuǎn)程視圖是Visual Foxpro 5.0 中開(kāi)發(fā)Client/Server 應(yīng)用系統(tǒng)的基礎(chǔ),本文首先介紹了遠(yuǎn)程視圖有關(guān)參數(shù)的放置技巧,然后介紹如何去設(shè)計(jì)、使用遠(yuǎn)程視圖,最后討論了使用遠(yuǎn)程視圖的四個(gè)實(shí)際問(wèn)題。
    一、緒論
    VFP 是一種較好的客戶/ 服務(wù)器應(yīng)用系統(tǒng)開(kāi)發(fā)工具,用VFP 開(kāi)發(fā)C/S 系統(tǒng)的關(guān)鍵是如何訪問(wèn)遠(yuǎn)程數(shù)據(jù)( 遠(yuǎn)程服務(wù)器中的Table/View)??梢允褂肰FP 提供的SQL Pass-Through 函數(shù)訪問(wèn)遠(yuǎn)程數(shù)據(jù),但最常用的方法是使用遠(yuǎn)程視圖(Remote View) 去訪問(wèn)遠(yuǎn)程數(shù)據(jù)。本文結(jié)合本人的使用經(jīng)驗(yàn)對(duì)遠(yuǎn)程視圖的使用技巧加以介紹。
    二、遠(yuǎn)程視圖的環(huán)境設(shè)置
    在設(shè)計(jì)遠(yuǎn)程視圖時(shí),需要對(duì)遠(yuǎn)程視圖的有關(guān)環(huán)境信息進(jìn)行設(shè)置。使用Tools 菜單中的Options.... 選項(xiàng)來(lái)設(shè)置Remote Data 選項(xiàng)。其選項(xiàng)設(shè)置說(shuō)明如下:
    *Share Connection: 指出今后設(shè)計(jì)的遠(yuǎn)程視圖是否使用共享連接。使用共享連接可大大減少數(shù)據(jù)庫(kù)服務(wù)器中客戶訪問(wèn)許可數(shù),但會(huì)影響客戶機(jī)的訪問(wèn)速度。
    *SQL Updates/Criteria: 指出對(duì)后臺(tái)數(shù)據(jù)進(jìn)行update 操作的條件。
    它有四種可能:
    ①Key Field only ②Key and Updatable Fields
    ③Key and Modified Fields ④Key and Time Stamp。
    一般選擇③較合適。
    *SQL Updates/Method: 指出對(duì)后臺(tái)數(shù)據(jù)的更新方法。
    它有兩種選擇:①SQL Delete then Insert ②SQL update。
    一般選擇②比較合適。
    *Connection Defaults: 主要用于SQL Pass-Through 函數(shù)訪問(wèn)遠(yuǎn)程數(shù)據(jù),對(duì)于遠(yuǎn)程視圖則不需要放置。
    三、遠(yuǎn)程視圖的設(shè)計(jì)
    有兩種方法設(shè)計(jì)遠(yuǎn)程視圖,一是使用View Designer;二是使用SQL 語(yǔ)句。用View Designer 可設(shè)計(jì)較為簡(jiǎn)單的視圖,而使用SQL 的Create Remote View 語(yǔ)句則可進(jìn)行復(fù)雜視圖的設(shè)計(jì)。如果試圖去用View Designer 觀察或修改( 用Create 創(chuàng)建的視圖) 則極有可能被破壞它( 例如:若創(chuàng)建視圖的Select 語(yǔ)句中含有exists 子句, 則一定會(huì)被破壞!)
    1. 用Create 命令設(shè)計(jì)
    例如:假定連接名為WYFconnect,兩個(gè)遠(yuǎn)程表為SealList 和ShipList. Create 命令可如下:
    CREATE SQL VIEW ViewTest REMOTE CONNECTION WYFconnect AS SELECT SealList.* FROM SealList, ShipList WHERE SealList IS NOT NULL AND SealList AND 箱號(hào)NOT IN (SELECT 箱號(hào)FROM ShipList WHERE ShipList. 箱號(hào)IS NOT NULL AND ShipList. 船名=SealList. 船名
    使用該方法可以在程序中動(dòng)態(tài)地構(gòu)造滿足不同條件的遠(yuǎn)程視圖(View Designer 不能構(gòu)造帶參數(shù)的遠(yuǎn)程視圖)。例如:設(shè)m.ShipName 為一可變內(nèi)存變量,其創(chuàng)建語(yǔ)句為:
    CREATE SQL VIEW ViewTest REMOTE CONNECTION WYFconnect AS SELECT * FROM SealList WHERE 船名=m.ShipName.
    2. 用View Designer 設(shè)計(jì)
    啟動(dòng)View Designer 選擇連接名后出現(xiàn)設(shè)計(jì)圖, 在其上部可以加入遠(yuǎn)程服務(wù)器中的表或視圖,在其下部進(jìn)行參數(shù)/ 條件設(shè)置:
    *Select Criteria: 設(shè)置遠(yuǎn)程數(shù)據(jù)值上的記錄必須滿足的條件,類似于下SQL Select 語(yǔ)句中的Where 子句。在這里可以構(gòu)造復(fù)雜條件,但條件中使用的函數(shù)和語(yǔ)法規(guī)則必須是后臺(tái)數(shù)據(jù)庫(kù)支持的,例如:不能使用DTOC( 日期)=‘90/01/01’,而必須使用Convert(char(10), 日期)=‘90/01/01’, 因?yàn)楹笈_(tái)數(shù)據(jù)庫(kù)不支持DTOC() 函數(shù)。
    *Fields: 選擇結(jié)果集中的字段,在這里要強(qiáng)調(diào)的是Function/Expression 的使用,使用它可構(gòu)造出與源表字段不同的字段,如:T. 船名+‘’+T. 中文AS 船舶。實(shí)踐證明Function/Expression 中不能使用雙引號(hào),而只能使用單引號(hào)。
    *Order by 和Group by: 對(duì)結(jié)果分組、分類。要求符合后臺(tái)數(shù)據(jù)庫(kù)所支持的SQL 語(yǔ)法。
    *Update Criteria: 設(shè)置視圖的有關(guān)替換參數(shù), 具體如下:
    ①要選中Send SQL Update
    ②SQL where 一般選擇Key and Modify Fields
    ③Update Using 一般選擇SQL Update
    ④務(wù)請(qǐng)選擇關(guān)鍵字段和可更改字段( 在鑰匙符號(hào)下面和鉛筆符號(hào)下面加“√”),否則將無(wú)法正確完成Insert/update 功能