在实际应用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
执行这个程序,将会自动生成一个名字为AB