Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-模块/函数/VBA

对 DAO Recordset 中的字段执行读取和写入操作

时 间:2022-09-24 08:24:23
作 者:杨雪   ID:42182  城市:南京
摘 要:对 DAO Recordset 中的字段执行读取和写入操作
正 文:

读取或将数据写入字段时,实际上是读取或设置 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 。 如果在将整个记录写入磁盘之前需要等待检查有效性,则尝试向磁盘写入无效记录会浪费时间。



Access软件网QQ交流群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助