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

IHM Discussion :

Définir valeur d'un champs lors d'un ajout d'enregistrement [AC-2016]


Sujet :

IHM

  1. #1
    Membre à l'essai
    Homme Profil pro
    Programmeur occasionnel
    Inscrit en
    Mai 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Programmeur occasionnel

    Informations forums :
    Inscription : Mai 2019
    Messages : 16
    Points : 14
    Points
    14
    Par défaut Définir valeur d'un champs lors d'un ajout d'enregistrement
    Bonjour à toutes et tous,

    Je débute avec MS ACCESS. Je reprends une base de données que j'utilisais par ailleurs avec PHP/MYSQL pour l'utiliser avec MS ACCESS.

    Après quelques jours de découvertes, j'ai réussi à importer mes données, créer des formulaires, des champs calculés, etc.. bref je m'éclate.

    Mon problème du jour, c'est que j'ai rajouté un bouton assez classique "nouvel enregistrement" sur un formulaire. Le nouvel enregistrement est créé mais je voudrais que le champs "PATIENT_ID" qui est ma clef primaire soit automatiquement mis à jour en prenant la valeur de ce champs dans l'enregistrement précédent et en ajoutant 1....

    J'ai pas mal cherché sans succès...

    Merci d'avance

    Citadelle33

  2. #2
    Membre à l'essai
    Homme Profil pro
    Programmeur occasionnel
    Inscrit en
    Mai 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Programmeur occasionnel

    Informations forums :
    Inscription : Mai 2019
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Je galère avec l'outil de macros en essayant de définir la valeur du champs PATIENT_ID par rapport à l'enregistrement précédent....

  3. #3
    Membre à l'essai
    Homme Profil pro
    Programmeur occasionnel
    Inscrit en
    Mai 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Programmeur occasionnel

    Informations forums :
    Inscription : Mai 2019
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Voici l'état de ma réflexion....

    J'ai tenté :

    - en passant par la création d'une macro associée à la table, après insertion. Dans la macro, je sélectionne "ModiferEnregistrement", puis "DéfinirChamp", puis il me faut indiquer le nom du champ et sa valeur. Là, je ne sais pas comment mentionner le champ PATIENT_ID auquel je veux accéder, et comment définir une expression pour la valeur pour indiquer d'incrémenter de 1 par rapport à la valeur du champ précédent.

    - en modifiant le type de champ en "numerotation auto" mais j'ai vite arrêté car je ne veux surtout pas qu'il me renumérote tous les enregistrements de 1 en 1 car ce champs me sert à faire le lien avec une autre table

    - via le bouton "nouvel enregistrement" sur le formulaire concerné, pour venir modifier la valeur du champ lors de la création du nouvel enregistrement.

    Dur dur...

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 769
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 769
    Points : 14 810
    Points
    14 810
    Par défaut
    bonjour,
    en général, on laisse Access gérer la numérotation en utilisant le type de champ Numéro Auto mais ce n'est possible que lorsque la table est vide.
    Si elle est déjà remplie, il faut copier la structure de la table en un nouvelle table, ajouter le champ Numéro Auto à cette nouvelle table puis copier les enregistrements de l'ancienne vers la nouvelle avec une requête INSERT. Comme son nom l'indique, le Numéro Auto s'incrémente automatiquement à chaque nouvel enregistrement inséré.

    Il faut savoir aussi que le Numéro Auto est perdu si jamais, au cours d'une saisie, on abandonne l'enregistrement (appui sur la touche Échap, par exemple).
    Sinon, il y a la solution de générer sa propre numérotation, ce qui est déconseillé en général dans ce forum, surtout dans un environnement multi-utilisateurs. Sur l'évènement Si modification (Dirty) du formulaire en VBA après avoir choisi "procédure événementielle", insérer le code en bleu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_Dirty(Cancel As Integer)
    If Me.NewRecord Then
        Me.PATIENT_ID = Nz(DMax("PATIENT_ID", "NomDeMatable"), 0) + 1
    End If
    End Sub
    Si tu ne connais pas le VBA, en macro, il faut faire apparaitre le catalogue d'actions complet en cliquant sur le bouton "Afficher toutes les actions".
    Ensuite ajouter une condition Si , puis ajouter l'action "Définir Valeur" :
    Code Macro : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Si: EstNull([PATIENT_ID]) Alors
    Définir Valeur
    Elément: [PATIENT_ID]
    Expression: =Nz(MaxDom("PATIENT_ID";"NomDeMatable");0)+1

  5. #5
    Membre à l'essai
    Homme Profil pro
    Programmeur occasionnel
    Inscrit en
    Mai 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Programmeur occasionnel

    Informations forums :
    Inscription : Mai 2019
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    J'ai opté () pour la seconde solution, la base étant mono-utilisateur, et ça fonctionne !

    Un gros gros merci, j'ai galéré 2 heures là-dessus ce matin.

    Pour tout dire, j'ai voulu tester la première solution, en passant en mode création dans ma table, je crée un champ type "numérotation auto", il me numérote mes enregistrements mais je ne parviens pas ensuite à corriger cette numérotation pour les enregistrements existants.

    La seconde solution fonctionne même si je comprends qu'elle est "moins classe"...

    Merci encore

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 769
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 769
    Points : 14 810
    Points
    14 810
    Par défaut
    il me numérote mes enregistrements mais je ne parviens pas ensuite à corriger cette numérotation pour les enregistrements existants.
    oui, ce n'est pas modifiable et il vaut mieux que cela soit ainsi. Si ce numéro était déjà utilisé dans plusieurs tables de l'ancienne base, il vaut mieux en effet utiliser la seconde solution.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Programmeur occasionnel
    Inscrit en
    Mai 2019
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Programmeur occasionnel

    Informations forums :
    Inscription : Mai 2019
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Merci encore !

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

Discussions similaires

  1. [AC-2010] Prédéfinir un champ lors d'un ajout dans un formulaire
    Par Doudou-Galak dans le forum IHM
    Réponses: 12
    Dernier message: 23/05/2014, 19h03
  2. [AC-2013] Définir valeur d'un champ sur activation d'une case à cocher
    Par brunoli dans le forum Access
    Réponses: 4
    Dernier message: 10/05/2014, 16h37
  3. [AC-2007] Fixer la valeur d'un champ lors de l'utilisation d'un formulaire
    Par tomatotep dans le forum IHM
    Réponses: 6
    Dernier message: 03/07/2012, 17h47
  4. Réponses: 10
    Dernier message: 18/04/2011, 15h53
  5. Réponses: 3
    Dernier message: 17/11/2009, 13h31

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