Comment faire une requete entre plusieurs Dataset URGENT SVP :-(

aitoz Messages postés 59 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 30 décembre 2008 - 11 oct. 2004 à 11:46
aitoz Messages postés 59 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 30 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

5 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
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
0
aitoz Messages postés 59 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 30 décembre 2008 1
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
0
aitoz Messages postés 59 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 30 décembre 2008 1
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 !

et ca risque d'etre beaucoup plus long !

enfin, si je ne trouve pas je ferais ca !
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
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
0

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

Posez votre question
aitoz Messages postés 59 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 30 décembre 2008 1
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 !

Laurent
0
Rejoignez-nous