IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

boucle qui plante


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut boucle qui plante
    bonjour je viens d'écrire un code qui plante access et je dois dire que je ne comprend pas pourquoi il ne marche

    je voudrais savoir les erreurs viennent du code ou pas
    le code est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    36
    Private Sub enregistrer_Click()
     
    Dim db As Database
    Dim rs As Recordset
    Dim rsbis As Recordset
    Dim rster As Recordset
    Dim stage As Integer
    Set db = CurrentDb
     
     
        Set rsbis = db.OpenRecordset("etudiant")
            existe = False
            If rsbis.EOF = False Then rsbis.MoveFirst
     
                Do While existe = False
                    If rsbis!nom = Me!nom_etu And rsbis!prenom = Me!prenom_etu Then
                    rs.Edit
                    rsbis!num_stage = stage
                    existe = True
                    rs.Update
                    rsbis.MoveNext
                    End If
                Loop
            rsbis.Close
            If existe = False Then
                If MsgBox("l'étudiant n'existe pas dans la base,voulez vous le rajoutez ? ", vbYesNo) = vbYes Then
                    DoCmd.OpenForm "saisie_etudiant"
                End If
            End If
     
     
     
     
    Call reinitialisation(Me)
    Me.Refresh
    End Sub
    merci d'avance

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Par défaut
    Bonsoir,

    Pourquoi déclarer rs As Recordset s'il n'est pas défini par la suite ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    rs.Edit
     rsbis!num_stage = stage
    rs.Update
    devrait être

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    rsbis.Edit
     rsbis!num_stage = stage
    rsbis.Update
    a+

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut
    merci de m'avoir faire remarquer cette erreur

  4. #4
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut
    re bonjour
    donc j'ai exécute le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    34
    35
    36
    37
    38
    39
    40
    41
    Private Sub enregistrer_Click()
     
    Dim db As Database
    Dim rs As Recordset
    Dim rsbis As Recordset
    Dim stage As Integer
    Set db = CurrentDb
     
     
     
        Set rs = db.OpenRecordset("stage")
            MsgBox "Tous les champs ont été saisies, merci...", vbInformation
            rs.AddNew
            rs!libelle = Me!libelle
            rs!num_entreprise = Me!num_entreprise
            rs!num_enseignant = Me!enseignant
            rs.Update
            rs.MoveLast
            stage = rs!num_stage
        rs.Close
     
     Set rsbis = db.OpenRecordset("etudiant")
        existe = False
        If rsbis.EOF = False Then rsbis.MoveFirst
            Do While existe = False
                    If rsbis!nom = Me!nom_etu And rsbis!prenom = Me!prenom_etu Then
                        rsbis.Edit
                        rsbis!num_stage = stage
                        existe = True
                        rsbis.Update
                    End If
                    rsbis.MoveNext
            Loop
            rsbis.Close
            If existe = False Then
                If MsgBox("l'étudiant n'existe pas dans la base,voulez vous le rajoutez ? ", vbYesNo) = vbYes Then
                    DoCmd.OpenForm "saisie_etudiant"
                End If
            End If
     
    End Sub

    ça marche uniquement lorsqu'il me trouve l'étudiant dans la table mais si il ne le trouve pas j'ai le message d'erreur suivant : aucun enregistrement en cours

    merci d'avance

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 39
    Par défaut
    Bonsoir,

    Normal, puisque tu exécutes un test après le dernier enregistrement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      Do While rsbis.EOF= False  '<----------------
             If rsbis!nom = Me!nom_etu And rsbis!prenom = Me!prenom_etu Then
                    rsbis.Edit
                    rsbis!num_stage = stage
                    existe = True
                    rsbis.Update
                    Exit Do  '<------------------
             End If
             rsbis.MoveNext
      Loop
    Cordialement.

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 422
    Par défaut
    ah ok merci c'est génial

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Boucle For/Next et While/Wend qui plante Access
    Par Dixies dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/02/2014, 14h07
  2. [XL-2003] Un petit compte à rebours ! ! ! Une boucle qui plante !
    Par toutoune95800 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/04/2012, 17h56
  3. [MySQL] boucle qui plante..
    Par esther60 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/03/2008, 16h47
  4. Pc qui plante
    Par tooms2028 dans le forum Ordinateurs
    Réponses: 9
    Dernier message: 19/03/2005, 17h32
  5. [JTextArea] redessin qui plante
    Par phil_ma dans le forum Composants
    Réponses: 3
    Dernier message: 04/01/2005, 05h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo