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

