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 :

deux formulaires de saisie lié à la même table pour remplir celle-ci


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 60
    Points
    60
    Par défaut deux formulaires de saisie lié à la même table pour remplir celle-ci
    Bonjour,

    Je souhaite créer deux formulaires successifs liés à une même table. Je m'explique :

    Le premier contiendrai les champs date et groupe de travail de la table "A" et il y aurai un bouton de commande permettant de passer sur un deuxième formulaire qui contiendrai tous les autres champs de cette même table "A"

    Hèlas, je ne trouve pas d'option simple pour mettre ce système en place

    Je pense que ce système est fort utile car il permet de s'assurer que l'utilisateur remplie bien ces deux premiers champs date et groupe.

    J'ai réussi en créant deux sous-tables correspondant aux deux formulaires puis lors de la fermeture du deuxième formulaire par un bouton de commande celui-ci effectue la macro suivante :

    Fermer formulaire 1
    Fermer formulaire 2
    Ouvrir requête table1 + table 2 requête d'ajout qui recopie les enregistrements de 1 et 2 dans la table "A"
    'Puis pour en prévision de la prochaine saisie
    Ouvrir requête Suppression table 1 requête de suppression
    Ouvrir requête Suppression table 2 requête de suppression

    je trouve ce procédé relativement barbare si vous avez une solution alternative
    sinon j'aurai peut-être pour quelque un indiquer cette méthode

  2. #2
    Membre averti Avatar de dr_feelgood
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2005
    Messages : 292
    Points : 373
    Points
    373
    Par défaut
    tu es en train de créer une usine à gaz ....

    Je pense que ce système est fort utile car il permet de s'assurer que l'utilisateur remplie bien ces deux premiers champs date et groupe.
    Si c'est uniquement pour vérifier que 2 champs sont bien remplis, il te suffit de vérifier par un peu de code VB, à la sortie du champ, que le champ est rempli selon les critères, avant d'aller sur le champ suivant
    .
    less is more

    vous pouvez faire une recherche dans le forum
    et également une recherche dans les FAQ

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 60
    Points
    60
    Par défaut
    merci c'est vrai qu'une vérification par code serait mieux

    mais je n'ai pas le temps de me mettre au VBA car j'ai des échéances très rapide

    cela dit comment fait-on pour appeler une procédure évènementielle en sortie de l'écriture de celui-ci?
    j'ai une petite idée :
    on ouvre le formulaire en question en mode création
    puis on clique sur la zone de texte voulue lié à un champs pour afficher le "réglage des options" après sous l'onglet "évènement" on se place sur "sur sortie" puis on fais quoi on marque le nom de la procédure (privée ou publique?) ou on marque procédure évènementielle ???

    Merci

  4. #4
    Membre averti Avatar de dr_feelgood
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2005
    Messages : 292
    Points : 373
    Points
    373
    Par défaut
    tu t'embetera moins avec 2 lignes de code...



    je t'ai fait une representation graphique très rapide.

    Tu ouvres ton formulaire en mode création.

    sur le controle (la j'ai pris un bouton de commade) tu vas sur événements dans propriétés tu vas sur la méthode qui t'interresse ( sur l'image c'est sur clic, mais tu choisis sur sortie, tu cliques sur les ..., et ensuite tu choisi ton générateur, la générateur de code et tu cliques sur OK.

    Access te bascule automatiquement sur la visual Basic en créant le SUB, avec son End SUB. Sur l'image je l'ai encadré de jaune.

    entre private SUB et End sub tu ajoutes ton code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    IF Me.controle1 <> ... THEN
    ....
    pour le code exact à mettre, je peux te l'indiquer un peu plus tard, car je n'ai pas l'exemple sous la main.
    .
    less is more

    vous pouvez faire une recherche dans le forum
    et également une recherche dans les FAQ

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 60
    Points
    60
    Par défaut
    tu t'embetera moins avec 2 lignes de code...

    pa si sur

    non je ne trouve pas le suffixe derrière Me. qui désigne le texte remplie dans la zone de texte pou pouvoir taper le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if Me.(texte saisie??) = NULL then
    msgbox "le champ date est vide"
    end if
    vla sinon merci beaucoup pour ton aide

    pa : ou son stocké les procédures que l'on crée par cette méthode?
    si on ne les utilise plus sont elles toujours présentes?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Salut,
    Je pense que le plus simple est de mettre Nuls interdit dans les propriétés du champs incriminé au niveu de la définition de la table.@+
    Papaours78

  7. #7
    Membre averti Avatar de dr_feelgood
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2005
    Messages : 292
    Points : 373
    Points
    373
    Par défaut
    La solution de Papaours est effectivement plus simple.. c'est l'autre possiblité

    si on reste dans ma direction, après le Me. tu mets le nom du controle que tu vérifies.. si ton controle s'appelle texte1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if IsNull(Me.texte1) NULL then
    msgbox "le champ date est vide"
    end
    Ceci dit l'utilisation de = null ne marche pas toujours bien, regarde les FAQ a ce sujet

    sur cet exemple, le champ initiales doit obligatoirement comporter 3 lettres, si la condition n'est pa remplie, on retourne sur le champ pour intorduire à nouveau les données.

    Cette méthode est plus complète que celle proposée par PapaOours et permet d'avoir des critères de vérification plus étendues (3 lettres, la première commençant obligatoirement par un 'A' ou même une date comprise obligatoirement entre une date de début et une date de fin )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    If Len(Me.initiales) < 3 Or Len(Me.initiales) > 3 Or IsNull(Me.initiales) Then
     
    reponse = MsgBox(" veuillez entrer les initiales du nom avec les 2 premières lettres et la dernière  ", 0)
     
    With Me!initiales
     .SelStart = 0
     If Not (IsNull(Me.initiales)) Then .SelLength = Len(.Value)
    Cancel = True
    End With
     
    End If
    pour vérifier un champ numérique. Dans cet exemple le nombre doit être compris entre 1 et 99

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    If Me.a_naiss < 1 Or Me.a_naiss > 99 Then
    reponse = MsgBox(" veuillez entrer un chiffre entre 1 et 99", 0)
     
    With Me!a_naiss
     .SelStart = 0
     .SelLength = Len(.Value)
    Cancel = True
    End With
     
    End If
    les procédures sont stockées dans le module Microsoft Access Ojects (visibles dans la fernêtre en haut a gauche dans la fenêtre VB)
    .
    less is more

    vous pouvez faire une recherche dans le forum
    et également une recherche dans les FAQ

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 64
    Points : 60
    Points
    60
    Par défaut
    tout d'abord merci à papaours pr cette réponse évidente, bravo champion

    mais je préfère une procédure évènementielle en sortie du champs en question car sinon il faut attendre l'enregistrement de l'enregistrement (càd la fermeture du formulaire) pour que le message d'erreur soit affiché et pis après c'est le bordel pour l'utilisateur il doit tous resaisir enfin bref ce n'est pas sufisant

    Merci beaucoup à dr_feelgood d'avoir résolu le problème en même que de me convaincre de l'intêret du code VBA pour développer sa base Acces

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

Discussions similaires

  1. [AC-2002] Deux formulaires qui pointent vers une même table
    Par antezi dans le forum IHM
    Réponses: 2
    Dernier message: 11/02/2010, 21h27
  2. Réponses: 14
    Dernier message: 09/09/2008, 14h35
  3. Réponses: 4
    Dernier message: 25/11/2007, 10h13
  4. Limiter la saisie d'un même paramètre pour deux requêtes
    Par seba2004 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 07/08/2007, 07h25
  5. lier deux base de données par un même table
    Par id dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/02/2006, 14h28

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