📄 ado对象中的字段对象的使用方法.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 + -