用FoxPro转换网上文本格式 苏云 1998年 第19期 13版   随着Internet的迅速发展,在网络上查询信息越来越为广大用户所接受。但是,从网上截取下来的资料虽然可以满足用户的需求,但是它们的文本格式却并不一定能适合用户的需要。例如,本人通过Internet从某图书馆下载的数据为纯文本,其排列格式如下(dat.txt):   企业编号:00001   企业名称:上海化工   员工人数:5000   主营产品:化工产品   ……   这种数据存储方式在网上较为常见。我现用FoxPro 2.5b for Windows编写了一段程序,将上述的竖排式文本格式转换成FoxPro数据库的二维表形式,以方便操作管理,即转换成如^191301a^格式(dat.dbf)。   也就是将dat.txt中的信息转换到dat.dbf数据库中去。当然,下载的数据必须是规范化的,如左边的类别名称必须是统一的,如果有不同之处,需事先将它调整好,且类别名称与右边的具体资料之间是用冒号分隔开的,每个企业的第一条信息都应是该企业的编号。   转换程序执行的过程中,首先将文本信息收入一临时数据库文件(ls.dbf)中,然后,对该数据库中每条信息进行判断,将冒号左边的查询名称,在字段名称表数据库(zdmcb.dbf)中对应找到dat.dbf中的字段名,将冒号右边的内容作为要存储的信息保存到数据库dat.dbf相应的字段中去,而对于没有冒号的信息均作为该企业的备注信息加以保存。   字段名称表数据库zdmcb.dbf的内容如^191301b^,其中查询名称为dat.txt中左边栏的类别名称,字段名为dat.dbf中的字段名。   临时数据库ls.dbf只有一个字符型字段Line,其长度为200,以保证能放下较长的信息。本程序是在Windows 95中用FoxPro编写并运行通过的。   程序如下:   SET TALK OFF   SET SAFE OFF   CLEAR ALL   CLEAR   SELE 1   USE DAT   SELE 2   USE ZDMCB   SELE 3   USE LS   ZAP   APPE FROM DAT.TXT SDF   SCAN FOR ′编号′|SLINE   X=AT(′:′,LINE)   BH=ALLTRIM(SUBS(LINE,X+1))   SELE 1   APPE BLAN   REPL 编号 WITH BH   SELE 3   SKIP   DO WHILE !′编号′|SLINE.AND.!EOF()   X=AT(′:′,LINE)   IF X>0   Y1=ALLTRIM(SUBS(LINE,1,X-1))   Y2=ALLTRIM(SUBS(LINE,X+1))   SELE 2   LOCA FOR 查询名称=Y1   IF FOUND()   XXX=ALLTRIM(字段名)   SELE 1   REPL (XXX) WITH Y2   ENDIF   ELSE   Y2=ALLTRIM(LINE)   SELE 1   REPL 备注 WITH ALLTRIM(备注)+Y2   ENDIF   SELE 3   SKIP   ENDDO   SKIP -1   ENDSCAN   CLEAR ALL