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 :

Incrémenter une liste à partir d'un champ


Sujet :

IHM

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 97
    Points : 38
    Points
    38
    Par défaut Incrémenter une liste à partir d'un champ
    Bonjour,

    Voilà mon problème est certainement simple mais je ne trouve pas la solution...

    J'ai un formulaire de recherche dans lequel :
    - dans un premier temps, il faut sélectionner la table sur laquelle je veux faire la sélection à partir d'une liste déroulante
    - puis, une 2nd liste déroulante me permet de sélectionner le champs de la table sur lequel je veux faire la sélection
    - et enfin, je souhaiterais mettre en place une dernière liste déroulante qui serait incrémentée des valeurs du champs sélectionné précédemment, pour que l'utilisateur ne puisse faire une recherche que sur les valeurs contenu dans la table.

    Quelqu'un aurait une petite idée ???

    Merci de vos réponses et bonne journée

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Pour parcourir tes tables et les champs je te conseille de lire ce tuto sur DAO.

    Tu auras tous les élements, et ensuite revient nous voir si tu as des soucis.

    Bonne lecture

    Starec

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Supposons les noms suivants pour tes listes :

    1. Liste des tables => lst_MesTables
    2. Liste des champs => lst_MesChamps
    3. Liste des valeurs => lst_MesValeurs

    Après sélection du champs tu crée la requête source pour la lst_MesValeurs.
    sur l'événement lst_MesChamps_AfterUpdate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim Msql as String
    msql="Select "& me.lst_MesChamps & " From "& lst_MesTables
    me.lst_MesValeurs.RowSource=msql
    me.lst_MesValeursµ.requery
    Tu peux fixer le nombre de colonne à 1 et la largeur

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 97
    Points : 38
    Points
    38
    Par défaut Re
    Merci de vos réponses...

    Hélas ça ne fonctionne toujours pas...

    Ma liste de valeurs ne s'incrémente pas des valeurs du champs sélectionné !

    Quelqu'un d'autre aurait une idée à me soumettre ???

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Citation Envoyé par taisherg
    ...Ma liste de valeurs ne s'incrémente pas des valeurs du champs sélectionné...
    Il n'ya aucune raison. A moins que tu ai fais du copier/coller tout simple.

    Montres ce que tu as.

  6. #6
    Membre habitué Avatar de ancel17
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mars 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mars 2007
    Messages : 312
    Points : 178
    Points
    178
    Par défaut
    as-tu vérifié que le nom de tes listes correspondent aux nom des listes que tu appelles dans le code ?
    lorsque tu insère une zone de liste modifiable, son nom par défaut est ModifiableXX, et non lst_mesvaleurs...

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 97
    Points : 38
    Points
    38
    Par défaut Merci
    Bonjour,

    je pense avoir correctement reformuler mes noms de listes...

    Pour se qui est du copier/coller : ma base contient 8 tables différentes, mais ma recherche porte sur une seul d'entres elles.

    Mon formulaire se compose ;
    - d'une liste pour sélectionner la table = cbo_table
    - d'une liste pour sélectionner le champs = cbo_champ
    - d'une liste pour sélectionner une valeur appartenant au champ = cbo_valeur

    Voici le bout de programme associé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub cbo_valeur_AfterUpdate()
     
    Dim strtable As String, strField As String, strcriteria As String, strsql As String
     
    strtable = Me.cbo_table
    strField = Me.cbo_champ
     
    strsql = "SELECT " & strtable & "." & strField
    strsql = strsql + " FROM ((" & strtable & "));"
     
    Me.cbo_valeur.RowSource = strsql
    Me.cbo_valeur.Requery
     
    End Sub
    Voilà peut-etre il y a une erreur dedans ???

    Je vous laisse juge.

    Bonne journée.

  8. #8
    Membre habitué Avatar de ancel17
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mars 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mars 2007
    Messages : 312
    Points : 178
    Points
    178
    Par défaut
    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub cbo_valeur_AfterUpdate()
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub cbo_champ_AfterUpdate()

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 97
    Points : 38
    Points
    38
    Par défaut Toujours pas...
    Merci de vos réponses, c'est cool on se sent soutenu...

    Problème c'est toujours pas ça...
    Je vous donne l'ensemble du code concernant ces 3 listes, peut-être cela pourra aider

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    Private Sub cbo_champ_AfterUpdate()
     
    Dim strtable As String, strField As String, strcriteria As String, strsql As String
     
    strtable = Me.cbo_table
    strField = Me.cbo_champ
     
    strsql = "SELECT " & strtable & "." & strField
    strsql = strsql + " FROM ((" & strtable & "));"
     
    Me.cbo_valeur.RowSource = strsql
    Me.cbo_valeur.Requery
     
    End Sub
     
    Private Sub cbo_champ_AfterUpdate()
    If IsNull(Me.cbo_table) Or IsNull(Me.cbo_champ) Then
        Exit Sub       ' l'un des champs est vide
    End If
     
    ' initialise les étiquettes de l'opérateur
    Me.lbl_Etiq1.Visible = True
    Me.lbl_Etiq2.Visible = True
    Me.lbl_Etiq3.Visible = True
    Me.lbl_Etiq4.Visible = True
    Me.lbl_Etiq5.Visible = True
    Me.opt_Ope1.Visible = True
    Me.opt_Ope2.Visible = True
    Me.opt_Ope3.Visible = True
    Me.opt_Ope4.Visible = True
    Me.opt_Ope5.Visible = True
    Me.cbo_valeur.Visible = True
     
    Select Case lf_GetTypeField(Me.cbo_table, Me.cbo_champ)  ' pour trouver le type du champs
        Case Is = dbBoolean     ' Booléen
            Me.lbl_TypeChamp.Caption = "Oui/Non"
            Me.lbl_Etiq1.Caption = "Oui"
            Me.lbl_Etiq2.Caption = "Non"
            Me.lbl_Etiq3.Visible = False    ' cache car inusité dans ce cas
            Me.lbl_Etiq4.Visible = False    ' idem
            Me.lbl_Etiq5.Visible = False    ' idem
            Me.opt_Ope3.Visible = False
            Me.opt_Ope4.Visible = False
            Me.opt_Ope5.Visible = False
            Me.cbo_valeur.Visible = False  ' pas de critere
        Case dbByte To dbBinary, dbLongBinary, dbGUID To dbVarBinary, dbNumeric To dbTimeStamp     ' Numériques / date
            Me.lbl_TypeChamp.Caption = "Numérique"
            Me.lbl_Etiq1.Caption = "Etre égale ="
            Me.lbl_Etiq2.Caption = "Etre supérieure >="
            Me.lbl_Etiq3.Caption = "Etre inférieure <="
            Me.lbl_Etiq4.Caption = "Etre différente <>"
            Me.lbl_Etiq5.Visible = False
            Me.opt_Ope5.Visible = False
        Case dbText, dbMemo, dbChar ' texte / mémo
            Me.lbl_TypeChamp.Caption = "Texte"
            Me.lbl_Etiq1.Caption = "Etre strictement identique"
            Me.lbl_Etiq2.Caption = "Commencer par la valeur"
            Me.lbl_Etiq3.Caption = "Contenir la valeur"
            Me.lbl_Etiq4.Caption = "Finir par la valeur"
            Me.lbl_Etiq5.Caption = "Pas contenir la valeur"
        Case Else
            Me.lbl_TypeChamp.Caption = "Cas non prévu " & lf_GetTypeField(Me.cbo_table, Me.cbo_champ)
        End Select
    End Sub
     
    Private Sub cbo_table_AfterUpdate()
    Me.cbo_champ.RowSource = Me.cbo_table.Value
    Me.cbo_champ.Requery
    End Sub
    Qu'est ce qui marche pas ???

    Merci

  10. #10
    Membre habitué Avatar de ancel17
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mars 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mars 2007
    Messages : 312
    Points : 178
    Points
    178
    Par défaut
    Essaies ça

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    Private Sub cbo_champ_AfterUpdate()
     
    Dim strtable As String, strField As String, strcriteria As String, strsql As String
     
    If IsNull(Me.cbo_table) Or IsNull(Me.cbo_champ) Then
        Exit Sub       ' l'un des champs est vide
    End If
     
    ' initialise les étiquettes de l'opérateur
    Me.lbl_Etiq1.Visible = True
    Me.lbl_Etiq2.Visible = True
    Me.lbl_Etiq3.Visible = True
    Me.lbl_Etiq4.Visible = True
    Me.lbl_Etiq5.Visible = True
    Me.opt_Ope1.Visible = True
    Me.opt_Ope2.Visible = True
    Me.opt_Ope3.Visible = True
    Me.opt_Ope4.Visible = True
    Me.opt_Ope5.Visible = True
    Me.cbo_valeur.Visible = True
     
    Select Case lf_GetTypeField(Me.cbo_table, Me.cbo_champ)  ' pour trouver le type du champs
        Case Is = dbBoolean     ' Booléen
            Me.lbl_TypeChamp.Caption = "Oui/Non"
            Me.lbl_Etiq1.Caption = "Oui"
            Me.lbl_Etiq2.Caption = "Non"
            Me.lbl_Etiq3.Visible = False    ' cache car inusité dans ce cas
            Me.lbl_Etiq4.Visible = False    ' idem
            Me.lbl_Etiq5.Visible = False    ' idem
            Me.opt_Ope3.Visible = False
            Me.opt_Ope4.Visible = False
            Me.opt_Ope5.Visible = False
            Me.cbo_valeur.Visible = False  ' pas de critere
        Case dbByte To dbBinary, dbLongBinary, dbGUID To dbVarBinary, dbNumeric To dbTimeStamp     ' Numériques / date
            Me.lbl_TypeChamp.Caption = "Numérique"
            Me.lbl_Etiq1.Caption = "Etre égale ="
            Me.lbl_Etiq2.Caption = "Etre supérieure >="
            Me.lbl_Etiq3.Caption = "Etre inférieure <="
            Me.lbl_Etiq4.Caption = "Etre différente <>"
            Me.lbl_Etiq5.Visible = False
            Me.opt_Ope5.Visible = False
        Case dbText, dbMemo, dbChar ' texte / mémo
            Me.lbl_TypeChamp.Caption = "Texte"
            Me.lbl_Etiq1.Caption = "Etre strictement identique"
            Me.lbl_Etiq2.Caption = "Commencer par la valeur"
            Me.lbl_Etiq3.Caption = "Contenir la valeur"
            Me.lbl_Etiq4.Caption = "Finir par la valeur"
            Me.lbl_Etiq5.Caption = "Pas contenir la valeur"
        Case Else
            Me.lbl_TypeChamp.Caption = "Cas non prévu " & lf_GetTypeField(Me.cbo_table, Me.cbo_champ)
        End Select
     
    strtable = Me.cbo_table
    strField = Me.cbo_champ
     
    strsql = "SELECT " & strtable & "." & strField
    strsql = strsql + " FROM " & strtable & ";"
     
    Me.cbo_valeur.RowSource = strsql
    Me.cbo_valeur.Requery
     
    End Sub

  11. #11
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 97
    Points : 38
    Points
    38
    Par défaut Bon, vous êtes vraiment les plus fort...
    RE et pour la dernière fois pour ce post...

    J'ai trouvé mon erreur : j'avais créer une procédure pour la liste valeur alors que je devais ajouter le code que vous m'aviez fournis à la procédure évenementielle de ma liste champs et donc maintenant ça fonctionne...

    TROP CONTENTE

    ENCORE MERCI

  12. #12
    Membre habitué Avatar de ancel17
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mars 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mars 2007
    Messages : 312
    Points : 178
    Points
    178
    Par défaut
    si tu veux etre sure que ça fonctionne correctement, je te conseille de rajouter DISTINCT dans ta requete SQL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strsql = "SELECT DISTINCT " & strtable & "." & strField
    strsql = strsql + " FROM " & strtable & ";"

  13. #13
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 97
    Points : 38
    Points
    38
    Par défaut Merci
    MERCI

    J'étais juste en train de me poser la question !!!



    ENCORE MERCI

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

Discussions similaires

  1. faire une selection à partir d'un champ d'une liste
    Par IPT-florence-d dans le forum Excel
    Réponses: 2
    Dernier message: 17/01/2009, 07h56
  2. [MySQL] remplir une liste à partir d'un champs texte
    Par myinformatique dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 27/07/2007, 17h10
  3. Réponses: 4
    Dernier message: 25/05/2007, 15h25
  4. [forms 10g] créer une LOV à partir de 2 champs liste
    Par lolafrite dans le forum Forms
    Réponses: 2
    Dernier message: 09/02/2007, 11h22

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