談2種數(shù)據(jù)庫內(nèi)容HTML格式的輸出方法
發(fā)表時(shí)間:2024-06-19 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]在實(shí)際應(yīng)用VFP編寫各類應(yīng)用系統(tǒng)過程中,用戶可能建立了大量的數(shù)據(jù)信息,這些信息一般都是存貯在各類數(shù)據(jù)表中,隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,許多數(shù)據(jù)信息要求在網(wǎng)上共享使用,如果相關(guān)的信息已經(jīng)存在數(shù)據(jù)表中,可以不需要重新輸入信息,直接生成可以在網(wǎng)上瀏覽使用的HTML格式文件,下面筆者介紹兩種數(shù)據(jù)庫內(nèi)容到HTM...
在實(shí)際應(yīng)用VFP編寫各類應(yīng)用系統(tǒng)過程中,用戶可能建立了大量的數(shù)據(jù)信息,這些信息一般都是存貯在各類數(shù)據(jù)表中,隨著網(wǎng)絡(luò)技術(shù)的迅速發(fā)展,許多數(shù)據(jù)信息要求在網(wǎng)上共享使用,如果相關(guān)的信息已經(jīng)存在數(shù)據(jù)表中,可以不需要重新輸入信息,直接生成可以在網(wǎng)上瀏覽使用的HTML格式文件,下面筆者介紹兩種數(shù)據(jù)庫內(nèi)容到HTML格式輸出的方法。
一、是利用VFP提供的數(shù)據(jù)表內(nèi)容轉(zhuǎn)換到HTML格式文件類庫實(shí)現(xiàn)。在VFP系統(tǒng)目的FFC子目錄下存在一個(gè)_internet.vcx類庫,其中_dbf2html為數(shù)據(jù)表到HTML格式轉(zhuǎn)換類,在使用時(shí),可在表單控件窗口中使用添加類的方法將該類庫添加到控件中,并在表單中添加_dbf2html類,該類有關(guān)的屬性、事件和方法說明如下:
cSource屬性 指出生成HTML的數(shù)據(jù)表源文件名,缺省值為“”。
NgenOutput屬性 _GENHTML輸出選項(xiàng)
0 — 生成輸出文件
1 — 生成輸出文件并在Visual FoxPro編輯器中顯示它
2 — 生成輸出文件并在Internet Explorer編輯器中顯示它
3 — 在顯示Save As 對(duì)話框之后生成并顯示輸出文件
4 — 建立PUBLIC_oHTML對(duì)象并生成一個(gè)文件
5 — 建立PUBLIC_oHTML對(duì)象并不生成一個(gè)文件
缺省值為2
cOutFile屬性 指出輸出的HTML文件的名稱,缺省值為“”
IautoNameOutput屬性 指出_GENHTML是否自動(dòng)基于源來命令該輸出文件,缺省值為.T.。
IuseCurrentAlias屬性 指出是否使用當(dāng)前別名作為源,缺省值為.T.。
Cscope屬性 指出輸出的范圍(例好NEXT或ALL),缺省值為“”。
CStyle屬性 指出Genhtml.dbf的ID字段列出的可視風(fēng)格,缺省值為“”。
GenHTML方法 通過使用Csource、cOutpur和nGenOutput中指定的屬性調(diào)用
Genhtml.prg來生成HTML代碼
語法:GenHTML()
返回值:無
參數(shù):無
如果在磁盤中存在一個(gè)干部基本情況數(shù)據(jù)表,我們可以使用以上介紹的類庫自動(dòng)將人員通信錄中的數(shù)據(jù)信息制作網(wǎng)頁格式。
新建一個(gè)表單,在表單中利用表單控件類中添加_internet.vcx類庫,點(diǎn)擊_dbf2html類添加到表單中,將該類的NAME屬性設(shè)為ZH,其它屬性均為默認(rèn)值,然后在表單中添加一個(gè)命令按鈕COMMAND1,在該命令按鈕的CLICK事件中加入如下代碼:
FILE1=GETFILE("DBF") &&選擇一個(gè)數(shù)據(jù)表文件
FILE2=SUBS(FILE1,1,AT(".",FILE1)-1) &&去掉文件名后綴
FILE2=SUBS(FILE2,RAT("\",FILE2)+1) &&去掉文件名的路徑
IF USED("&FILE2")
SELE &FILE2
ELSE
SELE 0
USE &FILE2
ENDIF
&&以上命令是確認(rèn)一個(gè)數(shù)據(jù)文件已經(jīng)打開
THISFORM.ZH.GENHTML() &&執(zhí)行轉(zhuǎn)換程序
保存并運(yùn)行這個(gè)表單,使用鼠標(biāo)點(diǎn)擊窗口中的命令按鈕,將彈出一個(gè)選擇文件對(duì)話框,在這里可任意選擇一個(gè)數(shù)據(jù)表文件,我們選擇的是人員通信錄數(shù)據(jù)表,確定后會(huì)發(fā)現(xiàn),系統(tǒng)將會(huì)自動(dòng)生成一個(gè)以所選擇的數(shù)據(jù)表文件同名的以HTM為擴(kuò)展名的網(wǎng)頁文件并啟動(dòng)瀏覽器瀏覽這個(gè)生成的HTM文件,實(shí)現(xiàn)了數(shù)據(jù)庫內(nèi)容的HTML文件的輸出。
二、應(yīng)用FrontPage2000網(wǎng)頁編輯工具與VFP系統(tǒng)編程技巧的結(jié)合實(shí)現(xiàn),前一種方法生成的HTML格式文件是以表格形式出現(xiàn)的,每一行為一條記錄,當(dāng)數(shù)據(jù)庫中字段內(nèi)容過多,瀏覽生成的HTML格式文件就非常不方便。而在實(shí)際工作中,常常需要將某一個(gè)人的情況生成一頁自定表格樣式的HTML格式文件,利用上文提供的方法就不能實(shí)現(xiàn)了。可以采取應(yīng)用FrontPage2000網(wǎng)頁編輯工具與VFP系統(tǒng)編程技巧的結(jié)合,實(shí)現(xiàn)方式多樣網(wǎng)頁文件的生成輸出要求。
首先使用FrontPage2000編輯工具,編輯一個(gè)所見即所得的靜態(tài)網(wǎng)頁,最終編輯的網(wǎng)頁如下圖:
在這個(gè)網(wǎng)頁設(shè)計(jì)器中,生成的表格中前面帶##的字符為所在生成網(wǎng)頁格式數(shù)據(jù)來源中的數(shù)據(jù)庫中的字段名稱,如##姓名,其中姓名為數(shù)據(jù)庫中字段名稱。查看HTML源文件,我們把該源文件全部進(jìn)行選擇,然后進(jìn)行復(fù)制操作。
新建一個(gè)數(shù)據(jù)庫存放網(wǎng)頁格式內(nèi)容,該庫命名為LSK.DBF,數(shù)據(jù)庫中只有一個(gè)字段名為HTMLNR,備注型。為該數(shù)據(jù)庫增加一條空記錄,然后打開備注字段HTMLNR進(jìn)入編輯窗口狀態(tài),然后執(zhí)行粘貼操作,把在FrontPage2000生成網(wǎng)頁格式源文件內(nèi)容全部復(fù)制到該備注字段中,這樣一個(gè)設(shè)計(jì)完好的網(wǎng)頁格式庫就生成了,在這里也可以生成大量的、不同格式的網(wǎng)頁內(nèi)容存貯到數(shù)據(jù)庫中,供隨時(shí)生成網(wǎng)頁使用,這里我們以一種樣式為例。
編寫一段轉(zhuǎn)換程序,該程序的主要工作原理為打開LSK數(shù)據(jù)庫,取出生成網(wǎng)頁的格式字符串內(nèi)容,打開需要輸出內(nèi)容的干部基本情況數(shù)據(jù)庫文件,用該數(shù)據(jù)庫中相應(yīng)字段的內(nèi)容替換網(wǎng)頁格式中以##為標(biāo)識(shí)的字段串內(nèi)容,全部字段內(nèi)容替換完畢,最后將該格式的文本內(nèi)容生成一個(gè)HTML文件,即可完成整個(gè)系統(tǒng)要求,編寫的程序如下:
USE LSK &&打開網(wǎng)頁格式內(nèi)容庫
ZYNR=HTMLNR &&取出一個(gè)網(wǎng)頁格式內(nèi)容文本
USE RYK &&打開需要生成網(wǎng)頁的數(shù)據(jù)庫
ZYNR=STRTRAN(ZYNR,"##姓名",RYK.姓名)
ZYNR=STRTRAN(ZYNR,"##性別",RYK.性別)
&&因?yàn)樽址鎿Q函數(shù)只能使用字符型,所以日期型和數(shù)字型必須進(jìn)行轉(zhuǎn)換
ZYNR=STRTRAN(ZYNR,"##出生年月",STR(YEAR(RYK.出生年月))+'.'+STR(MONT(RYK.出生年月))+'.'+STR(DAY(RYK.出生年月)))
ZYNR=STRTRAN(ZYNR,"##曾用名",RYK.曾用名)
ZYNR=STRTRAN(ZYNR,"##民族",RYK.民族)
ZYNR=STRTRAN(ZYNR,"##工作年月",STR(YEAR(RYK.工作年月))+'.'+STR(MONT(RYK.工作年月))+'.'+STR(DAY(RYK.工作年月)))
ZYNR=STRTRAN(ZYNR,"##入學(xué)時(shí)間",STR(YEAR(RYK.入學(xué)時(shí)間))+'.'+STR(MONT(RYK.入學(xué)時(shí)間))+'.'+STR(DAY(RYK.入學(xué)時(shí)間)))
ZYNR=STRTRAN(ZYNR,"##畢業(yè)時(shí)間",STR(YEAR(RYK.畢業(yè)時(shí)間))+'.'+STR(MONT(RYK.畢業(yè)時(shí)間))+'.'+STR(DAY(RYK.畢業(yè)時(shí)間)))
ZYNR=STRTRAN(ZYNR,"##畢業(yè)院校",RYK.畢業(yè)院校)
ZYNR=STRTRAN(ZYNR,"##學(xué)歷",RYK.學(xué)歷)
ZYNR=STRTRAN(ZYNR,"##所學(xué)專業(yè)",RYK.所學(xué)專業(yè))
ZYNR=STRTRAN(ZYNR,"##家庭住址",RYK.家庭住址)
ZYNR=STRTRAN(ZYNR,"##郵政編碼",RYK.郵政編碼)
ZYNR=STRTRAN(ZYNR,"##家庭電話",RYK.家庭電話)
ZYNR=STRTRAN(ZYNR,"##家庭電話",RYK.家庭電話)
ZYNR=STRTRAN(ZYNR,"##手機(jī)號(hào)",RYK.手機(jī)號(hào))
ZYNR=STRTRAN(ZYNR,"##工作單位",RYK.工作單位)
ZYNR=STRTRAN(ZYNR,"##現(xiàn)任何職",RYK.現(xiàn)任何職)
ZYNR=STRTRAN(ZYNR,"##個(gè)人簡歷",RYK.個(gè)人簡歷)
&&全部替換完畢,將最后的結(jié)果生成一個(gè)HTML文件
=STRTOFILE(ZYNR,'ABC.HTM')
USE RYK
執(zhí)行這個(gè)程序,將會(huì)自動(dòng)生成一個(gè)名字為ABC.HTM文件,在瀏覽器中查看這個(gè)文件,該文件顯示如下:
我們發(fā)現(xiàn)數(shù)據(jù)庫中的相關(guān)字段中的內(nèi)容變成了該網(wǎng)頁中的內(nèi)容,這樣就非常方便地實(shí)現(xiàn)了數(shù)據(jù)庫中內(nèi)容到網(wǎng)頁格式文件的輸出。在實(shí)際應(yīng)用過程中,還可以事先設(shè)計(jì)生成大量的不同樣式的網(wǎng)頁存貯在數(shù)據(jù)庫中,利用這個(gè)庫方便地實(shí)現(xiàn)各類網(wǎng)頁的輸出,擴(kuò)展了數(shù)據(jù)庫數(shù)據(jù)內(nèi)容的應(yīng)用范圍。
以上兩種方法可以根據(jù)不同的要求進(jìn)行使用,在實(shí)現(xiàn)應(yīng)用中還可以先在數(shù)據(jù)庫中執(zhí)行查詢操作,然后將查詢的結(jié)果生成網(wǎng)頁進(jìn)行瀏覽,應(yīng)用方法會(huì)更加靈活,有興趣的讀者不妨一試。