读取或将数据写入字段时,实际上是读取或设置 Field对象的 DAO Value 属性。 DAO Value 属性是 Field 对象的默认属性。 因此,可以采用下面任一方法来设置 rstEmployees Recordset中 LastName 字段的 DAO Value 属性。
rstEmployees!LastName.Value = strName
rstEmployees!LastName = strName
rstEmployees![LastName] = strName
Recordset 对象的基础表可能不允许您修改数据,即使 Recordset 的类型为动态集或表(通常是可更新的)。 检查 Recordset 的 Updatable 属性以确定其数据是否可更改。 如果该属性为 True,则 Recordset 对象可更新。
可更新 Recordset 对象内的个别字段可能不可更新,尝试写入到这些字段会产生运行时错误。 若要确定给定字段是否可更新,请在 Recordset 的 Fields 集合中检查对应 Field 对象的 DataUpdatable 属性。 如果 strQuery 创建的动态集中的所有字段可更新,以下示例将返回 True,否则返回 False。
Function RecordsetUpdatable(strSQL As String) As Boolean
Dim dbsNorthwind As DAO.Database
Dim rstDynaset As DAO.Recordset
Dim intPosition As Integer
On Error GoTo ErrorHandler
' 将函数的返回值初始化为True.
RecordsetUpdatable = True
Set dbsNorthwind = CurrentDb
Set rstDynaset = dbsNorthwind.OpenRecordset(strSQL, dbOpenDynaset)
' 如果整个动态集不可更新,则返回 False.
If rstDynaset.Updatable = False Then
RecordsetUpdatable = False
Else
' 如果动态集是可更新的,请检查动态集是可更新的。
' 如果其中一个字段不可更新,返回假。
For intPosition = 0 To rstDynaset.Fields.Count - 1
If rstDynaset.Fields(intPosition).DataUpdatable = False Then
RecordsetUpdatable = False
Exit For
End If
Next intPosition
End If
rstDynaset.Close
dbsNorthwind.Close
Set rstDynaset = Nothing
Set dbsNorthwind = Nothing
Exit Sub
ErrorHandler:
MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description
End Function
添加或更新记录时,任何单一字段可能会对该字段中的数据施加一些条件。 这些条件由一些属性定义。 文本或备注字段上的 DAO AllowZeroLength 属性指明该字段是否将接受零长度字符串 ("")。 DAO Required 属性指明是否必须在字段中输入某个值,或者它是否可改为接受 Null 值。 对于 Recordset 上的 Field 对象,这些属性为只读;其状态由基础表确定。
验证是指确定字段的 DAO Value 属性中输入的数据是否在可接受范围内的过程。 Recordset 上的 Field 对象可能设置了 DAO ValidationRule 和 ValidationText 属性。 DAO ValidationRule 属性只是一个条件表达式,类似于 SQL Where 子句的条件,没有 Where 关键字。 DAO ValidationText 属性是一个字符串,如果您尝试在字段中输入超出 ValidationRule 属性限制的数据,Access 将在错误消息中显示该字符串。 如果在代码中使用 DAO,则可以为要向用户显示的消息使用 DAO ValidationText。
备注
[!注释] DAO ValidationRule 和 ValidationText 属性还存在于 Recordset 级。 这些属性是只读属性,反映在检索当前记录的表上建立的表级验证方案。
Recordset 上的 Field 对象还具有 ValidateOnSet 属性。 如果将 ValidateOnSet 属性设置为 True ,则只要设置字段的 DAO Value 属性,Access 就会检查有效性。 如果将该属性设置为 False (默认值),则仅当更新已完成的记录时,Access 才会检查有效性。
例如,如果要向包含一个大型"备注"或"OLE 对象"字段且设置了 DAO ValidationRule 属性的记录中添加数据,则应该在尝试写入数据之前确定新数据是否违反了有效性规则。 要执行此操作,请将 ValidateOnSet 属性设置为 True 。 如果在将整个记录写入磁盘之前需要等待检查有效性,则尝试向磁盘写入无效记录会浪费时间。