Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/01/2011, 19h36   #1
Invité de passage
 
Inscription : mai 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 13
Points : 0
Points : 0
Par défaut Affichage dans une listbox

Bonsoir et bonne année à tous;
Je réalise une base de données sous ACCESS et j'ai un soucis pour afficher le résultat d'une recherche dans une listBox.
Ci-dessous le code que j'ai essayé d'utiliser mais il ne fonctionne pas.

Code :
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
70
71
72
73
74
75
76
77
78
79
80
81
82
Private Sub Rechercher_Click()
 
'MsgBox "NumTrouvé", vbInformation
 
Dim MaBd As DAO.Database
Dim MaTable As DAO.Recordset
Dim MonControle As Control
Dim f As Form
Dim Id As Long
Dim nomtest As String
Dim req As DAO.Recordset
Dim a As Long
Dim mySQL As String
 
 
 
 
 
 'MsgBox "NumTrouvé", vbInformation
 
 
 
Set MaBd = CurrentDb()
Set f = Forms!FormEnregistrement
Set MaTable = MaBd.OpenRecordset("BilletElectronique", dbOpenDynaset)
 
MsgBox "Problem Before Cancelled", vbInformation, "Retry to Cancel please!! "
 
'Me.NumBillet .SetFocus
 
MaTable.MoveFirst
Id = Me.NumBillet
 
Do Until MaTable.EOF
 
'MsgBox "NumTrouvé", vbInformation
 
If (Id = MaTable!NumBillet) Then
 
[COLOR="rgb(46, 139, 87)"]'Set req = CurentDb.OpenRecordset("SELECT * FROM BilletElectronique WHERE NumBillet = '" & Me.NumBillet & "'; ")
 
'Set rs = db.OpenRecordset("select * from Produit where Pdt_Ref='" & Me.ldr_Produit & "' ;")
 
'mySQL = "SELECT NomPassager FROM BilletElectronique WHERE NumBillet = 'Id' "
 
'DoCmd.SetWarnings False
 
'DoCmd.RunSQL (mySQL)
 
'DoCmd.SetWarnings True
 
'Set req = CurrentDb.OpenRecordset(mySQL)
 
'req.MoveFirst[/COLOR]
 
 
     'MsgBox "NumTrouvé", vbInformation
     nomtest = MaTable!NomPassager
     'Me.ListePassager.Column(0) = req.Fields(0).Value
     'Me.ListePassager.Column(0) = nomtest
     'a = req.Fields(0).Value
     MsgBox "a", vbInformation
 
'req.CLOSE
 
 
    Exit Sub
End If
 
MaTable.MoveNext
Loop
 
 
 
 
MaTable.CLOSE
MaBd.CLOSE
Set MaTable = Nothing
Set MaBd = Nothing
 
 
End Sub
Mon problème se situe dans l'instruction "IF" ; je ne sais pas quel code utiliser pour aller dans la table "BilletElectronique" récupérer les infos dont j'ai besoin et les afficher dans ma listBox

Si quelqu'un peut m'aider à voir où se trouve le prblème ;

Merci d'avance.
kinglord est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2011, 08h56   #2
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Bonjour et bonne année à toi aussi,

Pour chercher des infos dans une table, Une (bonne) méthode : les fonctions de domaine.
Tu trouves tout ici :
http://starec.developpez.com/tuto/fonctionsdomaines/
__________________
Amoureuse/amoureux de la langue française ? Vous pouvez nous aider à corriger nos ressources !
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 00h12   #3
Invité de passage
 
Inscription : mai 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 13
Points : 0
Points : 0
Par défaut je trouve pas mon erreur

Bonjour et merci pour le lien

Je n'arrive toujours pas à trouver où se trouve mon erreur.
elle se situe en effet dans mon instruction contenant ma requete SQL car à l'exécution j'ai un message d'erreur qui me dit qu'il y a soit trop peu de paramètre soit un paramètre en trop et finalement je ne comprends plus.

Merci
kinglord est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 06h32   #4
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 605
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 605
Points : 30 956
Points : 30 956
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Citation:
Envoyé par kinglord Voir le message
elle se situe en effet dans mon instruction contenant ma requete SQL car à l'exécution j'ai un message d'erreur qui me dit qu'il y a soit trop peu de paramètre soit un paramètre en trop et finalement je ne comprends plus.
Si tu donnais la requête ce serait plus facile, non ?

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 01h17   #5
Invité de passage
 
Inscription : mai 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 13
Points : 0
Points : 0
voici la requete
Code :
Set req = CurrentDb.OpenRecordset("SELECT NomPassager FROM BilletElectronique WHERE NumBillet= Me.NumBillet")
Je voudrais en effet récupérer les infos du passager et les afficher dans une listbox mais déjà cette instruction ( ci-dessus) pour récupérer le nom du passager ne fonctionne pas et je ne comprends pas pourquoi.

Merci
kinglord est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 04h15   #6
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Bonjour,

comme ceci :


Code :
"SELECT NomPassager FROM BilletElectronique WHERE NumBillet=" & Me.NumBillet)
__________________
Amoureuse/amoureux de la langue française ? Vous pouvez nous aider à corriger nos ressources !
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/01/2011, 01h12   #7
Invité de passage
 
Inscription : mai 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 13
Points : 0
Points : 0
Merci ça marche.

J'aimerai bien maintenant pouvoir afficher cette donnée récupérée à partir de mon Recordset dans une listBox mais je ne comprends pas comment fonctionne un affichage dans une listBox.
En fait j'aimerai récupérer à partir de ma table les nom, prénom et destination de voyage d'un passager et les afficher dans une listBox et pour le moment j'essai d'abord de comprendre le fonctionnement de la listBox juste pour le nom du passager.
Voici les syntaxes que je teste mais elles ne fonctionnent pas
Code :
1
2
Me.ListePassager.Column(0) = req.Fields(0).Value
Set Me.ListePassager.Column(0) = req.GetRows(0)
"ListePassager" est le nom de ma listbox dans laquelle je voudrais afficher le résultat de ma recherche.

Merci encore pour votre précieuse aide
kinglord est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 05h07   #8
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Bonjour,

Citation:
mais je ne comprends pas comment fonctionne un affichage dans une listBox.
vois ceci :

http://access.developpez.com/sources...terListeValeur

et une utilisation ici :

http://www.developpez.net/forums/d97...s/#post5465217
__________________
Amoureuse/amoureux de la langue française ? Vous pouvez nous aider à corriger nos ressources !
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2011, 02h46   #9
Invité de passage
 
Inscription : mai 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 13
Points : 0
Points : 0
J'ai un soucis avec le RowSource

En écrivant l'instruction
Code :
lstDestination.RowSource = lstDestination.RowSource & .Column(0, i) & ";"
et en y remplaçant "lstDestination" par "ListePassager" qui est le nom de ma listbox j'ai un message d'erreur. Alors en tatonant un peu j'ai écris ces deux instructions
Code :
1
2
3
Me.ListePassager = req.Fields(0).Value
 
Me.ListePassager.RowSourceType = (req.Fields(0).Value)
Je n'ai pas de message d'erreur mais rien ne s'affiche dans ma listbox donc je ne sais pas où se trouve l'erreur dans ces instructions.

Merci
kinglord est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2011, 04h38   #10
Membre Expert
 
Homme Pierre ANTOINE
Inscription : février 2008
Messages : 650
Détails du profil
Informations personnelles :
Nom : Homme Pierre ANTOINE
Âge : 43
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : février 2008
Messages : 650
Points : 1 302
Points : 1 302
Bonjour

Sauf erreur de ma part, je crois que vous êtes sur une mauvaise voie.

Il faut distinguer le contenu de la liste et ce qui est affiché.

Le contenu d'une liste doit être une table, une requête ou une chaîne SQL.

Ne semble pas être l'un de ces cas.

Quand à ce qui est affiché et visible, cela se gère dans les propriété de la liste "Nombre de colonnes" et "Largeur de colonne".


Première chose : définir le contenu. En l'occurence pour vous, si j'ai bien compris il s'agit de cette chaîne sql :

Code :
1
2
3
4
5
6

dim sql as string
sql ="SELECT NomPassager FROM BilletElectronique WHERE NumBillet=" & Me.NumBillet)& ";"

Me.ListePassager.RowSource = sql
Ensuite à vous de gérer l'affichage effectif en jouant sur les deux propriétés vu précédemment. ATTENTION !! pour voir des colonnes qui se situent très à droite, il faut mettre à "0" la largeur des précédentes.

Bon week end

Pierre
pier.antoine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 17h36   #11
Invité de passage
 
Inscription : mai 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 13
Points : 0
Points : 0
Merci pour l'explication. Et j'ai pu afficher dans la listbox toutes les valeurs que je voulais.
Mais j'ai maintenant un autre soucis, c'est celui de faire plusieurs enrégistrements dans la même table par un seul formulaire.
En fait, je dois enrégistrer les bagages d'un passager à travers un formulaire. Et comme un passager peut avoir plusieurs bagages, mon formulaire doit me permettre de tous les enregistrer (pour autant que pour chaque bagage on ait entré le poids de ce dernier).

Pour chaque bagage, j'ai testé la valeur du poids si elle est différente de "null" si oui,
Code :
1
2
3
4
SaTable.AddNew
MaTable!Poids = Me.PoidsBagage1
MaTable!NumBillet = Me.NumBillet
MaTable.Update
et je le fait pour tous les champs de mon formulaire correspondant au poids d'un bagage mais malheureusement cette méthode ne marche pas et je n'ai pas de message d'erreur.

Merci encore pour votre aide
kinglord est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 09h48   #12
Membre Expert
 
Homme Pierre ANTOINE
Inscription : février 2008
Messages : 650
Détails du profil
Informations personnelles :
Nom : Homme Pierre ANTOINE
Âge : 43
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : février 2008
Messages : 650
Points : 1 302
Points : 1 302
Bonjour

Dans un premier temps, votre problème doit se résoudre en utilisant les sous formulaire.

Dans votre formulaire "Passager", vous mettez un sous formulaire "Bagages", de telle sorte que lorsqu'un passager est sélectionné, ne s'affiche que ses bagages dans le sous formulaires bagages.

Pour cela, il faut que la conception de la base soit correcte, et qu'il existe bien une table "Bagage" ayant un champ de référence du passager.

Bonne journée.

Pierre
pier.antoine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2011, 17h31   #13
Invité de passage
 
Inscription : mai 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 13
Points : 0
Points : 0
Je n'arrive pas à utiliser le sous formulaire dans mon cas.
En fait je ne cherche pas à afficher les bagages d'un passager mais plutôt à les enregistrer.
Evidemment dans ma base de données il y a un lien entre les tables passager et Bagage (elles sont liées par la clé "NumBillet").
Dans le cas du formulaire sur lequel je travaille (Formulaire Recherche), je recherche dans un premier temps (en entrant le numéro de billet) si le passager est bien dans la table Passager. Si oui, j'affiche ses données dans ma ListBox ( en cliquant sur le bouton "Rechercher" ).
Jusqu'ici tout se passe bien.

Ensuite, une fois le passager trouvé et ses données affichées, je dois enregistrer ses bagages dans la table Bagage et mes problèmes sont les suivants :
- Le passager peut faire enregistrer au max 3 bagages. Donc j'aimerai pouvoir entrer le poids de chaque bagage et les enregistrer en cliquant sur le bouton "Enregistrer" de mon formulaire mais je butte à ce niveau et je ne sais pas trop comment résoudre le problème d'un enregistrement multiple ( les 3 bagages doivent avoir un ID différent dans la table Bagage mais doivent être liés au même Passager.
-J'aimerai également pouvoir utiliser le numéro de billet que j'ai entré pour effectuer la recherche d'un passager. Mais lorsque j'écris le code lié au bouton "Enregistrer" lié aux bagages et que j'utilise la valeur "Me.NumBillet" rien ne se passe. Je dois pourtant affecter ce numero de billet à chaque bagage pour garder la liaison entre les tables passager et bagage et pouvoir par la suite retrouver tous les bagages de chaque passager.

Merci d'avance
kinglord est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 00h49   #14
Invité de passage
 
Inscription : mai 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 13
Points : 0
Points : 0
Bonjour;

Je voudrais effectuer une recherche de tous les passagers d'un vol et afficher leurs noms et prenoms dans une listbox.

Code :
1
2
3
4
dim sql as string
sql ="SELECT NomPassager, PrenomPassager FROM BilletElectronique WHERE Destination=" & Me.Destination)& ";"
 
Me.ListePassager.RowSource = sql
Ce code me permet d'afficher les données d'un seul passager et j'aimerai ici afficher tous ceux qui correspondrons au résultat de la recherche.

Merci d'avance
kinglord est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 09h26   #15
Membre Expert
 
Homme Pierre ANTOINE
Inscription : février 2008
Messages : 650
Détails du profil
Informations personnelles :
Nom : Homme Pierre ANTOINE
Âge : 43
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : février 2008
Messages : 650
Points : 1 302
Points : 1 302
Bonjour

Je suis un peu perdu.

Ne pourriez vous pas mettre à disposition votre base (épurée des données confidentielles !).

Merci d'avance
Pierre
pier.antoine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 14h06   #16
Invité de passage
 
Inscription : mai 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 13
Points : 0
Points : 0
Bonjour;

Je joins ici ma base de données. Les données contenues dans les tables sont des données juste pour tester le bon fonctionnement ( donc rien de confidentiel).
Mes soucis se situent au niveau des formulaires "Enregistrement" et "Recherche"
- Dans le formulaire "Enregistrement" le soucis est celui de pouvoir enregistrer les bagages du passager
- dans les formulaires "Recherche" le soucis est celui de pouvoir afficher tous les éléments correspondants au critère de recherche. Il suffit donc que cela fonctionne pour un formulaire et je le transposerai pour les autres formulaires de recherche.

Merci encore pour votre précieuse aide.
Fichiers attachés
Type de fichier : rar Projet_BD (2).rar (125,1 Ko, 11 affichages)
kinglord est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2011, 17h58   #17
Invité de passage
 
Inscription : mai 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 13
Points : 0
Points : 0
Bonjour

Je n'arrive toujours pas à avancer de mon coté et je voudrais juste savoir si quelqu'un n'aurait pas trouvé une solution à mes soucis.

Merci
kinglord est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 20h01   #18
Invité de passage
 
Inscription : mai 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 13
Points : 0
Points : 0
Bonjour

je mets a disposition une version 2003 de ma base de donnees.

Bien a vous
Fichiers attachés
Type de fichier : rar Projet_BD.rar (45,7 Ko, 4 affichages)
kinglord est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 02h57   #19
Membre Expert
 
Homme Pierre ANTOINE
Inscription : février 2008
Messages : 650
Détails du profil
Informations personnelles :
Nom : Homme Pierre ANTOINE
Âge : 43
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : février 2008
Messages : 650
Points : 1 302
Points : 1 302
Bonjour

Je viens de jeter un coup d'oeil à votre base.

Plusieurs choses.

D'une part, dans un souci de debuggage, de correction, d'optimisation, bref d'apprentissage, ne mettez les caractéristiques "d'interface" de vos formulaires, état, contrôles qu'au dernier moment, quand tout marche.

Par exemple, votre formulaire "RecherchePassager" est en Fenetre Modale.
OK, pour utiliser la base, cela devra être comme cela; mais en attendant, ça ne vous permet pas de regarder les caractéristiques de votre formulaire, de vos contrôles dans un debuggage pas à pas.

Deuxième chose.
Vous vous compliquez énormément la vie : pas besoin de lire la table et tester chaque valeur. Il suffit de créer une requête basée sur la table "BilletElectronique", avec une condition "WHERE" comme vous l'avez presque bien écrit.

En effet, dans les conditions d'une requêtes, il y a quelques petits trucs à savoir. EN l'occurence, quand le champ à tester est un champ "Chaîne" (string), l'opérateur n'est pas "égal" (=) mais "like" (comme). De plus la valeur du critère doit être entourée de guillemets.
Parfois, ces guillemets qui apparaissent dans la chaine sql sont entourés de 2 autres guillemets. Personnellement, je n'y arrive pas, alors j'ai résolu le truc en utilisant le code ascii des guillemets (chr(34))

Voici le code de votre bouton "Rechercher passager" simplifié.

Code :
1
2
3
4
5
6
7
8
Private Sub Rechercher_Click()
 
Dim sql As String
 
sql = "SELECT NomPassager, PrenomPassager FROM BilletElectronique WHERE Destination like " & Chr(34) & Me.Destination & Chr(34)
 
Me.ListePassager.RowSource = sql
End Sub
pas besoin de déclarer la listebox, elle l'est déjà dans le formulaire.

Dans un premier temps,rien ne s'affichait dans cette listebox.
En fait, vous l'aviez mal configurée.
Dans les propriétés de votre list box, onglet "Données", 2nd ligne "Origine", choisir "Table/Requête".

Et voilà.

A vous de continuer.

Pierre
pier.antoine est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h33.


 
 
 
 
Partenaires

Hébergement Web