1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| Dim Sql As String
'Pour n'obtenir que les enregistrements qui ont pour NoClient et NoCommande différents, sans doublon
'ce qui limitera le bouclage
Sql = "Select DISTINCT NoClient, NoCommande from Commande Order By NoClient, NoCommande"
'ouverture du 1° recordset qui ne servira qu'à la lecture
MeRecordset1.Open Sql, ConnDataBase, adOpenStatic, adLockPessimistic
If Not MeRecordset1.EOF Then
Do While Not MeRecordset1.EOF
'pour obtenir le/les enregistrements correspondant au NoClient et NoCommande, avec doublons éventuels
Sql = "Commande werhe NoClient = " & MeRecordset1.Fields("NoClient") & _
" And NoCommande = '" & MeRecordset1.Fields("NoCommande") & _
"' Order By NoClient, NoCommande, Prix"
'ouverture du 2° recordset
MeRecordset2.Open Sql, ConnDataBase, adOpenStatic, adLockPessimistic
'MeRecordset2 ne peut être que Not MeRecordset2.EOF puisque il existe dans MeRecordset1
If MeRecordset2.RecordCount >= 2 Then
'la condition étant vraie ......
MeRecordset2.MoveNext 'ce place sur le 2° enregistrement
'ou si il peut y avoir plus de 2 enregistrements et que c'est le dernier qui doit prendre pour valeur 0
'MeRecordset2.MoveLast 'ce place sur le dernier enregistrement
If MeRecordset2.Fields("Prix") <> 0 Then
MeRecordset2.Fields("Prix") = 0 'modification/actualisation
MeRecordset2.Update 'enregistrement de la modification
End If
End If
MeRecordset2.Close
'passe a l'enregistrement suivant, qui ne peut être de même NoClient et NoCommande
'car ce recordset a été ouvert avec la clause DISTINCT
MeRecordset1.MoveNext
DoEvents
Loop
MeRecordset1.Close
End If |
Partager