欢迎光临
我们一直在努力

想试着做一个简单的读取RSS新闻的页面-ASP教程,ASP应用

建站超值云服务器,限时71元/月

 在许多时候我们使用asp+数据库进行网站编程的时候,会遇上读取某记录出来和另外一些变量进行运算的情况,如果取的记录数据为null值,那么可能会造成程序返回错误结果,如果每个读记录的语句后都加上判断语句,程序又显得拖沓,因此,我认为编写一个专用的函数对读取的记录进行自动或半自动识别是很好的办法。

    根据vbscript的数据类型定义,结合利用vartype函数,构造以下自动处理函数initdatatype,
 输入两个参数,要处理数据本身(thedate)和准备输出的数据类型(thereturntype,整数型): thereturntype强制返回的数据类型 ,同vartype返回值定义的意义一样, thereturntype 如果忽略: 返回同thedate一样的数据类型.

   比较常见的null返回,对于字符串型返回空字符串,对各种于数值返回0值,对于逻辑值返回false(假),对于日期

返回最早的日期

函数程序:
function initdatatype(thedate,thereturntype)
 返回或强制指示变量子类型的值。thedate 参数可以是任何变量。
 thereturntype(整数型): 强制返回的数据类型 ,同vartype返回值定义的意义一样
 thereturntype 如果忽略: 返回同thedate一样的数据类型.

 下面引用的函数vartype(varname)会返回指示变量子类型的值。,varname 参数可以是任何变量。
 vartype函数返回值的意义如下:
 vbempty 0 empty(未初始化)
 vbnull  1 null(无有效数据)
 vbinteger 2 整数
 vblong  3 长整数
 vbsingle 4 单精度浮点数
 vbdouble 5 双精度浮点数
 vbcurrency 6 货币
 vbdate   7 日期
 vbstring  8 字符
 vbobject  9 automation 对象
 vberror  10 错误
 vbboolean  11 boolean
 vbvariant  12 variant(只和变量数组一起使用)
 vbdataobject 13 数据访问对象
 vb????   14 小数
 vbbyte   17 字节
 vbarray  8192 数组

 on error resume next
 err.clear
    dim n_datatype,vo_redata,vo_renewdata,c_typename

    n_datatype = vartype(thedate)
 c_typename = typename(thedate)
 if n_datatype<2 then
  if isnumeric(thereturntype) then
   select case thereturntype
    case 1
     vo_renewdata=null
    case 2
     vo_renewdata=0
    case 3
     vo_renewdata=0
    case 4
     vo_renewdata=0
    case 5
     vo_renewdata=0
    case 6
     vo_renewdata=0
    case 7
     vo_renewdata=0
    case 8
     vo_renewdata=””
    case 11
     vo_renewdata=def_false
    case 14
     vo_renewdata=0
    case 17
     vo_renewdata=chr(0)
    case else
     vo_renewdata=thedate
   end select
  else
   vo_renewdata=thedate
  end if
 else
  if isnumeric(thereturntype) then
   select case thereturntype
    case 0
     vo_renewdata=empty
    case 1
     vo_renewdata=null
    case 2
     if isnumeric(thedate) then
      vo_renewdata=cint(thedate)
     else
      vo_renewdata=eval(“0+” & thedate &””)
      if not isnumeric(vo_renewdata) then vo_renewdata=0
     end if
    case 3
     if isnumeric(thedate) then
      vo_renewdata=clng(thedate)
     else
      vo_renewdata=eval(“0+” & thedate &””)
      if not isnumeric(vo_renewdata) then vo_renewdata=0
     end if
    case 4
     if isnumeric(thedate) then
      vo_renewdata=csng(thedate)
     else
      vo_renewdata=eval(“0+” & thedate &””)
      if not isnumeric(vo_renewdata) then vo_renewdata=0
     end if
    case 5
     if isnumeric(thedate) then
      vo_renewdata=cdbl(thedate)
     else
      vo_renewdata=eval(“0+” & thedate &””)
      if not isnumeric(vo_renewdata) then vo_renewdata=0
     end if
    case 6
     if isnumeric(thedate) then
      vo_renewdata=ccur(thedate)
     else
      vo_renewdata=0
     end if
    case 7
     if isdate(thedate) then
      vo_renewdata=thedate
     else
      vo_renewdata=cdate(0)
     end if
    case 8
     if not isnull(thedate) then
      vo_renewdata=cstr(thedate)
     else
      vo_renewdata=””
     end if
    case 11
     if (not isnull(thedate)) or thedate<>”” then 
      vo_renewdata=def_true
     else
      vo_renewdata=def_false
     end if
    case 14
     if isnumeric(thedate) then
      vo_renewdata=cdbl(thedate)
     else
      vo_renewdata=eval(“0+” & thedate &””)
      if not isnumeric(vo_renewdata) then vo_renewdata=0
     end if
    case 17
     if not isnull(thedate) then
      vo_renewdata=cbyte(thedate)
     else
      vo_renewdata=cbyte(0)
     end if
    case else
     vo_renewdata=thedate
   end select
  else
   vo_renewdata=thedate
  end if
 end if
 err.clear
 vmsgbox(“rtn:” & cstr(vo_renewdata) & ” type:” & cstr(c_typename)) & “/” & cstr(n_datatype)
 initdatatype=vo_renewdata
end function

在实际程序中调用示意:

set conn = server.createobject(“adodb.connection”)
conn.open xdb_conn_str
set rs=server.createobject(“adodb.recordset”)

dim n_od,cnewname ,nnewvalue

n_od=1.2

sql = “select sl_name,sl_value from table_sl where sl_name=mike”
rs.open sql,conn,1
if not rs.eof then
 cnewname = initdatatype(rs(“sl_name”),8) 
 nnewvalue = initdatatype(rs(“sl_value”),5) * n_od
 response.write cnewname  & “的标准零售价为:” & nnewvalue & “(元)”
end if
rs.close
set rs=nothing

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 想试着做一个简单的读取RSS新闻的页面-ASP教程,ASP应用
分享到: 更多 (0)

相关推荐

  • 暂无文章