Hallo liebe wer-weiß-was-Gemeinde,
ich mal wieder.
Ich habe eine Tabelle in der Dopplungen vorkommen, aber nur unterbestimmten Kriterien. Denn die Datensätze haben eine Nummer, eine Phase und einen Zeitstempel. Nun kann es passieren, das in der Tabelle. Mehrfach die gleiche Nummer mit der gleichen Phase und zwei unterschiedlichen Zeitstempeln gefunden werden. Wenn dem so der Fall ist, soll er den Datensatz mit dem früheren Zeitstempel löschen und den anderen in der Tabelle behalten.
Mit dem unten angegebenen Quellcode, macht er irgendwie nur mist. Entweder er nimmt nicht die richtigen Daten oder er sagt mir das der Datensatz den ich versuche zu vergleichen schon gelöscht ist.
Ich hoffe mir kann jemand helfen. Wenn Ihr mehr Informationen braucht dann sagt Bescheid.
Call Verbinden
DatenMail.MoveLast
Anzahl = DatenMail.RecordCount
DatenMail.MoveFirst
Anzahl1 = Anzahl - 1
For i = 1 To Anzahl1
For x = 1 To Anzahl1
a = DatenMail!No
c = DatenMail!Phase
e = DatenMail!ID
DatenMail.MoveNext
b = DatenMail!No
d = DatenMail!Phase
If a = b Then
If c = d Then
Zaehler = 1
End If
End If
Next x
If Zaehler = 1 Then
Call UmleitenFehler(e)
Call Löschen(e)
End If
Zaehler = 0
x = 0
DatenMail.MoveFirst
Next i
End Sub
Sub UmleitenFehler(e)
DoCmd.SetWarnings False
strsql = „Insert Into Fehler_Dopplungen (ID, No, Phase, Zeitstempel)“
strsql = strsql & " Select NumPhase_sortiert.ID, NumPhase_sortiert.VNo, NumPhase_sortiert.Phase, NumPhase_sortiert.Zeitstempel"
strsql = strsql & " From NumPhase_sortiert"
strsql = strsql & " Where (((NumPhase_sortiert.ID)= " & e & „));“
DoCmd.RunSQL (strsql)
strsql = „Update NumPhase_sortiert.*;“
DoCmd.RunSQL (strsql)