明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

VFP下客戶機(jī)訪問(wèn)任意映射服務(wù)器的方法

[摘要]在開(kāi)發(fā)網(wǎng)絡(luò)多用戶應(yīng)用系統(tǒng)時(shí),VFP的程序員常采用如下方法:將1個(gè)或多個(gè)數(shù)據(jù)庫(kù)(.DBC及.DBF)作為共享資源放在1臺(tái)或多臺(tái)NOVELL,WIN-NT(或在WIN9X對(duì)等網(wǎng)上所設(shè)定)的服務(wù)器上,應(yīng)用程序及臨時(shí)文件放在本地客戶的機(jī)WIN9X環(huán)境下,在客戶機(jī)上開(kāi)發(fā)時(shí)將本機(jī)對(duì)這些服務(wù)器訪問(wèn)盤(pán)符預(yù)先映射成...
在開(kāi)發(fā)網(wǎng)絡(luò)多用戶應(yīng)用系統(tǒng)時(shí),VFP的程序員常采用如下方法:將1個(gè)或多個(gè)數(shù)據(jù)庫(kù)(.DBC及.DBF)作為共享資源放在1臺(tái)或多臺(tái)NOVELL,WIN-NT(或在WIN9X對(duì)等網(wǎng)上所設(shè)定)的服務(wù)器上,應(yīng)用程序及臨時(shí)文件放在本地客戶的機(jī)WIN9X環(huán)境下,在客戶機(jī)上開(kāi)發(fā)時(shí)將本機(jī)對(duì)這些服務(wù)器訪問(wèn)盤(pán)符預(yù)先映射成指定的F:(H:..)等。最后編譯成.EXE文件生成安裝系統(tǒng)安裝到每臺(tái)客戶機(jī)上。

---- 實(shí)際應(yīng)用中局域網(wǎng)內(nèi)各客戶機(jī)因本身盤(pán)符數(shù)量的原因,對(duì)這指定的1臺(tái)或多臺(tái)服務(wù)的映射盤(pán)符可能并不是開(kāi)發(fā)機(jī)上的F:(H:)。這時(shí)麻煩來(lái)了,程序一運(yùn)行,屏幕提示“‘定位數(shù)據(jù)庫(kù)’—‘初始化臨時(shí)表對(duì)象時(shí)發(fā)生錯(cuò)誤。找不到F:…???.DBC’” 。如果整個(gè)應(yīng)用軟件有.DBC庫(kù)表和各種自由表,又有許多表單組成,此時(shí)讓用戶去定位數(shù)據(jù)庫(kù)或自由表在什么位置,簡(jiǎn)直是不可能的。

---- 筆者是這樣解決這個(gè)問(wèn)題的(大致方法如下):

---- 1. 建立一個(gè)包含文件:如info.h

#include DBCname1_loc drv1_loc+’\citicmis1.dbc’

;服務(wù)器1上的庫(kù)1

#include DBCname2_loc drv2_loc+’\citicmis2.dbc’;

服務(wù)器2上的庫(kù)2

#include DBCusrinf_loc drv1_loc+’\citicmis1!usrinf.dbf’

;庫(kù)1中表

#include DBCEMP_loc drv2_loc+’\citicmis2!emp.dbf ‘ ;

庫(kù)2中的表

#include dbcjgbh_loc drv1_loc+’\rsc\jgbh.dbf’;

庫(kù)中表或自由表

---- 2. 在應(yīng)用系統(tǒng)的某目錄中建文本文件:如.\bmp\serdrv.txt, 內(nèi)有二行文本

F:\acc ;某客戶機(jī)對(duì)第1臺(tái)服務(wù)器的映射盤(pán)符

H:\acc ;某客戶機(jī)對(duì)第2臺(tái)服務(wù)器的映射盤(pán)符

---- 3. 在軟件的主程序main.prg中 建全局變量 drv1_loc,drv2_loc,一開(kāi)始就用低級(jí)文件操作命令fopen,fget等將serdev.txt中的二行 f:\acc,h:\acc分別讀入并賦值給drv1_loc,drv2_loc。

---- 4. 應(yīng)用軟件中的表單或其他過(guò)程都包含info.h 文件。

---- 4.1 對(duì)于自由表:

---- 可在表單的LOAD 事件中 用如 use (dbcjgbh_loc) in 0 alia jgbh shar打開(kāi)表,在UNLOAD事件中用 USE in jgbh 關(guān)閉表。

---- 4.2 對(duì)于數(shù)據(jù)庫(kù)的表:

---- 可在表單設(shè)計(jì)時(shí)的數(shù)據(jù)環(huán)境中打開(kāi)表(如打開(kāi)了 usrinf.dbf,emp.dbf),此事 數(shù)據(jù)環(huán)境中的 Dataenvironmnet.cursor?.database屬性 自動(dòng)設(shè)定為所在的服務(wù)器的數(shù)據(jù)庫(kù),如本例為 f:\acc\citicmis1.dbc,h:\acc\citicmis2.dbc 。

---- 這時(shí)可以在Dataenvironmnet對(duì)象的 BeforeOpenTables 方法中寫(xiě)入如下代碼:

---- This.Cursor1.database=DBCNAME1_LOC

---- This.Cursor2.database=DBCNAME2_LOC 就可解決問(wèn)題。

---- 以上方法生成的.EXE系統(tǒng),安裝到各客戶機(jī)上后,只要修改各客戶機(jī)的.\bmp\serdrv.txt中為實(shí)際對(duì)服務(wù)器盤(pán)符指向就能使用應(yīng)用系統(tǒng)運(yùn)行自如了!用此方法開(kāi)發(fā)的系統(tǒng)已在筆者所在系統(tǒng)各單位的WIN9X對(duì)WIN9X,WIN9X對(duì)NOVELL服務(wù)器,VFP6.0環(huán)境中運(yùn)行著!