Recherche dans une base de donnees

Résolu
netruner666 Messages postés 9 Date d'inscription lundi 12 juillet 2004 Statut Membre Dernière intervention 1 décembre 2005 - 24 mai 2005 à 20:23
caese Messages postés 9 Date d'inscription samedi 5 juin 2004 Statut Membre Dernière intervention 5 juin 2005 - 28 mai 2005 à 15:53
netruner666

voila, je suis en train de me creer un petit programme pour m'entrainer mais je pense avoir mis la barre un peu trop haut. en effet, j'ai une base client et une base facture.
Grace a l'id de chaque client, je reference leur facture. jusque la pas de soucis.
Là où se trouve mon probleme, c'est lorsque je veux afficher les factures d'un client dans un datagrid ou un listview. JE N'Y ARRIVE PAS!!!
j'ai bien toutes mes factures affichées dans le datagrid mais je n'arrive pas a afficher seulement les factures du client selectionne. En plus je pige que dalle aux requetes SQL. Alors si quelqu'un se sent l'envie de m'aider, il sera alors le bienvenue.

Merci d'avance

6 réponses

caese Messages postés 9 Date d'inscription samedi 5 juin 2004 Statut Membre Dernière intervention 5 juin 2005
25 mai 2005 à 08:49
Alors si j'ai bien compris ton pb, c juste une histoire de requète (?!)

en fait il faut que tu selectionne tes factures en fonction de ton
client, pour ça il faut que tu chope l'id de ton client quelque part,
par exemple si tu le prend dans un formulaire courant, ça donne en gros
:



SQL = "SELECT baseFacture.facture FROM baseFacture WHERE EXISTS (SELECT
baseFacture.id FROM baseFacture WHERE baseFacture.id LIKE "'&
Me.idClient &"';)"


apres tu charges ça dans ta liste !



sinon, plus simple : tu peu simplement lier tes tables ac l'id mais il faut aussi que tu ai ton id ds le formulaire...

si t'as des questions n'hésite pas !



Caese
3
cs_DJTIME Messages postés 39 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 4 janvier 2008
25 mai 2005 à 09:45
Salut

ce que j'ai a rajouté par rapport a Caese, c'est que si tu t'y connais pas en SQL tu va surement en bavé mais!!!

y a p et bien une petite astuce qui pourrait te guider

Avant de penser a VB, lance ton programme access avec ta base et tes tables

ensuite en créant une requetes avec le mode création qui est simple vu
que c'est graphique et ca se fait en quelques cliques de souris

tu pourras dire quel table rentre en jeux, ensuite faire le lien (qui
en principe et automatique a condition que les deux champs dans les
deux tables on le meme nom et je crois le meme type), et dire quel
champ affiché et de quel tabkes tu veut l'extraire

une fois que ta finis ca tu clique du droit la ou access a mis tes tables et tu choisis MODE SQL:

et hop tu te retrouve avec ta requete fraichement ecrite :)

apres pour passer a des truc genre LIKE (comme te l'as deja dis
caese) ben faudra se documenter y a sur le web de tres bon site
sur ca mais bon ... ca reste une question de volonté est ce que tu veut
vraiment maitrisé ou pas le sujet.

VB6 est un langage magnifiquement beau (je crois que si je continue
bill gates va m'offrir une superbe voiture:) mais a condition de
maitrisé ce qui va avec access et sql en l'occurence si tu veut
utiliser les bases de donnée.



tu vois ce que t'as ecris caese: la requete SQL c'est toujours une ligne du type

SELECT les champs from les tables where condition

Exemple SELECT * FROM TABCLI where nom_client ="dupont";' extraire tous les champs de la tables TABCLI pour le client dupont

ou alors SELECT * FROM TABCLI where nom_client LIKE '%du%';'
extraire tous les champs de la tables TABCLI pour les clients dont le
nom contient "du" ca peut etre dupont durand dumonde dureacuir etc ....
:)

et si je suppose que tu utilise l'ADODC (dont le nom sera par exemple
adodc1) et que tu fait un petit textbox de recherche (le nom sera
text1) tu peut ecrire ca

adodc1.recordsource="select * from tabcli where nom_cli like '% " & text1.text & "%';"

adodc1.refresh

par exemple bien sur je sais pas trop a koi ressemble ton appli

et tu peut rajouter un truc genre



Dim temp as string

temp=replace(text1.text," ","%");

Et tu réecris ta requête en changeant text1.text par temp et si en plus
tu met ca dans l'evenement onkey up ca sera le top parce que c'est en
temps reel genre tu ecris "a" et automatiquement ca ne garde dans la liste que les clients qui ont "a" dans le nom tu ecris "an"
idem ca t'affiche anne, annie, antoine , etc etc... comme dans
les encyclopédie ,bon le code n'est pas exact y a aussi quelques
rectificcations



En esperant que j'ai pas trop dis n'importe koi je te souhaite bonne chance

Amicalement Elyes
3
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
25 mai 2005 à 11:31
Pour completer DJTIME :

SELECT * FROM NomTable where NomChamp = "dupont" ' Pour les Types Text
SELECT * FROM NomTable where NomChamp = 2 ' Pour les Types Numerique

Nom="Italia"
SELECT * FROM NomTable where NomChamp = '" & Nom & "' ' En Passant par une Variable String
Id=12
SELECT * FROM NomTable where NomChamp = " & Id & " ' En Passant par une Variable Integer

It@li@
3
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
26 mai 2005 à 08:15
Avec Un ListView :

Dim ObjListe As ListItem

ListView1.ListItems.Clear
Set db = OpenDatabase("C:\MaBase.mdb") ' Définition base de donnéeSet ChoixLign db.OpenRecordset("SELECT * FROM Lignes WHEREDesignation '" & Combo1 & "'")
If ChoixLign.RecordCount <> 0 Then ' Juste une Ligne
Do Until ChoixLign.eof
Set ObjListe = ListView1.ListItems.Add(, , "")
ObjListe.SubItems(1) = Combo1
ObjListe.SubItems(2) = ChoixLign ("ReferenceDemande")
ObjListe.SubItems(3) = ChoixLign ("DateDemande") & " " & ChoixLign ("HeureDemande")
ChoixLign.Movenext
Loop
End If
Set ChoixLign = Nothing
Set db = Nothing

It@li@
3

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

Posez votre question
netruner666 Messages postés 9 Date d'inscription lundi 12 juillet 2004 Statut Membre Dernière intervention 1 décembre 2005
25 mai 2005 à 21:27
netruner666

Merci a tous, maintenant je vais essayer. C'est vrai que coté SQL, je n'y connais rien... mais bon, je vais m'y atteler. Maintenant il me vient une autre question: une fois les informations desirees récuprées, comment fait- on pour les inserer dans un formulaire sous forme de tableau et les imprimer car j'ai bien essayer, mais cela me donne des trucs horribles.
0
caese Messages postés 9 Date d'inscription samedi 5 juin 2004 Statut Membre Dernière intervention 5 juin 2005
28 mai 2005 à 15:53
Sinon tu peux aussi le faire sous forme d'état, c'est plus simple, t'as pas besoin de te galérer avec du tas de code en vb, tu le fais simplement avec assistant de création d'état, là y'a qu'à suivre les instruction. il te le met sous forme de tableau tout seul. apres, pour l'imprimer, tu peu le faire depuis un formulaire avec un bouton et pareil ac l'assistant tu fait opération sur état et imprimer l'état !
voilà !
Caese
0
Rejoignez-nous