Comment faire une requete entre plusieurs Dataset URGENT SVP :-(
aitoz
Messages postés59Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention30 décembre 2008
-
11 oct. 2004 à 11:46
aitoz
Messages postés59Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention30 décembre 2008
-
11 oct. 2004 à 17:41
bonjour,
je voudrais construire un tableau assez complexe.
Ce tableau est créé a partir d'une Base de données.
Je ne peux pas faire de requete imbriquées parce que les données n'ont au départ aucun point commun.
Je voudrais alors, faire mes requetes, les stocker dans des DataSet différents et a la fin je voudrais faire des requetes de DataSet.
Exemple bidon : dans le Dataset1 j'ai le prix des article et dans le Dataset2 j'ai la quantité en stock des meme article, je veux a la fin créer le DataSet3 avec le prix des article et la quantité en stock.
merrci de votre aide
A voir également:
Comment faire une requete entre plusieurs Dataset URGENT SVP :-(
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 11 oct. 2004 à 12:52
Salut,
Question : il n'y a vraiment pas de point commun entre tes données ? Je m'explique, si tu as une table qui contient les prix à l'unité de chaque article et une autre qui contient le stock de ces même articles, il doit bien y avoir un code, une référence, ... qui doit permettre de faire la liaison entre les 2 non ?
Peux-tu donner la structure des tables que tu veux interroger ? (nom des tables, nom des champs avec la description de leur contenu).
Cordialement, CanisLupus
Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
aitoz
Messages postés59Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention30 décembre 20081 11 oct. 2004 à 13:43
C'était un exemple bidon ! En fait, je veux en (en vrai ;-) ) calculer les stocks morts de ma société.
Je dois pour ca utiliser la table ARTICLE et la table EXPEDITIONS.
En gros un article en stock qui est considéré comme mort, est un article qui n'a pas d'expédition sur une période.
Je dois afficher tout un tas d'informations par ligne dans mon tableau. ex : ARticle déignation, PMP, Qté en stock, montant de la ligne, localisation, etc...
Je ne peux pa sle faire en une seule requete.
Il y a bien le code article, mais je dois a un moment ou un autre stocker l'information quelque part et faire une requete sur plusieurs éléments stocké.
Avant, ca marchait tres bien ! je faisais une requete complexe et je stockais le resultat dans une table temporaire. Ensuite je pouvais relancer une requete sur cette même table.
Le probleme est que maintenant je suis en client serveur avec plusieurs users. Alors je ne peux pas stocker les infos dans une table dans la base de données parce que sinon il risque d'y avoir un conflit entre les users qui aurait eu la meme demande au meme moment ! alor je dois stocker les tables temporaires sur le client.
Je pense chercher du coté DataSet. Je voudrais que ma table temporaire soit en fait un dataset. et je voudrais savoir si je peux faire une requete sur deux DataSet différents et stocker le résultat dans un nouveau Dataset ???
Ca va peut etre difficile a comprendre juste en me lisant mais c'est pas si compliqué que ca !
Merci pour votre aide !
Ps : c'est urgent parce que c'est pour mon travail et je perd du temps ! hihihi
aitoz
Messages postés59Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention30 décembre 20081 11 oct. 2004 à 14:00
Je voulais juste ajouter quelque chose !
Si je ne trouve pas de solution classe j'ai trouvé une solution toute naze mais qui devrait marcher !
En fait je créé une table dans ma base de données qui aura un numéro unique propre au user qui l'a lancé ! de ce fait je pourrais avoir 10 users qui lance la meme requete en meme temps !
le seul hic c'est que ca va me bouffer des ressources !
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 11 oct. 2004 à 16:33
AIE AIE AIE. C hard.
D'abord, un recordset (ou dataset) en vb est considéré comme un tableau de données. On ne peut donc pas faire de requete (sql) dessus, juste le parcourir pour créer d'autres requetes avec les éléments récupérés.
Un exemple en DAO,
On charge la liste de tous les articles :
set rs1 = db.openrecordset("select * from ARTICLE")
A partir de là, on peut faire :
rs1.movefirst
do while not rs1.eofset rs2 db.openrecordset("select count(*) from EXPEDITIONS where ID_ARTICLE " & rs1!ID & "and DATE_EXPEDITION >= #" & TaDateLimite & "#")
if rs2.fields(0)=0 then msgbox rs1!libelle & " = article mort"
rs1.movenext
loop
Mais c'est surement plus lent que :
Set rs = db.OpenRecordset("select * from ARTICLE where id not in (select id_article from EXPEDITIONS where date_expedition >= #" & TaDateLimite & "# group by id_article)")
do while not rs.eof
msgbox rs!libelle & " = article mort"
loop
Si tu tiens absolument aux "tables temporaires" le mieux serait de passer par les querydefs (createquerydef et deletequerydef).
Sinon, je ne connais pas la complexité de ta base mais on devrait sûrement pouvoir s'en sortir avec des requêtes imbriquées.
Cordialement, CanisLupus
Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
Vous n’avez pas trouvé la réponse que vous recherchez ?
aitoz
Messages postés59Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention30 décembre 20081 11 oct. 2004 à 17:41
SUPER SUPER SUPER
j'ai trouvé !
Enfin, j'ai pas trouvé comment faire pour enchainer les requetes dans un DataSet ! En fait tu as raison, on peut pas !
En fait, j'ai perdu une journée mais j'ai fini par réussir ma géante requete imbriquée !
j'ai utilisé NOT EXISTS avec une requete imbriquée et ca a l'air de marcher ! Maintenant je vais faire un bel état avec crystal report !
Pour ceux qui lirons ce message, creusez bien bien bien les requetes imbriquées avec les clauses EXISTS ou IN etc...
Elles peuvent résoudre pleins de trucs !
Pour moi, le mystère reste complet dans le sens ou si un jour je me retrouve bloqué et contraint d'utiliser des tables temporaires, je ne serais tjs pas trop comment faire !
Si je trouve je donne la réponse !