AFFICHAGE D'UNE LISTBOX

kittybeme Messages postés 6 Date d'inscription dimanche 29 juin 2008 Statut Membre Dernière intervention 9 juillet 2008 - 7 juil. 2008 à 10:47
kittybeme Messages postés 6 Date d'inscription dimanche 29 juin 2008 Statut Membre Dernière intervention 9 juillet 2008 - 9 juil. 2008 à 13:26
Bonjour,
voilà j'ai une listbox qui affiche l'alphabet de A à Z. Mon but est de cliquer sur une lettre et ressortir toutes les personnes commençant par cette lettre.
Ex : si je cliques sur la lettre 'R' toutes les personnes commençant par la lettre 'R' et enregistrées dans la base de donnée doivent ressortir dans la flexgrid.
Je n'arrive pas à faire ma requête sql. A chaque que je cliques sur une des lettres tout s'affiche.
J'ai essayé de faire ceci pour voir si cela marche mais rien :
if i = 65 thensql "select personnes_nom from personnes where personnes_nom 'i' "
end if

Je l'ai mis dans ma listbox_click () est rien ne se produit et dans le form load ainsi que ma liste_listbox mais rien non plus. Comment je dois procéder pour que la listbox puisse m'afficher mon résultat ?
Merci beaucoup de votre aide

7 réponses

gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
7 juil. 2008 à 11:43
sql = "select personnes_nom from personnes where personnes_nom LIKE   'i"
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 juil. 2008 à 13:10
salut,

grrrRRRRRRR !
http://www.vbfrance.com/infomsg_FAIRE-LISTBOX-ALPHABETIQUE_1162286.aspx#4

sql = "SELECT MES_CHAMPS FROM MA_TABLE WHERE CHAMP_NOM_FILM LIKE '" & List1.List(List1.ListIndex) & "%';"

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
kittybeme Messages postés 6 Date d'inscription dimanche 29 juin 2008 Statut Membre Dernière intervention 9 juillet 2008
7 juil. 2008 à 18:40
merci pour votre aide

@ pcpt  : si je demande c'est tout simplement parce-que cela ne s'affiche pas dans ma flexgrid. Je dois le mettre au mauvais endroit. Je suis débutante en programmation donc un peu d'indulgence serait cool.

Cela ne marche toujours pas, cela m'affiche toujours l'intégralité de ma table et non les personnes qui commencent par une lettre que je sélectionne dans la listbox
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 juil. 2008 à 18:52
mon GRRR était dû au fait que tu avais l'exemple la dernière fois, et donc aucune raison du "%" manquant ni du "i=65".

mais c'est vrai que çà peut être mal interprété, désolé

quand tu fais directement ta requête dans access, çà fonctionne?

as-tu bien enlevé ce i=65 pour tester le sql?
pour toi çà représente quoi?
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kittybeme Messages postés 6 Date d'inscription dimanche 29 juin 2008 Statut Membre Dernière intervention 9 juillet 2008
7 juil. 2008 à 21:39
pas de souci


Pour moi, ça commence à s'embrouiller dans ma tête. Je n'ai pas enlevé le i = 65 car je pensais qu'il était nécessaire pour afficher l'alphabet car c'est en ascii non ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
7 juil. 2008 à 22:03
on a 2 choses différentes...
d'un côté, JUSTE le remplissage de la listbox, ce par ce code, donc une seule fois au lancement de la form :

Private Sub Form_Load()
    Dim i As Integer
    For i =  65 To 90
        List1.AddItem Chr$(i)
    Next i
End Sub

et de l'autre, sans rapport donc, lors du click sur un item :

Private Sub List1_Click()
    Debug.Print CStr(Time) & " La requête sera :"
    Debug.Print "==============================="
    Debug.Print "SELECT MES_CHAMPS "
    Debug.Print "FROM MA_TABLE "
    Debug.Print "WHERE CHAMP_NOM_FILM LIKE '" & List1.List(List1.ListIndex) & "%';"
    Debug.Print "===============================" & vbCrLf
        sql = "SELECT MES_CHAMPS FROM MA_TABLE WHERE CHAMP_NOM_FILM LIKE '" & List1.List(List1.ListIndex) & "%';"
End Sub

ici, SQL n'est qu'une variable de type STRING que tu as dû déclarer en haut de ta form ou sans un module

il te faut encore la faire executer par ton recordset

si tu ne vois pas de quoi je parle, alors çà veut dire que tu as attaché ta flexgrid à ta base, avec le nom de ta table et/ou du champ, et que ta variable SQL n'est ni lue ni êut-être même déclarée....

on a alors besoin de plus d'infos!

voici une piste :
http://www.codyx.org/snippet_connexion-base-donnees-access_107.aspx#1907

et de nouveau une question :
quand tu fais directement ta requête dans access, çà fonctionne?
<hr size ="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
kittybeme Messages postés 6 Date d'inscription dimanche 29 juin 2008 Statut Membre Dernière intervention 9 juillet 2008
9 juil. 2008 à 13:26
Bonjour,


désolé de la réponse tardive petit souci d'internet.


Lorsque je fais directement la requête dans Access, cela ne fonctionne pas. Je fais pour la table réalisateurs car c'est cette table que je veux afficher les nom commençant par une lettre alphabetique de la listbox


Select realisateurs_nom from realisateurs where realisateurs_nom like 'a' ;


mais rien. ne s'affiche.


Voici, le code complet si cela peut vous aider :

Option Explicit
Dim DebutLettre As String
Dim ref As Integer




Private Sub init_boutons()
' debut
   ' Cmd_Ajouter.Enabled = False
    Cmd_Modifier.Enabled = False
    Cmd_valider.Enabled = False
    Cmd_Supprimer.Enabled = False
    Cmd_imprimer.Enabled = False
    Cmd_annuler.Enabled = False
End Sub
 
Private Sub init_zones()
' debut
    Lbl_Numero.Caption = ""
    Opt_Sexe(1).Value = False
    Opt_Sexe(2).Value = False
    Txt_Nom.Text = ""
    Txt_Prenom.Text = ""
    Txt_Ddn.Text = ""
    Txt_Mort.Text = ""
    Txt_LieuDdn.Text = ""
    Txt_LieuMort.Text = ""
    Txt_Nationalite.Text = ""
    Lbl_affichage.Caption = ""
End Sub


Private Sub Cmd_annuler_click()
' debut
    init_zones
    Lst_DebutLettre.Text = DebutLettre
    desactiver
    Lbl_affichage.Caption = ""
End Sub


Private Sub Cmd_Fermer_Click()
   Unload Me
End Sub


Public Sub Liste_DebutLettre()
Dim i As Integer
' début
    ' remplir la liste des fonctions
     Lst_DebutLettre.Clear
     For i = 65 To 90
        Lst_DebutLettre.AddItem Chr$(i)
'    sql = "select REALISATEURS_NOM from REALISATEURS where REALISATEURS_NOM LIKE   'i'"
     Next i
End Sub




Private Sub Lst_DebutLettre_click()
'debut
    init_zones
    MSF_REALISATEUR.Enabled = True
    DebutLettre = Lst_DebutLettre
   
    'alimentation de la grille films
    sql = "SELECT REALISATEURS_NOM, REALISATEURS_PRENOM, REALISATEURS_SEXE, REALISATEURS_DDN, REALISATEURS_MORT, REALISATEURS_LIEUDDN, REALISATEURS_LIEUMORT, REALISATEURS_NATIONALITE FROM REALISATEURS"
    sql = sql + "WHERE REALISATEURS_NOM LIKE '" & Lst_DebutLettre.List(Lst_DebutLettre.ListIndex) & "%';"
    grille
End Sub




Private Sub desactiver() 'permet de desactiver les champs textes
' debut
    Txt_Nom.Enabled = False
    Txt_Prenom.Enabled = False
    Txt_Ddn.Enabled = False
    Txt_Mort.Enabled = False
    Txt_LieuDdn.Enabled = False
    Txt_LieuMort.Enabled = False
    Txt_Nationalite.Enabled = False
End Sub


Private Sub activer() 'permet d'activer les champs textes
' debut
    Frame_Realisateurs.Enabled = True
    Txt_Nom.Enabled = True
    Txt_Prenom.Enabled = True
    Txt_Ddn.Enabled = True
    Txt_LieuDdn.Enabled = True
    Txt_LieuMort.Enabled = True
    Txt_Mort.Enabled = True
    Txt_Nationalite.Enabled = True
End Sub


Private Sub Cmd_effacer_Click()
' debut
    Call Liste_DebutLettre
    'fonction
    grille
   
    Lbl_affichage = ""
    init_boutons
    init_zones
    MSF_REALISATEUR.Enabled = True
    entete_grille
End Sub


Private Sub Cmd_Imprimer_Click()
    Frm_Réalisateurs.PrintForm
End Sub


Private Sub cmd_modifier_click()
' debut
    modif = 1
    activer
   
    Cmd_Modifier.Enabled = False
    Cmd_valider.Enabled = True


    Lbl_affichage.Caption = "Modifier puis valider"
End Sub




Private Sub Cmd_Supprimer_Click()
' debut
   MSF_REALISATEUR.Col = 0
   ' il faudrait vérifier la présence du personnel
     confirmer
     If supp Then        sql "DELETE * FROM REALISATEURS where REALISATEURS_NUM " & MSF_REALISATEUR.Text & " "
        cnx.Execute sql
        Lbl_affichage = "Suppression réussie"
         ' maj de la grille personnel
        grille
       
     End If
    ' modifications des contrôles
    init_zones
    init_boutons
    Cmd_ajouter.Enabled = True
End Sub


Private Sub confirmer()
Dim var
' DEBUT
    'demander confirmation de la suppression
    var = MsgBox("Etes-vous sûr de vouloir supprimer ?" & Txt_Nom & Txt_Prenom, vbYesNo + vbExclamation, "Supprimer")
    If var = 6 Then
         supp = True
    Else
        supp = False
    End If


End Sub




Private Sub entete_grille()
' debut
        'entête de la grille personnel
        MSF_REALISATEUR.Clear
        MSF_REALISATEUR.Rows = 2 'nb de lignes
        MSF_REALISATEUR.Cols = 9 'nb de colonnes
        MSF_REALISATEUR.Row = 0
        MSF_REALISATEUR.Col = 0
        MSF_REALISATEUR.Text = "Numéro"
        MSF_REALISATEUR.Col = 1
        MSF_REALISATEUR.Text = "Nom"
        MSF_REALISATEUR.Col = 2
        MSF_REALISATEUR.Text = "Prénom"
        MSF_REALISATEUR.Col = 3
        MSF_REALISATEUR.Text = "Sexe"
        MSF_REALISATEUR.Col = 4
        MSF_REALISATEUR.Text = "Date de naissance"
        MSF_REALISATEUR.Col = 5
        MSF_REALISATEUR.Text = "Lieu de naissance"
        MSF_REALISATEUR.Col = 6
        MSF_REALISATEUR.Text = "Mort"
        MSF_REALISATEUR.Col = 7
        MSF_REALISATEUR.Text = "Lieu du décès"
        MSF_REALISATEUR.Col = 8
        MSF_REALISATEUR.Text = "Nationalité"
        MSF_REALISATEUR.ColWidth(0) = 650
        'colwidth définit la largeur de la colonne spécifiée
        MSF_REALISATEUR.ColWidth(1) = 1000
        MSF_REALISATEUR.ColWidth(2) = 1000
        MSF_REALISATEUR.ColWidth(3) = 500
        MSF_REALISATEUR.ColWidth(4) = 1500
        MSF_REALISATEUR.ColWidth(5) = 1300
        MSF_REALISATEUR.ColWidth(6) = 900
        MSF_REALISATEUR.ColWidth(7) = 1300
        MSF_REALISATEUR.ColWidth(8) = 1300
End Sub




Private Sub Cmd_ajouter_click()
Dim modif As Integer
' DEBUT
    modif = 0 'initialisation
    init_zones
    init_boutons
    activer
   
    ' rechercher le numéro du personnel
    sql = "select max(REALISATEURS_NUM) as Nb From REALISATEURS"
    rst_realisateurs.Open sql, cnx
    If rst_realisateurs.EOF Then
        Lbl_Numero.Caption = 1
    Else
        Lbl_Numero.Caption = (Val(rst_realisateurs.Fields("nb")) + 1)
    End If
    rst_realisateurs.Close
   
    Frame_Realisateurs.Enabled = True
   
    Cmd_valider.Enabled = True
    Cmd_annuler.Enabled = True
   
    Lbl_affichage.Caption = "Saisir toutes les informations puis valider"


End Sub


 


Private Sub Cmd_Valider_Click()
Dim sexe As String
'début
     ' il faut vérifier les différentes informations saisies
     msg = " voulez vous vérifier : "
     verifier
     If verifok Then
            If modif = 0 Then
                ' il s'agit d'une saisie
                    
                    If Opt_Sexe(1).Value = True Then
                        sexe = "F"
                     Else
                        sexe = "M"
                     End If
                    
                     sql = "insert into EMPRUNTEUR  "
                     sql = sql + " values (" & Val(Lbl_Numero.Caption) & ", '" & Txt_Nom.Text & "', '" & Txt_Prenom.Text & "', '" & Txt_Ddn.Text & "', '" & Txt_Mort.Text & "', '" & Txt_LieuDdn.Text & "', '" & Txt_LieuMort.Text & "', '" & Txt_Nationalite.Text & "','" & sexe & " ')"
                 
                    ' execution de la requête d'insertion
                     cnx.Execute sql
                     msg = " Enregistrement effectué "
                     init_zones
                     grille
            Else
                 ' il s'agit d'une modification
                'mise à jour des coordonnées du membre de l'emprunteur
                 sql = "update REALISATEURS  set "                 sql sql + " REALISATEURS_NOM '" & Txt_Nom.Text & "',"                 sql sql + " REALISATEURS_PRENOM '" & Txt_Prenom.Text & "',"
                 sql = sql + " REALISATEURS_DDN='" & Txt_Ddn.Text & "', "
                 sql = sql + " REALISATEURS_LIEUDDN='" & Txt_LieuDdn.Text & "',"
                 sql = sql + " REALISATEURS_MORT='" & Txt_Mort.Text & "',"
                 sql = sql + " REALISATEURS_LIEUMORT='" & Txt_LieuMort.Text & "',"
                 sql = sql + " REALISATEURS_NATIONALITE='" & Txt_Nationalite.Text & "'"                 sql sql + " where REALISATEURS_NUM " & Val(Lbl_Numero.Caption)
                 cnx.Execute sql
                         
                 msg = " Modification effectuée"
                
                  init_zones
                  init_boutons
           
                  grille
            End If
      End If
      Lbl_affichage = msg
End Sub


 


Private Sub verifier()
'début
   
        verifok = True
        ' vérifier le type et la saisie des différentes informations
        If Txt_Nom.Text = "" Or IsNumeric(Txt_Nom) Then
                msg = msg + " le nom ,"
                verifok = False
        End If
        If Txt_Prenom.Text = "" Or IsNumeric(Txt_Nom) Then
                msg = msg + "le prénom,"
                verifok = False
        End If        If Opt_Sexe(1).Value False And Opt_Sexe(2).Value False Then
                msg = msg + "le sexe,"
                verifok = False
        End If
        If Txt_Ddn = "" Then
                msg = msg + " la date de naissance,"
                verifok = False
        End If
        If Txt_LieuDdn = "" Then
                msg = msg + " le lieu de naissance,"
                verifok = False
       End If
       If Txt_Mort = "" Then
                msg = msg + " la date de décès,"
                verifok = False
       End If
     
       If verifok Then
            ' verifier si il y a un doublon dans le cas ou la saisie des données est complète
             If modif = 0 Then                    sql " select COUNT(REALISATEURS_NUM) AS NB FROM REALISATEURS where REALISATEURS_NOM '" & Txt_Nom.Text & "' AND REALISATEURS_PRENOM = '" & Txt_Prenom & "'"
             Else                   sql " select COUNT(REALISATEURS_NUM) AS NB FROM REALISATEURS where REALISATEURS_NOM '" & Txt_Nom.Text & "' AND REALSIATEURS_PRENOM = '" & Txt_Prenom & "'"
                 sql = sql + " and REALISATEURS_NUM <>  " & Lbl_Numero.Caption
            
             End If
             ' exécuter la requête qui vérifie le doublon
                rst_realisateurs.Open sql, cnx
                If rst_realisateurs.Fields("nb") > 0 Then
                       msg = Txt_Nom.Text & " " & Txt_Prenom & "  existe déjà !"
                       verifok = False
                End If
                rst_realisateurs.Close
        End If


End Sub


 




Private Sub recupdetail()
' debut
        MSF_REALISATEUR.Col = 0
        sql = "select  * FROM REALISATEURS "        sql sql + " where REALISATEURS_NUM " & Val(MSF_REALISATEUR.Text)
        rst_realisateurs.Open sql, cnx
        If Not rst_realisateurs.EOF Then
             Lbl_Numero.Caption = rst_realisateurs.Fields("REALISATEURS_NUM")
             Txt_Nom.Text = rst_realisateurs.Fields("REALISATEURS_NOM")
             Txt_Prenom.Text = rst_realisateurs.Fields("REALISATEURS_PRENOM")
            
             If rst_realisateurs.Fields("REALISATEURS_SEXE") = "F" Then
                Opt_Sexe(1).Value = True
             Else
                Opt_Sexe(2).Value = True
             End If
            
             If IsNull(rst_realisateurs.Fields("REALISATEURS_DDN")) Then
                Txt_Ddn.Text = ""
             Else
                Txt_Ddn.Text = rst_realisateurs.Fields("REALISATEURS_DDN")
             End If
            
             If IsNull(rst_realisateurs.Fields("REALISATEURS_LIEUDDN")) Then
                Txt_LieuDdn.Text = ""
             Else
                Txt_LieuDdn.Text = rst_realisateurs.Fields("REALISATEURS_LIEUDDN")
             End If
            
             If IsNull(rst_realisateurs.Fields("REALISATEURS_MORT")) Then
                Txt_Mort.Text = ""
             Else
                Txt_Mort.Text = rst_realisateurs.Fields("REALISATEURS_MORT")
             End If
                    
             If IsNull(rst_realisateurs.Fields("REALISATEURS_LIEUMORT")) Then
                Txt_LieuMort.Text = ""
             Else
                Txt_LieuMort.Text = rst_realisateurs.Fields("REALISATEURS_LIEUMORT")
             End If
            
             If IsNull(rst_realisateurs.Fields("REALISATEURS_NATIONALITE")) Then
                Txt_Nationalite.Text = ""
             Else
                Txt_Nationalite.Text = rst_realisateurs.Fields("REALISATEURS_NATIONALITE")
             End If
                             
        End If
        rst_realisateurs.Close
End Sub


 


Private Sub grille()
' debut
     ' corps de la grille personnel
     MSF_REALISATEUR.Clear
     entete_grille
     If Lst_DebutLettre = "Toutes" Then
                sql = "select REALISATEURS_NUM, REALISATEURS_SEXE, REALISATEURS_NOM, REALISATEURS_PRENOM, REALISATEURS_DDN, REALISATEURS_LIEUDDN, REALISATEURS_MORT, REALISATEURS_LIEUMORT, REALISATEURS_NATIONALITE FROM REALISATEURS "
     Else
                sql = "select REALISATEURS_NUM, REALISATEURS_SEXE, REALISATEURS_NOM, REALISATEURS_PRENOM, REALISATEURS_DDN, REALISATEURS_LIEUDDN, REALISATEURS_MORT, REALISATEURS_LIEUMORT, REALISATEURS_NATIONALITE "
                sql = sql + " FROM REALISATEURS"
     End If
     rst_realisateurs.Open sql, cnx
       
     ligne = 0 'nbre de lignes
     If Not rst_realisateurs.EOF Then
            Do
                ligne = ligne + 1
                rst_realisateurs.MoveNext
            Loop Until rst_realisateurs.EOF
            MSF_REALISATEUR.Rows = ligne + 1


            rst_realisateurs.MoveFirst
            For i = 1 To (ligne)
          
                    MSF_REALISATEUR.Row = i
                    MSF_REALISATEUR.Col = 0
                    MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_NUM")
                    MSF_REALISATEUR.Col = 1
                    MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_NOM")
                    MSF_REALISATEUR.Col = 2
                    If IsNull(rst_realisateurs.Fields("REALISATEURS_PRENOM")) Then
                          MSF_REALISATEUR.Text = " "
                    Else
                          MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_PRENOM")
                    End If
                    MSF_REALISATEUR.Col = 3
                    If IsNull(rst_realisateurs.Fields("REALISATEURS_SEXE")) Then
                          MSF_REALISATEUR.Text = ""
                    Else
                          MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_SEXE")
                    End If
                    MSF_REALISATEUR.Col = 4
                    If IsNull(rst_realisateurs.Fields("REALISATEURS_DDN")) Then
                          MSF_REALISATEUR.Text = ""
                    Else
                           MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_DDN")
                    End If


                    MSF_REALISATEUR.Col = 5
                    If IsNull(rst_realisateurs.Fields("REALISATEURS_LIEUDDN")) Then
                           MSF_REALISATEUR.Text = ""
                    Else
                           MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_LIEUDDN")
                    End If


                    MSF_REALISATEUR.Col = 6
                    If IsNull(rst_realisateurs.Fields("REALISATEURS_MORT")) Then
                           MSF_REALISATEUR.Text = ""
                    Else
                           MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_MORT")
                    End If


                    MSF_REALISATEUR.Col = 7
                    If IsNull(rst_realisateurs.Fields("REALISATEURS_LIEUMORT")) Then
                            MSF_REALISATEUR.Text = ""
                    Else
                            MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_LIEUMORT")
                    End If


                    MSF_REALISATEUR.Col = 8
                    If IsNull(rst_realisateurs.Fields("REALISATEURS_NATIONALITE")) Then
                            MSF_REALISATEUR.Text = ""
                    Else
                            MSF_REALISATEUR.Text = rst_realisateurs.Fields("REALISATEURS_NATIONALITE")
                    End If
                       
                   rst_realisateurs.MoveNext
        Next i


     Else
        Lbl_affichage = " aucun emprunteur"
     End If
     rst_realisateurs.Close


End Sub




Private Sub Form_Load()
' debut
    Connec
     'Remplir de la liste personnel
     Call Liste_DebutLettre
     ' afficher entete grille
      entete_grille
    MSF_REALISATEUR.Enabled = False
End Sub


Private Sub MSF_REALISATEUR_click()
' DEBUT
   recupdetail
           
    If Not MSF_REALISATEUR.Text = "" Then
        ref = MSF_REALISATEUR.Text
        Lbl_affichage = ""
      
        init_boutons
        Cmd_Modifier.Enabled = True
        Cmd_Supprimer.Enabled = True
        Cmd_annuler.Enabled = True
       
        Frame_Realisateurs.Enabled = False
    End If
End Sub

Merci encore.
0
Rejoignez-nous