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