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 :

Formulaire appelé ne rend pas la main [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 353
    Points : 237
    Points
    237
    Par défaut Formulaire appelé ne rend pas la main
    Bonjour,

    Comme d'hab, je m'adresse à vous car j'ai besoin de lumière.

    Ceci est la fonction (juste pour les tests préliminaires) qui est appelée à l'ouverture du formulaire principal:
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Public Function test()
    Dim SQL As String
    Dim C As Integer, i As Integer
    Dim rs01 As DAO.Recordset 'recordset pour les enregistrements
    Dim db As DAO.Database
     
    Set db = CurrentDb()
     
    SQL = "SELECT Query1.NumMIC, Query2.numMIC, Query1.NumCD, Query2.[Autre réf], Query1.NumPIMS, Query2.[N° PIMS], Query1.NumDossier, Query2.[N° dossier], Query1.NumNotice, Query2.[N° notice], Query1.Faits, Query2.Sujet "
    SQL = SQL & "FROM Query1 LEFT JOIN Query2 ON Query1.NumMIC = Query2.numMIC;"
     
    Set rs01 = db.OpenRecordset(SQL, dbOpenDynaset)
     
    rs01.MoveLast
    MsgBox "nbr retourné = " & rs01.RecordCount
    rs01.MoveFirst
     
    For i = 0 To 10
    rs01.MoveNext
    Next
    'Do While Not rs01.EOF
    continue:
        For C = 0 To (rs01.Fields().Count - 2) Step 2
            If Nz(rs01.Fields(C), "1") = Nz(rs01.Fields(C + 1), "0") Then 'ca veut dire qu'il sont parfaitement identique
            Else    'sinon ca veut dire qu'il y a des différences entre champs
                If (IsNull(rs01.Fields(C)) And IsNull(rs01.Fields(C + 1))) Or (IsEmpty(rs01.Fields(C)) And IsEmpty(rs01.Fields(C + 1))) Then      'si les deux champs sont null ou vide
                'DoCmd.OpenForm "test", , , , , acHidden
                DoCmd.OpenForm "test", , , , , acDialog
     
                Else 'ca veut dire qu'au moins un des champs n'est pas vide
     
                'DoCmd.OpenForm "test", , , , , acHidden
                DoCmd.OpenForm "test", , , , , acDialog
     
                End If
            End If
        Next
     
     
        i = i + 1
     
        If i = 20 Then
        GoTo quitte
        Else
        rs01.MoveNext
        GoTo continue
        End If
    'Loop
     
    quitte:
        SQL = ""
        rs01.Close
        db.Close
        Set rs01 = Nothing
        Set db = Nothing
     
    End Function
    Ce que je souhaiterai c'est que mon formulaire principal s'ouvre,
    -appelle une fonction qui parcoure le recordset qui va être affiché dans ce formulaire principal,
    -cette fonction vérifie le contenu des enregistrements (par paires de champs) et signale au travers d'un formulaire d'édition quand un des deux champs est différents de l'autre (ou quand les deux champs sont vides),
    -dans le formulaire d'edition l'utilisateur pourra corriger les deux champs ou laisser tels quel, valider sa décision
    -le formulaire se ferme, la fonction passe à la paire suivante et ainsi de suite jusqu'à la fin du recordset.

    Le problème c'est que ma fonction qui boucle sur le recordset ne stoppe pas sur le formulaire d'édition (il est ouvert en acDialog et donc devrait attendre l'action de l'utilisateur pour se fermer?) mais fait l'ensemble de la boucle...

    Le code ci-dessus est simplifier pour le forum mais le résultat est le même.

    Avez vous une idée de comment arranger cela?

    Merci d'avance.

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    353
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 353
    Points : 237
    Points
    237
    Par défaut
    Bonsoir,

    Ce petit post pour vous dire que j'ai résolu le problème.

    Dans le formulaire appelant, sur Open, je l'ai rendu visible (True) avant de lancer l'appel à la fonction qui parcourera le recordset.
    Je lance la fonction qui parcoure le recordset. Aux étapes de tests, j'ouvre le formulaire de vérification (comme dans le code ci dessous avec le formulaire "test")
    Dans le formulaire test, sur Open, je mets le focus sur le bouton de fermeture

    Et c'est tout

    Quand le formulaire de vérification s'ouvre, le formulaire appelant est aussi ouvert et lis la fonction de test. et chaque fois que le formulaire de vérification est fermé, on continue le processus.

    Donc affaire classée dans mon cas.

    Merci pour les trois étoiles en tout cas :-)

    A bientôt

    Et Bonnes fêtes de fin d'année!

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 16/11/2007, 11h33
  2. Réponses: 1
    Dernier message: 15/05/2007, 09h16
  3. le Timer ne me rend pas la main
    Par toxycyty dans le forum Windows
    Réponses: 10
    Dernier message: 08/11/2006, 16h54
  4. RMAN ne rend pas la main
    Par big1 dans le forum Recovery Manager
    Réponses: 3
    Dernier message: 29/08/2006, 20h18
  5. Script CMD qui ne rend pas la main
    Par ipeteivince dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 10/06/2005, 11h00

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