Eine Anfrage kam, in dem eine Access-Datenbank durchsucht werden sollte und bei zwei Spalten Personennummern eingetragen sind. Wenn die Spalten identisch sind, dann sollen in drei anderen Spalten die Werte gelöscht werden. Wie lässt sich das mit Access-Mitteln bewältigen.
Dafür gibt es verschiedene Möglichkeiten. Ich habe dafür einen Makro vorgeschlagen, der auf diese oder ähnliche Anforderungen anpassbar ist.
Sub Compare12() Dim db As DAO.Recordset Set db = CurrentDb.OpenRecordset("SELECT * FROM Tabelle1") If Not (db.EOF And db.BOF) Then db.MoveFirst Do Until db.EOF If (db!Feld1 = db!Feld2) Then db.Edit db!Feld3 = Null db!Feld4 = Null db!Feld5 = Null db.Update End If db.MoveNext Loop Else MsgBox ("Empty recordset") End If MsgBox ("Finished") db.Close End Sub
Dieser Makro führt eine Abfrage auf die Tabelle1 aus, die aus allen Datensätzen besteht (hier lässt sich eine Bedingung einbauen, falls erforderlich) und geht dann durch alle Datensätze des Ergebnisses um Feld1 und Feld2 zu vergleichen. Wenn die Inhalte identisch sind, werden die Felder Feld3, Feld4 und Feld5 gelöscht.
Ein Ergebnis sieht dann so aus wie in diesem Bild:
Die Datenbank- und Feldnamen lassen sich entsprechend anpassen.