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 :

[AC-2010] Formulaire enregistrements non triés après ajout [AC-2010]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Vétérinaire retraité
    Inscrit en
    Août 2022
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vétérinaire retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2022
    Messages : 43
    Par défaut [AC-2010] Formulaire enregistrements non triés après ajout
    Bonjour et merci d'aider un quasi débutant.
    J'ai un formulaire pou éditer des enregistrements triés sur nom et prénom. (R_tri)
    Quand j'ajoute un nouvel adhérent il se retrouve en fin de liste si je me déplace avec la souris ou les flêches.
    Si j'applique l'instruction Me.Requery je me retrouve en début de liste.
    Comment rester sur mon nouvel enregistrement créé ?
    Merci pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub ajoute_adherent_Click()
        On Error GoTo Err_ajoute_adherent_Click
          DoCmd.GoToRecord , , acNewRec
    Exit_ajoute_adherent_Click:
     
        Exit Sub
     
    Err_ajoute_adherent_Click:
        MsgBox Err.Description
        Resume Exit_ajoute_adherent_Click
     
    End Sub

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 622
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    Si vous disposez d'une champ identifiant chaque enregistrement de votre table, vous pouvez enregistrer la valeur de l'identifiant pour ce nouvel enregistrement, avant le requery, puis revenir à cet enregistrement à l'aide de la valeur de l'id. :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Dim ident As Long
        ident = Me.ChampIdentifiant
        Me.Requery
        Me.Recordset.FindFirst "ChampIdentifiant= " & ident

    Ici l'identifiant contient un entier, par exemple un champ numéroAuto.

    Cdlt
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Membre averti
    Homme Profil pro
    Vétérinaire retraité
    Inscrit en
    Août 2022
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vétérinaire retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2022
    Messages : 43
    Par défaut
    Bonjour,
    Tout d'abord merci de me répondre.
    La procédure que j'appelle pour créer un nouvel adhérent est

    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
    Private Sub ajoute_adherent_Click()
        On Error GoTo Err_ajoute_adherent_Click
          DoCmd.GoToRecord , , acNewRec
          adherent.SetFocus
          Dim mafiche As Long
          mafiche = Me.Numéro
    Exit_ajoute_adherent_Click:
     
        Exit Sub
     
    Err_ajoute_adherent_Click:
        MsgBox Err.Description
        Resume Exit_ajoute_adherent_Click
     
    End Sub
    La procédure que j'ai créée pour effectuer l'opération est dans la structure du formulaire sur l'évènement "Après insertion"
    La procédure est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Form_AfterInsert()
        Me.Requery
        Me.Recordset.FindFirst "Numéro=" & mafiche
    End Sub
    Quand je clique sur le bouton devant créer l'ajout de mon nouvel adhérent j'ai le message d'erreur "Utilisation incorrecte de Null"
    Si je retire la ligne
    et bien sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Recordset.FindFirst "Numéro=" & mafiche
    ça remarche mais j'affiche la première fiche de mes adhérents.

    Merci pour votre aide
    Cordialement
    Serge VM

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 622
    Billets dans le blog
    67
    Par défaut
    Citation Envoyé par Serge VM Voir le message
    La procédure que j'appelle pour créer un nouvel adhérent est

    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
    Private Sub ajoute_adherent_Click()
        On Error GoTo Err_ajoute_adherent_Click
          DoCmd.GoToRecord , , acNewRec
          adherent.SetFocus
          Dim mafiche As Long
          mafiche = Me.Numéro
    Exit_ajoute_adherent_Click:
     
        Exit Sub
     
    Err_ajoute_adherent_Click:
        MsgBox Err.Description
        Resume Exit_ajoute_adherent_Click
     
    End Sub

    Quand je clique sur le bouton devant créer l'ajout de mon nouvel adhérent j'ai le message d'erreur "Utilisation incorrecte de Null"
    Juste après l'appel de la commande DoCmd.GoToRecord , , acNewRec le champ Numero ne contient pas encore de valeur.

    Mais une fois que la saisie manuelle de l'adhérent a été réalisée dans le formulaire, vous pouvez enregistrer votre saisie en appuyant sur un bouton actualiser par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub cmdActualiser_click()
        Dim ident As Long
        ident = Me.Numéro
        Me.Requery
        Me.Recordset.FindFirst "Numéro= " & ident
    End Sub
    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  5. #5
    Membre averti
    Homme Profil pro
    Vétérinaire retraité
    Inscrit en
    Août 2022
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vétérinaire retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2022
    Messages : 43
    Par défaut
    Bingo grâce à vous ça marche !
    Du coup j'ai créé un bouton Enregistrer qui conduit à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Enregistrer_Click()
        ' après l'instruction suivante le nouvel enregistrement est en dernier
        Me.Refresh
        ' son numéro automatique que j'ai nommé Numéro dans ma table est enregistré dans la variable ident
        Dim ident As Long
        ident = Me.Numéro
        ' cette instruction reclasse les enregistrements par ordre alphabétique nom+prénom comme spécifié dans ma requête utilisée comma base de données
        Me.Requery
        ' on recherche le premier enregistrement dont le numéro automatique est égal à celui enregistré dans ident
        Me.Recordset.FindFirst "Numéro= " & ident
        ' merci beaucoup à https://www.developpez.net qui m'a tout fait comprendre
    End Sub
    Je n'avais pas compris que tant que mon nouvel enregistrement n'était pas validé il était non pas vide mais inexistant.
    Pour être tout à fait honnête ce que je cherchais c'est que, une fois ma fiche remplie, en la validant par la roulette de la souris ou par une flèche fiche suivante ou précédente ma fiche soit classée automatiquement
    par ordre alpha et que j'ai à l'écran la fiche suivante ou précédente.
    Je me demande maintenant si c'est possible...
    Si vous avez la solution je suis preneur mais en tous cas merci beaucoup pour votre aide.
    Du coup je ne clique pas encore sur Résolu, au cas où !
    Serge VM

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 622
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    Pour aller sur l'enregistrement suivant celui que vous venez d'ajouter et en tenant compte du classement des fiches par ordre alphabétique, vous utilisez le même principe.

    1. Vous enregistrez l'id. de la nouvelle fiche.
    2. Voua actualisez votre formulaire avec la méthode requery.
    3. Vous revenez sur votre nouvel enregistrement avec la méthode findfirst.
    4. Vous allez au suivant avec DoCmd.GotoRecord....


    Le code sur l'événement click du bouton cmdSuivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CmdSuivant_Click()
        Dim ident As Long
        ident = Me.Numéro
        Me.Requery
        Me.Recordset.FindFirst "Numéro= " & ident
        DoCmd.GoToRecord acDataForm, Me.Name, acNext
    End Sub
    Cdlt
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

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

Discussions similaires

  1. [AC-2013] Vider champs formulaire après ajout d'un enregistrement
    Par GodTaliesin dans le forum IHM
    Réponses: 5
    Dernier message: 16/09/2019, 22h51
  2. [2.x] Symfony2.2 : Formulaire champs non-reçus après le bind(request)
    Par Xurudragon dans le forum Symfony
    Réponses: 5
    Dernier message: 17/03/2014, 10h28
  3. Réponses: 1
    Dernier message: 27/07/2013, 11h01
  4. Réponses: 3
    Dernier message: 22/09/2011, 16h02
  5. Réponses: 2
    Dernier message: 22/03/2007, 22h55

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