Leer desde un campo y escribir en este en un objeto Recordset de DAO

When you read or write data to a field, you are actually reading or setting the DAO Value property of a Field object. The DAO Value property is the default property of a Field object. Por lo tanto, puede establecer la propiedad Dao Value del campo LastName en el conjunto de registros rstEmployees de cualquiera de las siguientes maneras.

rstEmployees!LastName.Value = strName 
rstEmployees!LastName = strName 
rstEmployees![LastName] = strName 

Es posible que las tablas subyacentes de un objeto Recordset no le permitan modificar los datos, aunque el objeto Recordset sea de tipo tabla o Dynaset, que son tipos generalmente actualizables. Compruebe la propiedad Updatable del objeto Recordset para determinar si sus datos se pueden modificar. Si dicha propiedad es True, el objeto Recordset se puede actualizar.

Es posible que los campos individuales de un objeto Recordset actualizable no se puedan actualizar, y que se genere un error en tiempo de ejecución al intentar escribir en ellos. Para determinar si un campo determinado es actualizable, compruebe la propiedad DataUpdatable del objeto Field correspondiente en la colección Fields del objeto Recordset. En el siguiente ejemplo, se devuelve True si todos los campos del objeto Dynaset creado por strQuery son actualizables y False en caso contrario.

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 
 
   ' Initialize the function's return value to True. 
   RecordsetUpdatable = True 
 
   Set dbsNorthwind = CurrentDb 
   Set rstDynaset = dbsNorthwind.OpenRecordset(strSQL, dbOpenDynaset) 
 
   ' If the entire dynaset isn't updatable, return False. 
   If rstDynaset.Updatable = False Then 
      RecordsetUpdatable = False 
   Else 
      ' If the dynaset is updatable, check if all fields in the 
      ' dynaset are updatable. If one of the fields isn't updatable, 
      ' return False. 
      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

Cualquier campo puede imponer un número de criterios en los datos de ese campo cuando se agregan o actualizan registros. Dichos criterios están definidos por un conjunto de propiedades. La propiedad AllowZeroLength de DAO de un campo de tipo Texto o de tipo Memo indica si el campo aceptará o no una cadena de longitud cero (""). La propiedad Required de DAO indica si se debe especificar un valor en el campo, o si éste puede aceptar un valor Null. Para un objeto Field de un Recordset, estas propiedades son de sólo lectura; su estado viene determinado por la tabla subyacente.

La validación es el proceso que consiste en determinar si los datos introducidos en la propiedad Value de DAO de un campo están en un rango aceptable. Un objeto Field de un objeto Recordset puede tener establecidas las propiedades ValidationRule y ValidationText de DAO. La propiedad ValidationRule de DAO es simplemente una expresión de criterios, similar a los criterios de una cláusula WHERE de SQL, pero sin la palabra clave WHERE. La propiedad ValidationText de DAO es una cadena que muestra Access en un mensaje de error si se intentan introducir datos en el campo que están fuera de los límites de la propiedad ValidationRule de DAO. Si utiliza DAO en el código, puede utilizar la propiedad ValidationText de DAO para un mensaje que desee mostrar al usuario.

Nota:

Las propiedades ValidationRule y ValidationText de DAO también existen en el nivel Recordset. Son propiedades de sólo lectura, que reflejan el esquema de validación de tablas establecido en la tabla de la que se recupera el registro actual.

A Field object on a Recordset also features the ValidateOnSet property. When the ValidateOnSet property is set to True, Access checks validation as soon as the field's DAO Value property is set. When it is set to False (the default), Access checks validation only when the completed record is updated.

For example, if you are adding data to a record that contains a large Memo or OLE Object field and that has the DAO ValidationRule property set, you should determine whether the new data violates the validation rule before trying to write the data. To do so, set the ValidateOnSet property to True. If you wait to check validation until the entire record is written to disk, you may waste time trying to write an invalid record to disk.

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.