Eliminer doublons d'une table avec condition sur un champ - SQL/NoSQL - Programmation
Marsh Posté le 21-10-2006 à 13:18:18
Bonjour,
dans :
Citation : If autre.RecordCount = 1 Or autre.RecordCount = 0 Then |
retires le ra.movenext qui est redondant avec celui qui précède le loop
Cordialement
Une question: est-ce le code exact ou le code réécrit sur le post?
parce que je vois re!scan_date re n'existe pas
ou encore:
Do Until autre.EOF
autre.MoveFirst
ce qui laisse supposer que l'on va tourner en rond
la séquence suivante mène à un pb:
Citation : If (autre!defautID <> ra! defautID And autre!scan_date = re!scan_date And And autre!ligne_production= ra! ligne_production) Then |
en effet ra.delete supprime le record en cours et lorsque l'on remonte sur le if ra!....., le record n'existe plus!!!
de plus les noms de champs
PieceID Ligne_production defaut_ID la_date
ne sont pas tout à fait ceux du module!!
@+
Marsh Posté le 22-10-2006 à 09:02:59
Bonjour,
En regardant à nouveau ton code, je crains fort qu'il ne faille repenser le tout et trouver quelque chose de moins compliqué.
Cordialement
Marsh Posté le 22-10-2006 à 09:55:53
Quelque chose comme ça :
Code :
|
Marsh Posté le 22-10-2006 à 10:49:22
Bonjour Beegee,
oui, juste que bouboute veut que ce soit pour "PieceID et ligne_ production et scan-date" identiques
Cordialement
edit: bouboute_24
Marsh Posté le 22-10-2006 à 11:11:27
Code :
|
Marsh Posté le 30-10-2006 à 02:23:13
Merci Beegee,
Je viens d'essayer le code et ca marche parfaitement bien
Marsh Posté le 21-10-2006 à 09:45:05
Salut encore moi
Jai une table Controle_qualite dans laquelle les operateurs entrent les informations concernant les pieces examinees. La structure est la suivante :
PieceID Ligne_production defaut_ID la_date
chaque piece examinee peut etre sans defaut (dans ce cas, on entre un defautID= GOOd), ou avoir un ou plusieurs defauts. Par contre des fois les mauvaises informations sont rentrees. Pour la meme piece, on peut trouver un enregistrement où la piece est bonne et un autre enregistrement pour avec un code de defaut. Jessaie de créer un code qui sil trouve dans la table 2 enregistrements pour la meme piece et que pour lun des enregistrements defautID=GOOD, quil supprime cette enregistrement
Jai essaye de le faire avec le code suivant :
Dim ra, autre as recordset
Set ra = CurrentDb.OpenRecordset("Controle_qualite", dbOpenDynaset)
ra.MoveFirst
Do Until ra.EOF
Set autre = CurrentDb.OpenRecordset("select * from Controle_qualite where Controle_qualite.ProduitID='" & ra!ProduitID & "'", dbOpenDynaset)
If autre.RecordCount = 1 Or autre.RecordCount = 0 Then
ra.MoveNext
Else
Do Until autre.EOF
autre.MoveFirst
If (autre!defautID <> ra! defautID And autre!scan_date = re!scan_date And And autre!ligne_production= ra! ligne_production) Then
If ra! defautID = "GOOD" And autre! defautID <> " GOOD " Then
ra.Delete
Else
If autre! defautID = " GOOD " And ra! defautID <> " GOOD " Then
autre.Delete
Else
autre.MoveNext
End If
End If
Else
autre.MoveNext
End If
Loop
End If
ra.MoveNext
Loop
End Sub
Ca donne lerreur « aucun enregistrement en cours » quand jexecute le code. Quelquun a une idee comment faire ?
Merci davance encore