VFP下客戶機(jī)訪問(wèn)任意映射服務(wù)器的方法
發(fā)表時(shí)間:2024-06-16 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]在開(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)行著!