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 :

Cloner le recordset d'un sous-formulaire [AC-2010]


Sujet :

VBA Access

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

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Points : 245
    Points
    245
    Par défaut Cloner le recordset d'un sous-formulaire
    Bonjour,

    J'essaie de cloner le recordset d'un sous-formulaire (au départ du formulaire principal) et sur l’événement Unload du formulaire principal.
    Le but étant de vérifier avant le Close, si 3 champs sont bien remplis (on peut les laisser vides tous les trois mais pas 1 ou 2 sur 3).
    Mon code:

    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
    Private Sub Form_Unload(Cancel As Integer)
    Dim Db As DAO.Database
    Dim rst As DAO.Recordset
    Dim nbr As Long
     
    Set Db = CurrentDb()
     
    Set rst = Me.sf_AjoutEvaluation.Form.RecordsetClone 'on duplique le jeu d'enregistrements du sous-formulaire afin de manipuler les données sans que ces modifications ne soient répercutées sur le formulaire et sans qu'aucun évènement ne soit déclenché.
     
    If Not rst.EOF Then
        rst.MoveLast
        rst.MoveFirst
        nbr = rst.RecordCount
    End If
     
    Debug.Print nbr & " --- "
     
    ' On verifie que les lignes restantes ont bien des données dans les 3 champs importants du sous-formulaire: NumDossierJustificatif, EvaluateurID, ResultatEvaluation
    ' on teste chacun des enregistrements, ceux qui ont les trois champs importants vides, on les laisse ainsi, ce n'est pas un soucis, il seront éliminer lors du Close
    ' Pour ceux qui ont au moins un des trois champs importants non nul, et un ou les deux autres null, on affiche alors un message ET on annule la fermeture du formulaire
     
    Do While rst.EOF = False
        If IsNull(rst.txt_EvalNumDossierJustif) And IsNull(rst.ResultatEvaluation) And IsNull(rst.txt_EvaluateurID) Then
            'si les 3 champs sont null on ne fait rien, on passe à l'enregistrement suivant
            rst.MoveNext
        Else    'au moins un des trois champs n'est pas null
            ' on affiche un message comme quoi les trois champs doivent être remplis
            'et on annule la fermeture du formulaire
            MsgBox "Pour les enregistrements que vous venez d'encoder," & Chr(13) & Chr(10) & _
            "veuillez remplir obligatoirement TOUS les champs suivants: " & Chr(13) & Chr(10) & _
            "NumDossierJustificatif, EvaluateurID, ResultatEvaluation"
    '        rst.MoveNext
            Cancel = True
            Exit Sub
        End If
    Loop
     
    End Sub

    Toutefois, j'ai un message d'erreur, comme quoi il ne trouve pas le membre de méthode ou de données rst.txt_EvalNumDossierJustif.
    Or txt_EvalNumDossierJustif est bien le nom du champ à vérifier et il est bien dans le sous-formulaire....

    Avez-vous des idées et suggestions pour m'aider à résoudre cela?
    Merci d'avance

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

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 366
    Points : 245
    Points
    245
    Par défaut
    Bon, j'ai trouvé une solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If IsNull(rst.Fields("NumDossierJustificatif").Value) And IsNull(rst.Fields("ResultatEvaluation").Value) And IsNull(rst.Fields("EvaluateurID").Value) Then

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

Discussions similaires

  1. Ouvrir un recordset sur un sous-formulaire filtré
    Par lio33 dans le forum VBA Access
    Réponses: 9
    Dernier message: 16/12/2019, 12h45
  2. Réponses: 5
    Dernier message: 12/04/2012, 11h18
  3. recordset alimentant un sous formulaire
    Par adelsunwind dans le forum IHM
    Réponses: 1
    Dernier message: 01/06/2010, 19h10
  4. [AC-2007] recordset d'un sous formulaire
    Par jcs75 dans le forum IHM
    Réponses: 1
    Dernier message: 21/10/2009, 10h21
  5. Réponses: 1
    Dernier message: 19/09/2008, 10h56

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