Visual FoxPro(以下簡稱VFP)是微軟公司Visual系列開發(fā)工具中的一種。在VFP 6.0中,與外部數據源進行數據交換的方式有導入導出數據、遠程視圖、SQL Pass Through以及數據升遷等幾種方式。其中,導入導出數據是完成對靜態(tài)數據(或文本)的數據轉換,而對動態(tài)數據源的訪問則主要是使用Windows中的ODBC技術。本文介紹在設計客戶/ 服務器體系結構的應用程序時,如何使用VFP來實現與外部數據源的數據交換。
導入導出數據
導入導出數據是指利用VFP的內部轉換機制由一個靜態(tài)文件生成一個指定的新文件的過程??梢员晦D換的文件類型主要有:Excel文件、Paradox數據庫文件、Lotus電子表格中的數據以及其他形式的文本文件。
導入數據是指將一個外部文本轉換成一個新的DBF文件。例如:將A盤上的一個abc.xls文件轉換成Example數據庫下的CBA.DBF表,可用如下命令完成:
import from a:\abc.xls Database Example Name cba Type xls
導出數據是指將一個打開的VFP數據表(DBF)文件轉換成一個其他形式的外部文件,同時還可以使用范圍或條件子句對被復制的數據進行過濾。例如:
use cba
copy to abc for fieldl=“aaaaa”,type xls
上述代碼將CBA.DBF文件中滿足條件“fieldl=,“aaaaa””的記錄轉換為Excel文件abc.xls。
遠程視圖
遠程視圖以視圖的方式通過ODBC與外部數據源建立連接,從而達到訪問或更新外部數據源的目的。它是客戶/服務器體系結構中經常運用的一種訪問外部數據源的方法。在VFP中建立遠程視圖的方式主要有兩種:采用VFP中的視圖向導和程序方式。在使用程序方式時,一般需要兩個步驟:
● 通過ODBC與外部數據源建立一個命名連接;
● 定義視圖。
建立一個遠程視圖后,用戶就可以像調用一個自由表一樣來使用它。在使用遠程視圖的過程中,應當注意以下幾個問題:
● 遠程視圖只能對后臺數據庫進行查詢、插入、更新和刪除等操作,不能進行數據定義。它的事務處理只限于對本地數據庫的操作,而無權管理后臺數據庫。
● 盡量不要使用遠程視圖對后臺數據庫進行多表插入的操作,以免產生非法NULL值或引起數據不一致。
● 盡量使用SQL語句完成對后臺數據庫的操作,以免在執(zhí)行時產生二義性。
例如,我們要訪問一個遠程SQL Server上的my-db庫中的my-tab表,可由如下的語句來完成(假定sql為已在ODBC中建立的與SQL Server 服務器的my-db數據庫相連的數據源):
create connection example datasource sql userid usr-1 password sqlpass
/*建立一個名為example的與SQL Server服務器的連接*/
create sql view my-r-view remote connection example as select * from my -tab
/*建立一個名為my-r-view的遠程視圖。該視圖依賴于example連接,視圖訪問的是my-tab表中的所有字段。*/
use my-r-view
/*打開my-r-view視圖*/
browse
/*瀏覽視圖中的內容*/
導入導出數據
導入導出數據是指利用VFP的內部轉換機制由一個靜態(tài)文件生成一個指定的新文件的過程??梢员晦D換的文件類型主要有:Excel文件、Paradox數據庫文件、Lotus電子表格中的數據以及其他形式的文本文件。
導入數據是指將一個外部文本轉換成一個新的DBF文件。例如:將A盤上的一個abc.xls文件轉換成Example數據庫下的CBA.DBF表,可用如下命令完成:
import from a:\abc.xls Database Example Name cba Type xls
導出數據是指將一個打開的VFP數據表(DBF)文件轉換成一個其他形式的外部文件,同時還可以使用范圍或條件子句對被復制的數據進行過濾。例如:
use cba
copy to abc for fieldl=“aaaaa”,type xls
上述代碼將CBA.DBF文件中滿足條件“fieldl=,“aaaaa””的記錄轉換為Excel文件abc.xls。
遠程視圖
遠程視圖以視圖的方式通過ODBC與外部數據源建立連接,從而達到訪問或更新外部數據源的目的。它是客戶/服務器體系結構中經常運用的一種訪問外部數據源的方法。在VFP中建立遠程視圖的方式主要有兩種:采用VFP中的視圖向導和程序方式。在使用程序方式時,一般需要兩個步驟:
● 通過ODBC與外部數據源建立一個命名連接;
● 定義視圖。
建立一個遠程視圖后,用戶就可以像調用一個自由表一樣來使用它。在使用遠程視圖的過程中,應當注意以下幾個問題:
● 遠程視圖只能對后臺數據庫進行查詢、插入、更新和刪除等操作,不能進行數據定義。它的事務處理只限于對本地數據庫的操作,而無權管理后臺數據庫。
● 盡量不要使用遠程視圖對后臺數據庫進行多表插入的操作,以免產生非法NULL值或引起數據不一致。
● 盡量使用SQL語句完成對后臺數據庫的操作,以免在執(zhí)行時產生二義性。
例如,我們要訪問一個遠程SQL Server上的my-db庫中的my-tab表,可由如下的語句來完成(假定sql為已在ODBC中建立的與SQL Server 服務器的my-db數據庫相連的數據源):
create connection example datasource sql userid usr-1 password sqlpass
/*建立一個名為example的與SQL Server服務器的連接*/
create sql view my-r-view remote connection example as select * from my -tab
/*建立一個名為my-r-view的遠程視圖。該視圖依賴于example連接,視圖訪問的是my-tab表中的所有字段。*/
use my-r-view
/*打開my-r-view視圖*/
browse
/*瀏覽視圖中的內容*/