04
2009
04

WebDDA之一二三四

  什么是WebDDA?   WebDDA就是Web+DDA。   那什么是DDA?   DDA是Drug Data Analyze(药品数据分析)的简称,那是一个基于VFP编程的,用于查询和分析所采集药品信息的小小的应用程序。   顾名思义,WebDDA就是DDA的网页版。   其实,DDA和WebDDA是什么无关紧要,它除了对我个人有意义外,和旁人几乎没什么关系,它在这篇日志里出现仅仅是出于我个人的自我需求——为了纪念一下DDA的发展或者说WebDDA的诞生。   我这篇日志的重点,不是WebDDA,更不是DDA,而是和WebDDA有关的一二三四。   一是ASP数据库查询源代码。   去年的时候,我就这么个想法,想拓展DDA的网络应用,那时我就想到ASP+MDB的方式。但是对于ASP来说,我是一个新手,甚至连新手也算不上,我只能是下了人家的源码修修改改,往往最终效果差强人意。而关于这个ASP查询,我一直没有找到易懂、简单、好修改的源码,所以就一直拖了下来。   这几天忙里偷闲,居然找到这么一个符合要求的源码,经试用通过,下面慢慢陈述。   首先建立一个MDB数据库,数据库名mydata,表名basedata,字段名分别为“品名”、“产地”、“规格”、“批号”、“供货单位”等,字段类型均为文本型。   其次设计一个查询首页index.htm,其主要代码如下: [code] WebDDA
品名:
产地:
批号:
 
[/code]   最后设计查询页面search.asp,其主要代码如下: [code] <% dim conn dim connstr dim rs dim sql Set conn= Server.CreateObject("ADODB.Connection") connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("mydata.mdb") conn.Open connstr Set rs= Server.CreateObject("ADODB.Recordset") %> Search
<% pm=request.QueryString("pm") cd=request.QueryString("cd") ph=request.QueryString("ph") if pm="" then if cd="" then if ph="" then sql="select * from basedata where 1=0" else sql="select * from basedata where 批号 like '%"&ph&"%'" end if else if ph="" then sql="select * from basedata where 产地 like '%"&cd&"%'" else sql="select * from basedata where 产地 like '%"&cd&"%' and 批号 like '%"&ph&"%'" end if end if else if cd="" then if ph="" then sql="select * from basedata where 品名 like '%"&pm&"%'" else sql="select * from basedata where 品名 like '%"&pm&"%' and 批号 like '%"&ph&"%'" end if else if ph="" then sql="select * from basedata where 品名 like '%"&pm&"%' and 产地 like '%"&cd&"%'" else sql="select * from basedata where 品名 like '%"&pm&"%' and 产地 like '%"&cd&"%' and 批号 like '%"&ph&"%'" end if end if end if rs.open sql,conn,1,1 %> <%do while not rs.eof%> <%rs.movenext loop%>
品名 产地 规格 批号 供货单位
<%=rs("品名")%> <%=rs("产地")%> <%=rs("规格")%> <%=rs("批号")%> <%=rs("供货单位")%>
[/code]   一个可以任意组合品名、产地、批号三个查询条件的ASP查询就此完成了,试试看吧!   二是DBF转MDB的工具。   我原先的数据库是DBF格式的,要转为MDB,可以从ACCESS直接导入DBF文件,但更为方便的是一个名为“DBFtoMDB”的小软件,其主页是http://www.whitetown.com/dbf2mdb/。原版是英文版的,但大家还可以去百度搜索它的汉化破解版。这个软件绿色小巧,转换速度也很快的。不过有一点注意,并不是所有DBF文件都能成功转换成MDB文件。我分析了一下不成功的原因,可能是某些记录的某些字段内容为空所导致的。那么要么用某一字符替换空字段后再用这个软件转换,或者用ACCESS导入DBF文件。但需要提醒的是,最后的MDB文件中不能存在某一字段为空的记录,要不然可能导致运行ASP查询出错。   三是服务器软件。   我这个WebDDA主要是用于局域网的,那么就需要一个服务器软件。这里介绍的是Baby Web Server2.6,这个软件同样绿色小巧,简单易用,对ASP的支持还很不错。大家百度搜索一下就是了,用Baby Web Server或者miniasp作为关键词都可。   四是每隔一段时间定时关闭服务器后再开启服务器的代码。   这里有两个文件,一个是Restart.bat,一个是Restart.vbs。   Restart.bat的代码如下: [code] @echo off&pushd %tmp% echo WScript.Sleep(1000*1800) >d.js :a d.js @taskkill /f /IM MiniAspcn.exe start/min D:\Prog\miniASP\MiniAspcn.exe goto :a [/code]   Restart.vbs的代码如下: [code] CreateObject("WScript.Shell").Run "cmd /cRestart.bat",0 [/code]   其中批处理的代码是每隔30分钟关闭进程中名为MiniAspcn.exe的服务器软件,然后再以最小化的方式启动它。代码中1000*1800是1000毫秒的1800倍,即1秒*1800=30分钟,可以自行设定这个间隔时间的长短。   VBS代码的用处是以不出现CMD命令黑框的方式调用这个批处理文件。   一二三四……没有五了,就此结束。希望能给有需求的同志带来一些帮助!
« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。