VFP訪問(wèn)外部數(shù)據(jù)源的幾種方法

字號(hào):

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