Freigeben über


Lesen und Schreiben in einem Feld in einem DAO-Recordset

Wenn Sie Daten in ein Feld lesen oder schreiben, lesen oder legen Sie die DAO Value-Eigenschaft eines Field-Objekts fest. Die DAO Value-Eigenschaft ist die Standardeigenschaft eines Field-Objekts . Daher können Sie die DAO Value-Eigenschaft des Felds LastName im rstEmployees Recordset auf eine der folgenden Arten festlegen.

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

Die Tabellen, die einem Recordset-Objekt zugrunde liegen, ermöglichen möglicherweise nicht das Ändern von Daten, obwohl das Recordset vom Typ dynaset oder table ist, die normalerweise aktualisierbar sind. Überprüfen Sie die Updatable-Eigenschaft des Recordset , um zu ermitteln, ob die zugehörigen Daten geändert werden können. Wenn die Eigenschaft True ist, kann das Recordset-Objekt aktualisiert werden.

Einzelne Felder in einem aktualisierbaren Recordset-Objekt sind möglicherweise nicht aktualisierbar, und der Versuch, in diese Felder zu schreiben, generiert einen Laufzeitfehler. Um zu bestimmen, ob ein bestimmtes Feld aktualisierbar ist, überprüfen Sie die DataUpdatable-Eigenschaft des entsprechenden Field-Objekts in der Fields-Auflistung des Recordset.To determine whether a given field is updatable, check the DataUpdatable property of the entsprechende Field object in the Fields collection of the Recordset. Das folgende Beispiel gibt True zurück, wenn alle Felder im dynaset, das von strQuery erstellt wurde, aktualisierbar sind, und andernfalls False zurückgibt.

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

Jedes einzelne Feld kann eine Reihe von Kriterien für Daten in diesem Feld auferlegen, wenn Datensätze hinzugefügt oder aktualisiert werden. Diese Kriterien werden durch eine Handvoll Eigenschaften definiert. Die DAO AllowZeroLength-Eigenschaft für ein Text- oder Memo-Feld gibt an, ob das Feld eine leere Zeichenfolge ("") akzeptiert oder nicht. Die DAO Required-Eigenschaft gibt an, ob ein Wert in das Feld eingegeben werden muss oder nicht, oder ob es stattdessen einen Null-Wert akzeptieren kann. Für ein Field-Objekt in einem Recordset sind diese Eigenschaften schreibgeschützt. ihr Zustand wird durch die zugrunde liegende Tabelle bestimmt.

Bei einer Gültigkeitsprüfung wird ermittelt, ob Daten, die in die Value-DAO-Eigenschaft eines Felds eingegeben wurden, innerhalb eines zulässigen Bereichs liegen. Für ein Field-Objekt in einem Recordset-Objekt sind möglicherweise die DAO-Eigenschaften ValidationRule und ValidationText festgelegt. Die ValidationRule-DAO-Eigenschaft ist einfach ein Kriterienausdruck, der den Kriterien einer SQL WHERE-Klausel ohne das Schlüsselwort WHERE ähnelt. Die ValidationText-DAO-Eigenschaft ist eine Zeichenfolge, die Access in einer Fehlermeldung anzeigt, wenn Sie versuchen, in das Feld Daten einzugeben, die außerhalb der für die ValidationRule-DAO-Eigenschaft zulässigen Werte liegen. Wenn Sie DAO im Code verwenden, können Sie die DAO-Eigenschaft ValidationText für eine Nachricht verwenden, die dem Benutzer angezeigt werden soll.

Hinweis

Die DAO-Eigenschaften ValidationRule und ValidationText sind auch auf der Ebene des Recordset-Objekts vorhanden. Dabei handelt es sich um schreibgeschützte Eigenschaften, die das Gültigkeitsprüfungsschema auf Tabellenebene darstellen, das für die Tabelle erstellt wurde, aus der der aktuelle Datensatz abgerufen wurde.

Ein Field-Objekt in einem Recordset verfügt auch über die ValidateOnSet-Eigenschaft . Wenn für die ValidateOnSet-Eigenschaft der Wert True festgelegt ist, führt Access eine Gültigkeitsprüfung durch, sobald die Value-DAO-Eigenschaft des Felds festgelegt wird. Ist die Eigenschaft auf False festgelegt (Standardeinstellung), führt Access nur dann eine Gültigkeitsprüfung durch, wenn der ausgefüllte Datensatz aktualisiert wird.

Wenn Sie beispielsweise Daten in einen Datensatz einfügen, der ein großes Memo-Feld oder ein großes OLE-Objekt mit festgelegter ValidationRule-DAO-Eigenschaft enthält, müssen Sie vor dem Schreiben von Daten bestimmen, ob die neuen Daten die Gültigkeitsprüfungsregel verletzen. Dazu legen Sie die ValidateOnSet-Eigenschaft auf True fest. Wenn Sie mit der Gültigkeitsprüfung warten, bis der gesamte Datensatz auf den Datenträger geschrieben wurde, verschwenden Sie unter Umständen Zeit, indem Sie versuchen, einen möglicherweise ungültigen Datensatz zu speichern.

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.