Hallo Leute,
Ich versuche in einer Access 2003-Tabelle mittels einer If…Then…Else Schleife eine Spalte Anredezeile1 auszufüllen.
Ich habe zwar die Spalte Anrede1 mit vorhandenen Daten, möchte aber für die Verwendung in einem Brief eine Anredezeile ausfüllen lassen.
Meine Versuche mit der Folgenden Variante sind gescheitert. Die Schleife lässt sich nur ausführen, wenn der If-Part nur ein Objekt enthält.
If rs![Anrede1] = „Herrn“ Or „Herr“ Then
rs![Anredezeile1] = „Sehr geehrter Herr“
End If
Wie kriege ich das hin, dass ich mehrere Argumente verwenden kann ?
If rs![Anrede1] = "Herrn" \_
Or rs![Anrede1] = "Herr" Then
rs![Anredezeile1] = "Sehr geehrter Herr"
End If
Bei längeren Schachtelungen ist eh der Select case vorzuziehen:
Select Case (rs!Anrede1)
Case ("Herrn", "Herr")
rs!Anredezeile1 = "Sehr geehrter Herr"
Case "Frau"
rs!Anredezeile1 = "Sehr geehrte Frau"
Case Else ' Schmutzverteiler
End Select
Select Case (rs!Anrede1)
Case („Herrn“, „Herr“)
rs!Anredezeile1 = „Sehr geehrter Herr“
Case „Frau“
rs!Anredezeile1 = „Sehr geehrte Frau“
Case Else ’
Schmutzverteiler
End Select
wenn ich nicht irre, braucht es keine Klammern bei >Case („Herrn“, „Herr“)
Select Case (rs!Anrede1)
Case („Herrn“, „Herr“)
rs!Anredezeile1 = „Sehr geehrter Herr“
Case „Frau“
rs!Anredezeile1 = „Sehr geehrte Frau“
Case Else ’
Schmutzverteiler
End Select
wenn ich nicht irre, braucht es keine Klammern bei >Case
(„Herrn“, „Herr“)
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.