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

Requêtes et SQL. Discussion :

Récuperer les champs d'une requête pour les mettre dans un formulaire


Sujet :

Requêtes et SQL.

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2014
    Messages : 87
    Points : 44
    Points
    44
    Par défaut Récuperer les champs d'une requête pour les mettre dans un formulaire
    Bonjour à tous,

    J'ai consulté pas mal de sujets à propos de la récupération des champs d'une requête dans un formulaire mais je n'ai pas réussi à obtenir le résultat voulu.

    Il s'agit d'alimenter une base de données par l'intermédiaire d'un formulaire appelé "Profile" et d'un sous formulaire appelé "Dimension" (voir photo 1). Apres avoir sélectionné les 3 premiers champs du formulaire, je dois renseigner les dimensions de l'élément que je souhaite ajouter à ma BDD.

    En réalité, il existe une table nommée tDimension où apparaissent deux champs: les dimensions (longueur, largeur..) du profilé et l'unité (mm,mm2...)

    J'ai créé une requête DimensionRequête (photo2) qui regroupe les données de ma table tDimension que je veux récupérer dans mon formulaire. Mais je n'arrive pas dans mon formulaire à avoir un "listing" des dimensions avec les bonnes unités en face (en fait niveau "rendu" sur le formulaire je veux avoir la même représentation des données dimensions et unité que dans ma requête). Je voudrais en fait que pour chaque enregistrement b,h,tw.... apparaissent automatiquement et que je n'ai juste qu'à saisir la valeur.

    Pour le moment la seule chose à laquelle je suis parvenue est de créer un menu déroulant, ce qui n'est pas pratique d'un point de vu utilisateur..

    Savez vous comment je peux résoudre ce problème?Nom : photo1.png
Affichages : 2779
Taille : 905,6 KoNom : photo2.png
Affichages : 2636
Taille : 306,2 Ko

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 555
    Points
    24 555
    Par défaut
    Bonjour,

    http://denishulo.developpez.com/tuto...sage-sousform/

    N'hésite pas à chercher dans les tutos, la faq et le forum. Si dans ce dernier tu ne trouves pas reformule ta question avec des mots différents.
    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2014
    Messages : 87
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    Merci, j'ai réussi à obtenir le résultat voulu en créant un sous-formulaire à partir d'une requête

    Par contre j'ai un gros soucis,
    J'ai un formulaire qui contient un sous formulaire (que j'ai crée à partir de la requête dont j'ai parlé précédemment)
    Je veux que mon enregistrement ne soit pas possible si le champ "Valeur" de mon sous-formulaire n'est pas renseigné
    J'ai donc crée un bouton et je suis passer en VBA pour permettre de vérifier les vides dans ce champ. Mais j'ai un problème de syntaxe. Mon bouton apparait dans le formulaire appelé "Profile". Le champ sur lequel je souhaite vérifier le vide est le champ "Valeur" qui se trouve dans le sous-formulaire "Requête". J'ai vraiment essayé une multitude de code que j'ai pu trouvé sur le net dans des forums

    mais j'ai toujours ce message d'erreur : "Impossible de trouver le formulaire "Requete" auquel il est fait référence dans une expression de macro ou un code VB"

    Mais aucune des solutions que j'ai essayé fonctionne! Si quelqu'un pouvait m'aider sur ce problème de syntaxe ça serait vraiment cool

    Merci d'avance

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 555
    Points
    24 555
    Par défaut
    Bonjour,
    1) ouvrir le formulaire principal en mode création
    2) cliquer sur le container sur sous-formulaire (le cadre qui entoure le sous-form)
    3) s'il y a une source de données c'est que ce n'est pas le bon contrôle qui est sélectionné.
    4) repérer la propriété Nom du cadre
    5) c'est ce nom qui doit être utilisé.

    Pour éviter ce problème donner le même nom au cadre que le nom du sous-form.
    PS : Ceci est indiqué dans le tuto que je t'ai indiqué dans un précédent échange :
    http://loufab.developpez.com/tutorie...pelformulaire/

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2014
    Messages : 87
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    Merci pour les liens, en effet j`avais un problème avec le nom de mon sous-formulaire

    Par contre j`ai toujours un soucis.. Pour un enregistrement, même quand tous les champs `valeur` du sous formulaire ne sont pas renseignes j`ai possibilite d`enregistrer le profile...Voici mon code. Mon Formulaire a pour nom `Profile` et mon sous formulaire `Requetee`

    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
    Private Sub Commande28_Click()
     
    Dim Rep As Integer
     
    Rep = MsgBox("Êtes-vous sûr de vouloir créer un nouvel enregistrement?", vbQuestion + vbYesNo, "Confirmez")
     
    If Rep = vbYes Then
     
        If IsNull(Me.Famille) Or IsNull(Me.Categorie) Or IsNull(Me.Profile) Or IsNull(Forms![Profile].Form![Requetee]![Valeur].Value) Then
            MsgBox "ATTENTION: Tous les champs doivent être renseignés", vbExclamation, "STOP"
            Me.Famille.SetFocus
        End If
     
        DoCmd.RunCommand acCmdSaveRecord
        Rep = MsgBox("Profile enregistre!" & vbCrLf & "Voulez-vous enregistrer un nouveau produit?", vbQuestion + vbYesNo, "Nouveau")
            If Rep = vbYes Then
               DoCmd.GoToRecord , , acNewRec
            Else
               DoCmd.Close acForm, "Profile"
            End If
            Else
            DoCmd.Close acForm, "Profile"
    End If
    End Sub
    merci davance pour votre aide

  6. #6
    Membre éclairé Avatar de pyloupylou
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2012
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2012
    Messages : 438
    Points : 666
    Points
    666
    Par défaut
    2015 en vue.... youpi

    en fait il faut que tu poses ton test dans l’événement beforeupdate de l'écran principal
    ici toto correspond au conteneur de ton sous écran et texte à la valeur testée
    vérismolexemple ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub Form_BeforeUpdate(Cancel As Integer)
    If Nz(Me.toto.Form!texte, "") = "" Then
        MsgBox "vide"
        Cancel = True
    End If
    End Sub
    ----
    Il ne s'agit pas de chercher à tout savoir mais de savoir où tout chercher

    merci de penser à
    Au fait.... je ne réponds pas, moi non plus, aux mp

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2014
    Messages : 87
    Points : 44
    Points
    44
    Par défaut
    Bonjour

    Merci pour ta réponse mais je n`ai pas tout a fait compris le code..est ce que tu pourrais me donner un peu plus d`explications

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 555
    Points
    24 555
    Par défaut
    Bonjour,

    Si ton form est Profile alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms![Profile].Form![Requetee]![Valeur].Value
    Devrait être égal à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Requetee.Form.Valeur.value
    Ps : Attention à Valeur, il s'agit d'un mot réservé dans les versions francophones d'ACCESS.

    Tout cela est expliqué dans le même tuto. Je pense qu'il est maintenant nécessaire, vu tes besoins (dans l'application ) de réaliser ce tuto du début jusqu'à la fin pour bien en acquérir les concepts. Quid du pense-bête lié ?!
    Sinon tu vas boucler sur le même type de demande éternellement. C'est dommage de perdre du temps sur cet aspect anecdotique du VBA ACCESS.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2014
    Messages : 87
    Points : 44
    Points
    44
    Par défaut
    Salut loufab

    Ouais j`ai essaye ces 2 codes mais j`arrive pas a obtenir ce que je veux

    En fait je débute sur Access j`ai pas le temps de faire des tutos mais bon vu comme je bloque je vais faire les exemples du lien que tu m`as file. j`espère vraiment que ça répondra a mes questions

    Merci et bonne annee a tous les membres du forum

  10. #10
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2014
    Messages : 87
    Points : 44
    Points
    44
    Par défaut
    Bonjour à tous,

    Je reviens hélas sur le forum car je n`ai pas réussi a résoudre le problème. J'ai bel et bien un message d'erreur qui s'affiche si le champ valeur n'est pas renseigné mais uniquement pour la première ligne...est ce que je dois introduire un système de compteur pour que l'enregistrement n'ait pas lieu si les 13 lignes du champ valeur ne sont pas remplies?

    Merci d'avance

  11. #11
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    eliamat bonjour,

    A tous je me permets d'ajouter mes réflexions sur ce fil de discussion car nous avons longuement échangés sur le chat hier avec Eliamat. La complexité ne réside pas en soi dans l'élaboration de l'outil de contrôle mais à l'aspect stratégique du positionnement de ce contrôle.

    De me point de vue la propriété activation et fermeture du formulaire principal devrait te permettre de contrôler tes saisies et interdire à l'utilisateur quelque sortie que ce soit tant que les données n'ont pas été validées (je ne sais pas ce qu'en pense Loufab et pyloupylou à qui j'adresse mes meilleurs voeux pour 2015 au passage)

    A ce titre j'ai conçu un exemple basé sur une filmographie, à savoir une table T_Realisateurs et T_Films

    T_Realisateurs (Idrealisateur, nomRealisateur)
    T_Films (IdFilm, titre, annee, #Idrealisateur) -> #Idrealisateur (clé étrangère)

    En réalisant un formulaire principal puis un sous formulaire filmographie, nous contrôlerons la validité de la saisie en vérifiant l'existence d'une année de sortie par exemple.

    Le formulaire + le sous formulaire ressemblerait à ceci :

    Nom : ssforms1.JPG
Affichages : 2617
Taille : 55,4 Ko

    J'ai positionné un bouton contrôle (Commande10) permettant de contrôler (excuse mon manque d'originalité) la validité des informations (événement <Sur Clic>)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Commande10_Click()
     Call controle_Saisie
    End Sub
    Comme tu peux le voir, l’événement appelle une procédure controle_Saisie. Cette procédure pourra donc être appelée sur différents événements (à toi de définir l'aspect stratégique).

    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
    Sub controle_Saisie()
    Dim Rs As DAO.Recordset
    '
    ' si enregitrement est nouveau alors on quitte le contrôle
    '
    If Nz(Me.Id_Realisateur, 0) = 0 Then Exit Sub
    '
    ' définition de l'objet recordset
    '
    Set Rs = Forms!F_Filmographie!SsForm.Form.Recordset
    Rs.MoveFirst    ' 1er enregistrement
    Do Until Rs.EOF
        If Nz(Rs!annee, 0) = 0 Then
            ' si année = 0 on affiche le message et on quitte
            ' (inutile de répéter x fois le message sur les occureces non renseignées)
            MsgBox "une année n'est pas renseignée sur le film " & Nz(Rs!titre, ""), vbCritical, "erreur saisie"
            Set Rs = Nothing
            Exit Sub
     
        End If
        '
        ' on va à l'enregistrement suivant
        '
    Rs.MoveNext
    Loop
    ' libération
    Set Rs = Nothing
    End Sub
    Voilà comment tu peux balayer les enregistrements de ton sous formulaire, à toi d'adapter dans ce cas.

    Je te joins la base exemple ayant servi à mes tests.

    Cordialement, et bonne continuation

    jimbolion
    Fichiers attachés Fichiers attachés
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  12. #12
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2014
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2014
    Messages : 87
    Points : 44
    Points
    44
    Par défaut
    Problème résolu grâce a jimbolion

    Un énorme MERCI pour toutes ces heures passées pour m'aider

  13. #13
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    eliamat

    ce fut un plaisir tant tu t'es donnée pour comprendre...

    jimmy
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/09/2014, 14h10
  2. Réponses: 4
    Dernier message: 25/11/2013, 02h24
  3. Réponses: 11
    Dernier message: 22/06/2009, 09h58
  4. Réponses: 1
    Dernier message: 08/02/2009, 15h43
  5. Réponses: 4
    Dernier message: 22/05/2007, 14h42

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