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 :

Validation préalable de saisie de formulaire grace à table temporaire [AC-2016]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    ceo
    Inscrit en
    Juin 2019
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : ceo
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2019
    Messages : 73
    Points : 63
    Points
    63
    Par défaut Validation préalable de saisie de formulaire grace à table temporaire
    Bonjour,
    Je voudrais que les modifs apportées dans le formulaire du doc ci-joint soient validées par l'utilisateur avant d'être rapatriées dans la table tListeSalaries.
    Pour cela je pensais stocker les données dans une table temporaire tListeSalariesTemp, et remplacer les données de tListeSalaries avec une procedure evenementielle déclenchée par le bouton de validation situé en pied de formulaire.
    Mais je patine dans la choucroute.
    Pouvez-vous m'éclairer svp?
    Merci d'avance.
    Etxe.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    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 621
    Points : 14 577
    Points
    14 577
    Par défaut
    bonjour,
    à mon sens, ce genre de pré-saisie nécessitant une validation est d'un autre temps ... Si jamais une erreur de saisie est constatée, il est toujours temps de revenir sur l'enregistrement et de le modifier. La vérification de la saisie est donc primordiale, d'autant plus si elle est sensible.
    Dans ce cas, pourquoi pas mettre en place un système à double utilisateur : un utilisateur qui saisit et un autre qui valide ? Mais cette méthode est complexe et lourde à mettre en place et réservée aux très grosse structures ...
    Sinon, oui il faut copier les données d'origine dans une table temporaire, mettre un verrou pour qu'une autre personne ne puisse pas apporter les modifications entre-temps: cela consiste à ajouter un champ booléen (oui/non) et mettre à jour ce champ avant la copie dans la table temporaire par une requête de mise à jour.
    Une fois la validation déclenchée recopier les données dans la tables d'origine et déverrouiller l'enregistrement par une autre requête de mise à jour.
    Cela, bien sûr si l'enregistrement existe déjà, sinon c'est une création.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Membre du Club
    Homme Profil pro
    ceo
    Inscrit en
    Juin 2019
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : ceo
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2019
    Messages : 73
    Points : 63
    Points
    63
    Par défaut
    Tee_grandbois rebonjour,

    J'ai un pb sur comment mettre à jour les données de la table temporaire vers la table d'origine: comment pointer vers le bon enregistrement de ma table d'origine?
    La recopie la plus efficace est de mettre un "=" entre les valeurs des champs correspondants? Ou bien as-tu une méthode plus élégante?
    Merci encore!
    Etxe.

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    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 621
    Points : 14 577
    Points
    14 577
    Par défaut
    J'ai un pb sur comment mettre à jour les données de la table temporaire vers la table d'origine: comment pointer vers le bon enregistrement de ma table d'origine?
    la clé primaire unique est le plus sûr moyen: CleSalarie en tant que numéro Auto ferait l'affaire pour identifier de manière unique l'enregistrement sélectionné:
    Ci-dessous, voici un exemple de SQL qui insère dans la table temporaire après le choix d'un salarié:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO tListeSalaries_Tmp
    SELECT * FROM tListeSalaries
    WHERE tListeSalaries.CleSalarie=[Formulaires]![fSelectionSalarieParActivite]![ldListeSalaries];
    La recopie la plus efficace est de mettre un "=" entre les valeurs des champs correspondants? Ou bien as-tu une méthode plus élégante?
    on peut lire les champs de la table temporaire et comparer le nom du champ de la table réelle pour les mettre à jour de manière dynamique:
    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
        oRst1.MoveFirst
        oRst2.Edit
        For I = 0 To oRst1.Fields.Count - 1
            ' on ne met pas à jour les champs CleSalarie et Prenom_Nom
            If oRst1.Fields(I).Name <> "CleSalarie" And oRst1.Fields(I).Name <> "Prenom_Nom" Then
            ' mise à jour des champs de la table réelle
                For J = 0 To oRst2.Fields.Count - 1
                    If oRst1.Fields(I).Name = oRst2.Fields(J).Name Then
                        oRst2.Fields(J).Value = oRst1.Fields(I).Value
                        Exit For
                    End If
                Next J
            End If
        Next I
        oRst2.Update
    ci-joint la base modifiée contenant l'exemple du code (sur l'évènement Clic du bouton Valider):
    DemandeForum25082019_UP.zip

    NB: à mon avis, c'est une très mauvaise idée d'avoir rajouté un espace à la fin du champ Nom dans la table tListeSalaries, il aurait été plus judicieux d'y ajouter un suffixe: NomSalarie par exemple
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  5. #5
    Membre du Club
    Homme Profil pro
    ceo
    Inscrit en
    Juin 2019
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : ceo
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2019
    Messages : 73
    Points : 63
    Points
    63
    Par défaut
    Bonjour Tee,
    Tes solutions fonctionnent parfaitement, je dois maintenant les comprendre en entier!
    Merci beaucoup pour tes nombreuses aides.

    Bonne journée.

    Etxe.

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    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 621
    Points : 14 577
    Points
    14 577
    Par défaut
    bonjour Etxezarreta,
    si tu as besoin d'explications, je pourrai t'en donner mais pas avant début septembre car je fais une pause de quelques jours.
    Bonne continuation.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  7. #7
    Membre du Club
    Homme Profil pro
    ceo
    Inscrit en
    Juin 2019
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : ceo
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2019
    Messages : 73
    Points : 63
    Points
    63
    Par défaut
    Volontiers, merci!
    en attendant je regarde de plus près l'utilisation des objets de Access en particulier de Recordset, j'ai trouvé sur le site le cours suivant, c'est bien expliqué: https://warin.developpez.com/access/dao/?page=partie_5#
    Bonne coupure et à bientôt!

    Etxe.

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    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 621
    Points : 14 577
    Points
    14 577
    Par défaut
    bonsoir,
    Bonne coupure et à bientôt!
    oui, même un retraité en a aussi besoin
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

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

Discussions similaires

  1. [AC-2003] Saisi automatique formulaire 2 table liées
    Par le_sayan dans le forum Access
    Réponses: 1
    Dernier message: 07/05/2012, 14h11
  2. [AC-2000] Saisie sous-formulaire lié table intermédiaire
    Par CybSnoopy dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/12/2009, 13h51
  3. Réponses: 7
    Dernier message: 20/06/2007, 12h38
  4. Débutant-Insertion dans table valeurs saisies sur formulaire
    Par Michel Hubert dans le forum Access
    Réponses: 2
    Dernier message: 14/04/2006, 20h38
  5. débutant-Insertion dans table valeurs saisies sur formulaire
    Par Michel Hubert dans le forum Access
    Réponses: 2
    Dernier message: 13/04/2006, 10h07

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