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 :

[Formulaire] Remplissage de zone texte après selection de liste déroulante [AC-2007]


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 111
    Points : 63
    Points
    63
    Par défaut [Formulaire] Remplissage de zone texte après selection de liste déroulante
    Je voudrais en faite pouvoir selectionner parmis 2listes déroulantes le nom et le prenom d'un client (ces deux la marchent impec' )

    (je voudrais aussi que l'utilisateur puisse aussi le saisir si le client n'existe pas mais c'est une autrz affaire )

    Enfin une fois ces 2listes remplis je voudrais qu'il m'affiche dans différent Zone de texte des informations le concernant (Rue, appartement, batiment, CP, tel ...)

    Donc je voudrait en faite qu'il m'affiche cela a la fin de ces selection sauf qu'apparement je ne doit pas avoir selectionnez le bon evenement...

    Voila mon code :

    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
    29
    30
    31
    32
    33
    34
    Private Sub cmbPRENOM_AfterUpdate()
     
    Dim SQL As String
    Dim nomselect As String
    Dim prenomselect As String
     
        nomselect = Me!cmbNOM
        prenomselect = Me!cmbPRENOM
     
        SQL = "SELECT Rue FROM CLIENT WHERE CLIENT.Nom= " & nomselect
        TxtRue.RowSource = SQL
     
        SQL = "SELECT Batiment FROM CLIENT WHERE CLIENT.Nom= " & nomselect
        TxtBat.RowSource = SQL
     
        SQL = "SELECT Appartement FROM CLIENT WHERE CLIENT.Nom= " & nomselect
        TxtApp.RowSource = SQL
     
        SQL = "SELECT CP FROM CLIENT WHERE CLIENT.Nom= " & nomselect
        TxtCp.RowSource = SQL
     
        SQL = "SELECT Ville FROM CLIENT WHERE CLIENT.Nom= " & nomselect
        TxtVil.RowSource = SQL
     
        SQL = "SELECT TelPortable FROM CLIENT WHERE CLIENT.Nom= " & nomselect
        TxtTelP.RowSource = SQL
     
        SQL = "SELECT TelFixe FROM CLIENT WHERE CLIENT.Nom= " & nomselect
        TxtTelF.RowSource = SQL
     
        SQL = "SELECT Email FROM CLIENT WHERE CLIENT.Nom= " & nomselect
        TxtMail.RowSource = SQL
     
    End Sub
    Et mon erreur :
    -Erreur de compilation.
    -Membre de méthode ou de données introuvable.


    Merci d'avance.

    Cordialement.

    Tristan.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    Je crois voir d'ou provient mon problème ...

    C'est le RowSource qui doit être mauvais mais j'ignore l'équivalent pour les zone de texte.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2009
    Messages : 238
    Points : 183
    Points
    183
    Par défaut
    Bonjour

    L'équivalent du rowsource pour les zones de textes est ControlSource.

    Cordialement

    Mcfly

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    J'ai changé de méthode et sa marche ^^

    voila mon code :

    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
    Private Sub cmbPRENOM_AfterUpdate()
     
    Dim SQL As String
    Dim nomselect As String
    Dim prenomselect As String
     
        nomselect = Me!cmbNOM
        prenomselect = Me!cmbPRENOM
     
        TxtRue = cmbPRENOM.Column(3)
     
        TxtBat = cmbPRENOM.Column(4)
     
        TxtApp = cmbPRENOM.Column(5)
     
        TxtCp = cmbPRENOM.Column(6)
     
        TxtVil = cmbPRENOM.Column(7)
     
        TxtTelP = cmbPRENOM.Column(8)
     
        TxtTelF = cmbPRENOM.Column(9)
     
        TxtMail = cmbPRENOM.Column(10)
    End Sub

    L'inconvénient c'est que desormais il ne veut pas que je saisisse autre chose que ce qu'il y a dans la liste déroulante or j'aurais aimé pouvoir faire ajouté à mon utilisateur un client dans le même formulaire que j'aurai ajouté si le nom et le prénom du client était différent de ceux existan dans la base ...

    J'éspère être clair ^^

    Cordialement

    Tristan.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    Je vais voir avec controlsource cela me permettra peut etre de régler mon soucis

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    Alors avec des controlsource cela donne :

    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
    29
    30
    31
    32
    33
    34
    Private Sub cmbPRENOM_AfterUpdate()
     
    Dim SQL As String
    Dim nomselect As String
    Dim prenomselect As String
     
        nomselect = Me!cmbNOM
        prenomselect = Me!cmbPRENOM
     
        SQL = "SELECT Rue FROM CLIENT WHERE CLIENT.Nom= " & nomselect & " AND CLIENT.Prenom = " & prenomselect
        TxtRue.ControlSource = SQL
     
        SQL = "SELECT Batiment FROM CLIENT WHERE CLIENT.Nom= " & nomselect & " AND CLIENT.Prenom = " & prenomselect
        TxtBat.ControlSource = SQL
     
        SQL = "SELECT Appartement FROM CLIENT WHERE CLIENT.Nom= " & nomselect & " AND CLIENT.Prenom = " & prenomselect
        TxtApp.ControlSource = SQL
     
        SQL = "SELECT CP FROM CLIENT WHERE CLIENT.Nom= " & nomselect & " AND CLIENT.Prenom = " & prenomselect
        TxtCp.ControlSource = SQL
     
        SQL = "SELECT Ville FROM CLIENT WHERE CLIENT.Nom= " & nomselect & " AND CLIENT.Prenom = " & prenomselect
        TxtVil.ControlSource = SQL
     
        SQL = "SELECT TelPortable FROM CLIENT WHERE CLIENT.Nom= " & nomselect & " AND CLIENT.Prenom = " & prenomselect
        TxtTelP.ControlSource = SQL
     
        SQL = "SELECT TelFixe FROM CLIENT WHERE CLIENT.Nom= " & nomselect & " AND CLIENT.Prenom = " & prenomselect
        TxtTelF.ControlSource = SQL
     
        SQL = "SELECT Email FROM CLIENT WHERE CLIENT.Nom= " & nomselect & " AND CLIENT.Prenom = " & prenomselect
        TxtMail.ControlSource = SQL
     
    End Sub

    Est des jolis :

    #Nom*?

    Sur toute mes zones de textes ^^ j'ai du me planter quelques part

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 191
    Points : 200
    Points
    200
    Par défaut
    Bonjour,

    je travaille actuellement à résoudre le même problème de mon côté! J'essaie d'alimenter des boîtes de texte avec des requêtes SQL et j'obtiens toujours "#NOM?" (que ce soit en passant par le code VBA ou encore par les propriétés de la boîte de texte).

    Je te tiens au courant si je débouche sur quelque chose !

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    Avec la version de code que j'ai écrite juste avant j'arrivais à afficher les bons champs dans mes zones de textes sans "#Nom*?".

    Mais veux tu aussi pouvoir saisir ces zones de textes manuellement?

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 191
    Points : 200
    Points
    200
    Par défaut
    Bonjour,

    non elles ne seront remplie que par le résultat d'une requête et seront ensuite verrouillées en lecture seule. Je vais donc essayer ton code plus haut!

    Salutations

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2009
    Messages : 238
    Points : 183
    Points
    183
    Par défaut
    re

    Petite amélioration qui pourras peut être résoudre le problème (mais je n'en suit pas convaincu... )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SQL = "SELECT Rue FROM CLIENT WHERE CLIENT.Nom= '" & nomselect & "' AND CLIENT.Prenom = '" & prenomselect & "' "
    Cordialement

    mcfly

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    Non ce ne sont pas les cotes

    J'enchaine bloqueage sur bloquage aujourd'hui ^^

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    Mcfly est tu sure de "controlsource" ?

    D'après laide de windows

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    La propriété ControlSource identifie une cellule ou un champ et ne contient pas les données enregistrées dans la cellule ou le champ. Si vous modifiez la propriété Value du contrôle, la modification se répercute automatiquement dans la cellule ou le champ liés. De même, si vous changez la valeur de la cellule ou du champ liés, la modification se répercute automatiquement dans la propriété Value du contrôle.. 
     
    Vous ne pouvez spécifier un autre contrôle pour ControlSource sans provoquer d'erreur.
     
    La valeur par défaut de la propriété ControlSource est une chaîne vide. Si ControlSource contient une valeur autre qu'une chaîne vide, la propriété identifie une cellule ou un champ liés. Leur contenu est alors automatiquement copié dans la propriété Value lors du chargement du contrôle.
     
    Note Si la propriété Value est sur Null, aucune valeur n'apparaît à l'emplacement identifié par ControlSource.
    Cela ne veut t'il pas dire que l'on ne peut pas stocker des données avec controlsource ?

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 191
    Points : 200
    Points
    200
    Par défaut
    Bonjour,

    étant donné que je n'ai pas réussi à utiliser correctement "ControlSource" pour mes boîtes de texte avec une requête SQL directement, j'ai contourné le problème avec en passant par un recordset. Je m'explique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim resultat As String
    Dim table As DAO.Database
    Dim enregistrement As DAO.Recordset
     
    Set table = CurrentDb
    Set enregistrement = table.OpenRecordset(sql, dbOpenSnapshot)
     
    resultat = enregistrement.Fields("monChamp")
    boiteDeTexte.Value = resultat
    Donc, je vais chercher l'enregistrement souhaité à l'aide de ma requête sql nommée "sql". Puis, je vais ensuite extraire le (ou les) champ qui m'intéresse pour aller les stocker dans un string. J'utilise ensuite ce string pour mettre à jour la valeur du texte dans les boîtes.

    Ce n'est peut-être pas optimal au point de vue des performances, mais je crois que ce peut-être une piste de solutions. En tout cas, a priori, ça marche très bien de mon côté!

    En espérant que cela puisse t'être utile aussi,
    Salutations

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2009
    Messages : 238
    Points : 183
    Points
    183
    Par défaut
    ahhh oui je vien de comprendre mon erreur....

    en fait il faut que ton formulaire soit basé sur la table contenant tes informations pour utilisé controlSource.

    Une solution pourrait être de séparer en deux formulaire ta recherche :

    -un formulaire ou tu sélectionne ton client, par un bouton quelconque tu peut ouvrir un deuxième formulaire basé sur ta table et tu filtre le formulaire avec ton identifiant client, il suffira ensuite de mettre les textboxs et de les basé sur les champs adéquates... seul problème effectivement cela oblige a avoir deux formulaires ce qui n'est peut être pas forcément ton but.

    de plus oui on ne peut pas mettre de chaîne SQL dans un controlSource Mea Culpa

    Ca donnerais plus quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TxtTelP.ControlSource = "TelPortable"
    voila, mais du coup ca risque de ne pas pouvoir vous aller...

    Cordialement

    Mcfly

    Edit : effectivement la méthode de Al_bert en passant par des recordset devrais te permettre de mieux répondre que la mienne à ta problématique

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    C'est vrai que j'avais pensé faire 2 formulaires mais sa complique la chose en effet et je pense que le controlsource risque de limiter la marge de manoeuvre.

    Mais je garde cette idée dans un coin au cas ou merci en tout cas je vais me ploncher dans le recordset qui dailleur me fait des sienne ^^

    J'ai mis :

    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
    Private Sub cmbPRENOM_AfterUpdate()
     
    Dim resultat As String
    Dim CLIENT As DAO.Database
    Dim enregistrement As DAO.Recordset
     
    Set CLIENT = CurrentDb
    SQL = "SELECT * FROM CLIENT WHERE CLIENT.Nom= '" & nomselect & "' AND CLIENT.Prenom = '" & prenomselect & "' ;"
    Set enregistrement = CLIENT.OpenRecordset(SQL, dbOpenSnapshot)
     
    resultat = enregistrement.Fields("Rue")
    TxtRue.Value = resultat
     
     
     
    End Sub
    Et me fait une erreur tel qui suit .. :

    -erreur d'execution "3078"
    -le moteur de base de données ne peut pas trouver la table ou la requete source " " . Assurez vous qu'elle existe ou qu'elle n'est pas mal orthographié.

    Surement quelque chose que je n'ai pas compris (je ne me suis jamais servis de recordset encore).

    Amicalement.

    Tristan.

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 191
    Points : 200
    Points
    200
    Par défaut
    Bonjour,

    cette erreur survient habituellement lorsque la requête SQL est mal orthographiée (mauvais nom de table, champ inexistant, etc.). Donc, vérifie que tous les noms employés dans la requête sont correctement orthographiés.

    Aussi, j'ai remarqué que tu n'avais jamais déclaré la variable SQL dans ta procédure(à moins qu'elle soit globale...), ce qui peut être une autre source d'erreur... déclare-la en string pour être certain.

    Salutations,

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    238
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Avril 2009
    Messages : 238
    Points : 183
    Points
    183
    Par défaut
    oui, il faut que tu mette quand même tout le traitement qui te permet de remplir la variable SQL dans la sub cmbPrenom_AfterUpdate()

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    Je m'en susi rendu compte en même temps quasiment juste le temps de faire la modif' sur le poste vous aviez tout les deux postés !

    Mais après les modif' suivantes :

    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
    Private Sub cmbPRENOM_AfterUpdate()
     
    Dim resultat As String
    Dim SQL As String
    Dim CLIENT As DAO.Database
    Dim enregistrement As DAO.Recordset
     
    SQL = "SELECT * FROM CLIENT WHERE CLIENT.Nom= '" & nomselect & "' AND CLIENT.Prenom = '" & prenomselect & "' ;"
    Set CLIENT = CurrentDb
    Set enregistrement = CLIENT.OpenRecordset(SQL, dbOpenSnapshot)
     
    resultat = enregistrement.Fields("Rue")
    TxtRue.Value = resultat
     
     
     
    End Sub
    L'erreur reste la même ... :s

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mai 2009
    Messages : 111
    Points : 63
    Points
    63
    Par défaut
    Ok j'ai vu j'avais oublié de replacé mes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        nomselect = Me!cmbNOM
        prenomselect = Me!cmbPRENOM
    cela ne risquais pas de marché en effet ...

    Merci pour votre aide en tout cas

    Cordialement

    Tristan.

  20. #20
    Membre actif
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2008
    Messages : 191
    Points : 200
    Points
    200
    Par défaut
    Est-ce que nomselect et prenomselect sont bel et bien des strings tous les deux?

    EDIT: 30 secondes trop tard Tant mieux si tout fonctionne bien. Bonne chance avec la suite!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] Actualisation page après sélection dans liste déroulante
    Par tanaka59 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 15/01/2013, 20h07
  2. [AC-2010] Ouverture d'un formulaire dans un zone texte
    Par Begsweb dans le forum VBA Access
    Réponses: 5
    Dernier message: 14/10/2012, 14h29
  3. [AC-2003] Zone de texte dépendante d'une liste déroulante
    Par lio33 dans le forum IHM
    Réponses: 4
    Dernier message: 12/11/2009, 09h08
  4. Réponses: 3
    Dernier message: 28/03/2008, 16h51
  5. Réponses: 4
    Dernier message: 12/02/2008, 09h54

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