<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      在ASP中處理數據庫的NULL記錄

      [摘要]在許多時候我們使用ASP+數據庫進行網站編程的時候,會遇上讀取某記錄出來和另外一些變量進行運算的情況,如果取的記錄數據為NULL值,那么可能會造成程序返回錯誤結果,如果每個讀記錄的語句后都加上判斷語句,程序又顯得拖沓,因此,我認為編寫一個專用的函數對讀取的記錄進行自動或半自動識別是很好的辦法。 ...
      在許多時候我們使用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





      日韩精品一区二区三区高清