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,其主要代码如下:
程序代码 程序代码

<html>
<head>
<title>WebDDA</title>
</head>
<body>
<table width="100%" height="100%" border="0">
<tr><td align="center" valign="middle">
<form action="search.asp" method="get" target="_blank">
品名:<input type="text" name="pm" style="width:100px; height:22px;"><br>
产地:<input type="text" name="cd" style="width:100px; height:22px;"><br>
批号:<input type="text" name="ph" style="width:100px; height:22px;"><br>
<input type="reset" value="重置"> <input type="submit" value="查询">
</form>
</td></tr>
</table>
</body>
</html>

  最后设计查询页面search.asp,其主要代码如下:
程序代码 程序代码

<%
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")
%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Search</title>
</head>

<body bgcolor="#39A6DE">
<div align="center">
<table width="98%" border=1 cellpadding=8 cellspacing=0 style='border-collapse:collapse' bordercolor=#000000 bgcolor="#FFFFFF">
<tr>
   <td>品名</td>
   <td>产地</td>
   <td>规格</td>
   <td>批号</td>
   <td>供货单位</td>
</tr>

<%
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%>
<tr>
<td><%=rs("品名")%></td>
<td><%=rs("产地")%></td>
<td><%=rs("规格")%></td>
<td><%=rs("批号")%></td>
<td><%=rs("供货单位")%></td>
</tr>
<%rs.movenext
loop%>
</table>
</div>
</body>
</html>

  一个可以任意组合品名、产地、批号三个查询条件的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的代码如下:
程序代码 程序代码

@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

  Restart.vbs的代码如下:
程序代码 程序代码

CreateObject("WScript.Shell").Run "cmd /cRestart.bat",0

  其中批处理的代码是每隔30分钟关闭进程中名为MiniAspcn.exe的服务器软件,然后再以最小化的方式启动它。代码中1000*1800是1000毫秒的1800倍,即1秒*1800=30分钟,可以自行设定这个间隔时间的长短。
  VBS代码的用处是以不出现CMD命令黑框的方式调用这个批处理文件。

  一二三四……没有五了,就此结束。希望能给有需求的同志带来一些帮助!




[本日志由 徐景岳 于 2009-04-04 02:45 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: asp mdb 数据 查询
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.