Editer un rapport avec requete et liste de selection simple
fillote
Messages postés2Date d'inscriptionlundi 20 juin 2005StatutMembreDernière intervention 2 août 2005
-
1 août 2005 à 05:07
macgyver49
Messages postés58Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention 5 août 2005
-
2 août 2005 à 10:47
Bonjour,
Je suis desesperee, cela fait une semaine que je plenche sur mon probleme et j'y arrive po!
c'est simple (enfin pour l'explication....): j'ai une liste opu je peux selectionner plusieurs client et je voudrais que pour chaque client en cliquant sur un bouton je puisse editer un rapport (1 pour chaque). Ce rapport doit etre editer suivant une requete il je suis censee recuperer les numeros des clients selectionnes dans ma liste....
J'espere que j'ai ete clair....
Merci de m'aider car mon stage ce fini et donc le temps commence a manquer!!!
MERCI
A voir également:
Une seule expression peut être spécifiée dans la liste de sélection quand la sous-requête n'est pas introduite par exists.
macgyver49
Messages postés58Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention 5 août 2005 1 août 2005 à 14:31
Salut "fillote"
Je crois comprendre que tu as un petit probleme avec tes bases de données. Si tu veux, je veux bien te donner un petit coup de main pour terminer ton projet (entre stagiaires, il faut se serrer les coudes !!), mais il faudrait que tu donnes un peu plus de détails sur ton programme. Peux tu dire si tu travailles sous VB6 ou VB.NET, comment se présente ton code, tes bases de données et les informations que tu veux afficher ???
fillote
Messages postés2Date d'inscriptionlundi 20 juin 2005StatutMembreDernière intervention 2 août 2005 2 août 2005 à 02:11
Bonjour!!!!
Merci pour cette reponse tout a fait sympathique!!!bon alors en fait c'est une base de donnees access 2000 et donc VBA (. je sais pas desole....). Ma base de donnees doit gerer des patients.
Pour ce qui est de la liste de selection multiple: en fait dans cette liste j'ai mon code patient et ma colonne lies est l'id_patient car il permet de faire la relation avec toute mes autres tables.
Je voudrais faire editer un rapport pour chaque client selectionne a l'aide d'une requete dont voici sa tete: (enfin leurs tetes car elles sont 2! enfin une qui fait appelle a l'autre)
la premiere:
SELECT Patient_Details.id_patient, Patient_Details.file_code, Patient_Details.first_name, Glucose.[early mornin _blood_glucose_mmol/l], Glucose.[glucose_clinic_mmol/L], Glucose.[time since last_meal], Clinical_Data.BMI, Clinical_Data.[Waist circumference], Foot.monofilament, Foot.vibration, Foot.reflex, Foot.[muscle tone], Foot.[(l)abi], Foot.[(r)abi], Clinical_Data.[BP/Lying S], Clinical_Data.[BP/Lying D], Clinical_Data.[BP/Lying 2 S], Clinical_Data.[BP/Lying 2 D], Clinical_Data.[BP/Standing S], Clinical_Data.[BP/Standing D], Clinical_Data.[BP/ standing 2 S], Clinical_Data.[BP/ standing 2 D], Heart.[10sec_ecg_grade], Heart.[5min_ecg_grade], Glucose.date_attented_cliniq
FROM (((Patient_Details INNER JOIN Glucose ON Patient_Details.id_patient=Glucose.id_patient) INNER JOIN Clinical_Data ON Patient_Details.id_patient=Clinical_Data.id_patient) INNER JOIN Foot ON Patient_Details.id_patient=Foot.id_patient) INNER JOIN Heart ON Patient_Details.id_patient=Heart.id_patient
WHERE (((Glucose.date_attented_cliniq)=Foot.date_attented_cliniq) And ((Foot.date_attented_cliniq)=Clinical_Data.date_attented_cliniq And (Foot.date_attented_cliniq)=Heart.date_attented_cliniq)) AND Glucose.date_attented_cliniq in (SELECT Max(Glucose.date_attented_cliniq) AS Expr1 FROM Glucose WHERE (Glucose.id_patient=Patient_Details.id_patient));
et la deuxieme:
SELECT [Report Several].*
FROM [Report Several]
WHERE [Report Several].id_patient=[Z_Patient];
Les requetes marchent donc pas de soucis! le seul truc c'est que mon Z_Patient devrait etre ma variable dans mon code et que je devrais lancer celle ci pour chaque patient et donc la recuperer pour l'edition de mon rapport. J'espere que tu arrive a me suivre jusque la....
et voici mon petit bou de code pour recuperer mes id_patient de ma liste quand je clic sur le bouton Recup:
Private Sub Commande0_Click()
Dim Z_List As Control
Dim Z_Patient As Variant
Set Z_List = Me!listmulti
For Each Z_Patient In Z_List.ItemsSelected
MsgBox Z_List.ItemData(Z_Patient)
Next Z_Patient
End Sub
donc en fait la dans la boucle For Each je pensais lancer ma requete pour mon patient (Z_patient=id_patient),recuperer le resultat dans une variable et lancer l'impression de l'etat pour ce resultat et ainsi recommencer pour chaque patient....
je pense que l'algorythme est bon dans ma tete enfin ca serait simple dans n'importe quel langage mais la je butte!
Peux tu me sauver????
Merci de ton aide et de ta patience!!!
macgyver49
Messages postés58Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention 5 août 2005 2 août 2005 à 10:47
Salut, c'est encore moi.
Je suis désolé, mais VBA n'est pas ma spécialité, je travaille sous VB6.
J'ai regardé ton code. Si tes requetes sont bonnes et que tu réussis bien a afficher la liste de tes patients grâce à la fonction Commande0_Click() , alors je pense qu'il suffit dans les requetes de remplacer les champs 'Z_patient' par 'Z_List.ItemData(Z_Patient)' et d'executer les requetes dans la boucle 'For Each'.
Je ne sais pas comment se présentent les requetes ACCESS sous VBA. Sous VB6, elles sont enregistrées dans des variables de type string. Si c'est également le cas dans ton programme, il faut que tu fasse un traitement de chaine de ce style:
Requete2="SELECT [Report Several].* FROM [Report Several] WHERE [Report Several].id_Patient=[" & Z_List.ItemData(Z_Patient) & "];"
Malheureusement, je ne connais pas suffisamment l'environnement de VBA ACCESS pour t'aider beaucoup plus.
Tiens moi au courant de l'évolution de ton projet, et je t'aiderais si possible.