kittybeme
Messages postés6Date d'inscriptiondimanche 29 juin 2008StatutMembreDernière intervention 9 juillet 2008
-
7 juil. 2008 à 10:47
kittybeme
Messages postés6Date d'inscriptiondimanche 29 juin 2008StatutMembreDerniè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
kittybeme
Messages postés6Date d'inscriptiondimanche 29 juin 2008StatutMembreDerniè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
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
kittybeme
Messages postés6Date d'inscriptiondimanche 29 juin 2008StatutMembreDerniè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 ?
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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....
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
kittybeme
Messages postés6Date d'inscriptiondimanche 29 juin 2008StatutMembreDerniè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 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
'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
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
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
' 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 = ""