Hoi Wizzkids
In navolging van de tread op het verwijderen van dubbele rijen zit ik met hetzelfde probleem.
Ik heb onderstaande code bedacht voor het echt verwijderen, i.p.v. filteren, van dubbele records.
M.b.v. een knop op een formulier wil ik de dubbele records verwijderen.
Ik vergelijk de record op [PrüflingID] en [PrüfDatum]. Indien deze gelijk zijn mag de record verwijderd worden.
De code werkt slecht gedeeltelijk. Verschillende dubbele records blijven staan.
Waarschijnlijk zit de fout ergens in de selectie, definitie of controle van de datumcriteria.
Waar ga ik de fout in????
De gedachtegang:
- LOOP door de tabel Prüfung record voor record;
- Controleer of van de gekozen record het PrüflingID in combinatie met de datum, meerdere keren voorkomt (DCOUNT);
- Indien JA, verwijder de record (DoCmd.RunSQL "DELETE ......);
- Tel het aantal verwijderde records (MsgBox iCountDelRec).
In de zip een test programma
Ik kopieer de tabel van te voren voor test doeleinden (hergebruik, DoCmd.CopyObject.... ).
Bekijk bijlage DelDubRecords.zip
Excuus voor de termelogie. De tabel komt uit een software pakket van duitse makelij.
THX voor meedenken.
Eric
In navolging van de tread op het verwijderen van dubbele rijen zit ik met hetzelfde probleem.
Ik heb onderstaande code bedacht voor het echt verwijderen, i.p.v. filteren, van dubbele records.
M.b.v. een knop op een formulier wil ik de dubbele records verwijderen.
Ik vergelijk de record op [PrüflingID] en [PrüfDatum]. Indien deze gelijk zijn mag de record verwijderd worden.
De code werkt slecht gedeeltelijk. Verschillende dubbele records blijven staan.
Waarschijnlijk zit de fout ergens in de selectie, definitie of controle van de datumcriteria.
Waar ga ik de fout in????
De gedachtegang:
- LOOP door de tabel Prüfung record voor record;
- Controleer of van de gekozen record het PrüflingID in combinatie met de datum, meerdere keren voorkomt (DCOUNT);
- Indien JA, verwijder de record (DoCmd.RunSQL "DELETE ......);
- Tel het aantal verwijderde records (MsgBox iCountDelRec).
In de zip een test programma
Ik kopieer de tabel van te voren voor test doeleinden (hergebruik, DoCmd.CopyObject.... ).
Code:
Private Sub Knop_DubRecVerw_DblClick(Cancel As Integer)
On Error GoTo Err_Knop_DubRecVerw_DblClick
'Verwijderen van dubbele keuringen van hetzelfde apparaat (Prüfling) op dezelfde datum
Dim rs As DAO.Recordset
Dim db As DAO.Database
Dim iCountDelRec As Integer
If MsgBox("Dubbele keuringen, met gelijk ID, nummer en testdatum, verwijderen?", vbYesNo, "D U B B E L E K E U R I N G E N") = vbYes Then
Set db = CurrentDb
Set rs = db.OpenRecordset("Prüfung")
iCountDelRec = 0
'TIJDELIJK: Kopieer de huidige tabel
DoCmd.CopyObject , "PrüfungCopy" & Date, acTable, "Prüfung"
Do Until rs.EOF
'MsgBox rs!PrüfungID & " " & rs!Prüfdatum & " " & DCount("PrüflingID", "Prüfung", "Prüfdatum = # " & rs!Prüfdatum & "# and PrüflingID = " & rs!PrüflingID)
If DCount("PrüflingID", "Prüfung", "Prüfdatum = # " & rs!Prüfdatum & "# and PrüflingID = " & rs!PrüflingID) > 1 Then
'Delete Record
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE * FROM Prüfung" _
& " WHERE Prüfdatum = # " & rs!Prüfdatum & " # AND PrüfungID = " & rs!PrüfungID & ";"
DoCmd.SetWarnings True
iCountDelRec = iCountDelRec + 1
End If
rs.MoveNext
Loop
MsgBox iCountDelRec & " Gedubbelde keuring(en) verwijderd"
End If
Exit_Knop_DubRecVerw_DblClick:
Exit Sub
Err_Knop_DubRecVerw_DblClick:
MsgBox Err.Description
Resume Exit_Knop_DubRecVerw_DblClick
End Sub
Bekijk bijlage DelDubRecords.zip
Excuus voor de termelogie. De tabel komt uit een software pakket van duitse makelij.
THX voor meedenken.
Eric