Se connecter avec
S'enregistrer | Connectez-vous

Problem avancement de des enregistrement VBA Access

Dernière réponse : dans Programmation

Salut tout le monde

Ca fait plus de 2h que je me casse la tête à comprendre il est ou le beug et je ne trouve pas. C'est pour ça que je me tourne vers les experts

Comme vous voyez si dessous, je fais donc tourné une boucle qui parcourt tout les lignes de mon tableau 'Vulnérabilité'
et selon les valeur qu'il y a dans les colonnes je remplis la colonne 'EtatCons' par une valeur. Sauf le pb, c'est ce que j'ai fait ne marche pas bien ( Et oui!! vous en doutez, sinon pourquoi serais-je là )
Alors le pb c'est que normalement la boucle dois etre parcouru 15 fois, sauf qu' elle ne se parcours que deux fois!

Voila le code:



Option Compare Database

Public Sub Mo()

'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'% Déclaration des Variables %
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Dim db As Database ' Variable de type base de donnée
Dim rst, rst1, rst2 As DAO.Recordset ' Variables de type enrgistrement
Dim i, j As Integer ' Variables de type entier
Dim rqSQL, rqSQL1, rqSQL2, rqSQL3 As String ' Variables de type chaines de caractère

'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'% Initialisation %
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Set db = CurrentDb() ' Affectation de la variable db à la base de donnée actuelle
rqSQL = "select COUNT(*) AS Nbre_Lignes from Vulnérabilité" ' Chaine de caractère type SQL
Set rst1 = db.OpenRecordset(rqSQL) ' Définir un nouveau enregistrement
j = CLng(rst1!Nbre_Lignes) ' Affectation à la variable j le nombre de lignes de la Table Vulnérabilité

'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'% Modification EtatCons %
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

For i = 1 To j
'%%%%%%%
rqSQL1 = "SELECT * FROM [Vulnérabilité] WHERE [Id]<> " & i & ";"
Set rst2 = db.OpenRecordset(rqSQL1)
'%%%%%%%
If rst2!Rudéralisation = "Pas de dégradation" And rst2!Embroussaillement = "Pas de dégradation" And rst2!Errosion = "Pas de dégradation" Then
With rst2
.Edit
!EtatCons = "Bon"
.Update
End With
'%%%%%%%
ElseIf rst2!Rudéralisation = "Pas de dégradation" And rst2!Embroussaillement = "Pas de dégradation" And rst2!Errosion = "Faible à moyen" Then
With rst2
.Edit
!EtatCons = "Moyen"
.Update
End With
'%%%%%%%
ElseIf rst2!Rudéralisation = "Faible à moyen" And rst2!Embroussaillement = "Pas de dégradation" And rst2!Errosion = "Pas de dégradation" Then
With rst2
.Edit
!EtatCons = "Moyen"
.Update
End With
'%%%%%%%
ElseIf rst2!Rudéralisation = "Pas de dégradation" And rst2!Embroussaillement = "Faible à moyen" And rst2!Errosion = "Pas de dégradation" Then
With rst2
.Edit
!EtatCons = "Moyen"
.Update
End With
'%%%%%%%
ElseIf rst2!Rudéralisation = "Non renseigné" And rst2!Embroussaillement = "Non renseigné" And rst2!Errosion = "Non renseigné" Then
With rst2
.Edit
!EtatCons = "Non renseigné"
.Update
End With
'%%%%%%%
Else
With rst2
.Edit
!EtatCons = "Mauvais"
.Update
End With
'%%%%%%%
End If
Next

End Sub


Pourtant la valeur de j est bien 15
Croyez vous que je dois plutot créer un nouvelle Recorset à chaque increment de i?
Si quelqu'un peut m'aidé ça serait super Génial

Merci d'avance!

Lassé par la pub ? Créez un compte
Expert Programmation

Citation :
Ca fait plus de 2h que je me casse la tête à comprendre

Et moi, ça fait deux ans et plus que je me casse le c*l à faire respecter le règlement ! Va le lire, et modifie ton message.

Ce message s'autodétruira quand le précédent sera conforme.
Lassé par la pub ? Créez un compte