Hallo,
richtig die Klammern sind nicht nötig, aber schaden auch nicht.
Ich denke das die Fehlermeldung bedeutet das die Recordset Variable rs leer ist. (nicht verwechseln mit einem Recordset das keine Rows enthält.)
'Überprüfen ob das Recordsetobjekt vorhanden ist
If Not rs Is Nothing Then
'With-Block um direkt mit "." auf jede Property / Methode des Recordsets zuzugreifen
With rs
'Überprüfen ob das Recordset Rows (Datensätze) enthält
If Not (.EOF And .BOF) Then
'kopfgesteuerte Schleife, Abbruch sobald das Ende des Recordsets erreicht ist
Do Until .EOF
'String Konvertierung erzwingen, damit bei einem leeren Feld (NULL) kein Fehler auftritt
Select Case .Fields("Anrede1").Value & ""
Case "Herr", "Herrn": .Fields("Anredezeile1").Value = "Sehr geehrter Herr"
Case "Frau": .Fields("Anredezeile1").Value = "Sehr geehrte Frau"
End Select
'nächsten Record einlesen
.MoveNext
Loop
End If
End With
End If
Hier sind die Klammern bei „If Not (.EOF And .BOF)“ nötig, da sonst sich das Not nur auf den ersten Teil der Bedingung auswirkt. Andernfalls müsste man „If Not .EOF And Not .BOF“ schreiben.
Bei einem leeren Recordset geben die Properties beide True zurück, sonst nur jeweils eine davon am Anfang bzw. am Ende.
P.S. rs!FeldName ist identisch mit rs.Field(„FeldName“).Value
Mag diese „Abkürzung“ nur nicht besonders.
MfG Dominik