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

談2種數(shù)據(jù)庫內(nèi)容HTML格式的輸出方法 

[摘要]在實(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ì)更加靈活,有興趣的讀者不妨一試。