⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ado对象中的字段对象的使用方法.txt

📁 用纯ASP代码实现图片上传并存入数据库中
💻 TXT
字号:
ADO对象中的字段对象的使用方法    


--------------------------------------------------------------------------------

 【batman】 于 99-8-28 18:13:53 加贴在 Joy ASP ↑:

使用字段对象
本文将就如何使用字段对象研究数据的属性(主要就是些书写检查类似的功能)和
如何格式化显示数据库中一行数据。
为了配合使用下面的例子,先介绍了一个专门用来测试的生成一个Table的SQL语句如下:

文件fields.asp用来判断数据库中到底是怎么处理字段用的。主要是让你看看字段对象
到底有些什么属性你可以反复的在其他数据库的表中使用该代码。
  <%
    'count属性表示表中到底有多少个字段
    Response.Write "Field Count: " & rs.Fields.Count & "<BR>"
    For Each objField in rs.Fields
      Response.Write "Name = " & objField.Name & "<BR>"
      Response.Write "ActualSize = " & objField.ActualSize & "<BR>"
      Response.Write "Attributes = " & objField.Attributes & "<BR>"
      Response.Write "DefinedSize = " & objField.DefinedSize & "<BR>"
      Response.Write "NumericScale = " & objField.NumericScale & "<BR>"
      Response.Write "Precision = " & objField.Precision  & "<BR>"
      Response.Write "Type = " & objField.Type & "<BR>"
      你自己可以来用用下面注释掉的两行,一般的设计者不常用而已。
      'Response.Write "OriginalValue = " & objField.OriginalValue & "<BR>"
      'Response.Write "UnderlyingValue = " & objField.UnderlyingValue  & "<BR>"
      Response.Write "Value = " & objField.Value & "<BR><BR>"
    Next 

  %>

下面是输出结果:
     Name = test_id
     ActualSize = 4
     Attributes = 16
     DefinedSize = 4
     NumericScale = 255
     Precision = 10
     Type = 3
     Value = 1
现在让我们来研究一下这些结果:
     Name:RecordSet中每一列的名字 
     Value:每一列的数值,大家使用得最多的属性了,它也是字段对象的默认属性。
     DefinedSize:该字段能够在数据库中占用的最多字节数目,一般而言对于同一个字段
                  该属性的值应该是一样的。除了:如果字段类型是varchar(30),并且该
                  字段中只有10个字符的话,将会出现这种情况,DefinedSize=30,ActualSize=10
                  因此,DefinedSize属性更有用些
     Type:字段中的数据类型.你可以在adovbs.inc文件中找到到底有些什么数据类型
     Precision:定义十进制数的精确度用的属性
     NumericScale:只对数值类型的数据有用,表明该字段只能够存储的最大数值
     Attributes:有点奇怪的属性,它的数值是字段对象中所有属性(可以在adovbs.inc中的FieldAttributeEnum
                 部分找到这些数值)数值加起来的值。 呵呵,可以使用这个属性来检查字段的NULL
               If (rsFields(strName).Attributes And adFldIsNullable) = 0 Then 
                       IsRequiredField = True
               或则可以来检查该字段是否可以被更新(象一个自动编号的字段就不能够更新的呀)
               If (rsFields(strName).Attributes And intUpdatable) = False Then
                       CanUpdateField = False
     具体细节可以去参考ADO的文档
     现在我们来谈谈那被注释掉的两个属性:
     OriginalValue and UnderlyingValue . 注意哦,SQL Server 6.5不支持这两个属性 
     他们是干吗用的了,前一个是来说明在数据库中,这个字段的内容被更新前的内容,而
     后一个则是字段中当前的内容。
     但是由于不同的ODBC Driver支持不同的属性,所以先注释掉了,不过这两个属性还是很有意思的哦。

格式化一个字段的输出:
文件fields2.asp
  '------------------------------------------------------------------------------
  ' Inputs: strName      - HTML form名称
  '         strVal       - 要显示的数据内容
  '         intSize      - HTML显示的大小
  '         intMax       - HTML元素能够接受的最大字节数目
  '         strReq       - 表明是否为必填字段
  '         strType      - 表明数据类型
  '------------------------------------------------------------------------------
  Sub ShowField(strName, strVal, intSize, intMax, strReq, strType)
      Response.Write "<td><INPUT TYPE=Text NAME=" & strName
      Response.Write " SIZE=" & intSize & " MAXLENGTH=" & intMax
      Response.Write " VALUE =" & strVal & " onFocus=select()"  
      IF strType = "N" THEN
        Response.Write " onChange=" & chr(34) & "CheckNumber(this.value, '" & strReq & "')" & chr(34)
      ELSEIF strType = "D" THEN
        Response.Write " onChange=" & chr(34) & "CheckDate(this.value, '" & strReq & "')" & chr(34)
      ELSE
        Response.Write " onChange=" & chr(34) & "CheckText(this.value, '" & strReq & "')" & chr(34)
      END IF     
      Response.Write " ></td></tr>"
  End Sub 

  Function NumericSize (Precision)
    NumericSize = Precision + (Precision \  3) + 1
  END FUNCTION

  <%
    Response.Write "<table>"
    For Each objField in rsFields.Fields
      Response.Write "<tr><td>" &objField.Name & "</td>"
      strElName = Replace(objField.Name, " ", "")
      strRequired = "N"
      If (rsFields(objField.Name).Attributes And adFldIsNullable) = 0 Then 
        strRequired = "Y"
      End If

      If objField.Type = adLongVarChar THEN
        ShowTextArea strElName, objField.Value
      ELSE
        SELECT CASE objField.Type
            CASE adTinyInt , adSmallInt , adInteger, adBigInt, adUnsignedTinyInt,
              adUnsignedSmallInt, adUnsignedInt, adUnsignedBigInt, adDecimal,
              adNumeric, adSingle, adDouble
                  IF objField.NumericScale < 255 THEN
                        strValue = FormatNumber(objField.Value)
                  ELSE
                        strValue = objField.Value
                  END IF
                  strSize = NumericSize (objField.Precision)
                  strMaxSize = StrSize
                  strType = "N"
            CASE adCurrency
                  strValue = FormatCurrency(objField.Value)
                  strSize  = NumericSize (objField.Precision) + 1
                  strMaxSize = StrSize
                  strType    = "N"
            CASE adDate, adDBDate, adDBTimeStamp
                  strValue = FormatDateTime(objField.Value)
                  strSize = 22
                  strMaxSize = 22
                  strType = "D"
            CASE adChar, adVarChar
                  StrValue = objField.Value
                  IF objField.DefinedSize > 25 THEN
                        strSize = 25
                  ELSE
                        strSize = objField.DefinedSize
                  END IF
                  strMaxSize = objField.DefinedSize
                  strType    = "C"
        END SELECT
      END IF
    NEXT 
    Response.Write "</table>"
  %>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -