Exploitation des données d'un dataset ou d'un datatable

Résolu
CGSI Messages postés 9 Date d'inscription mardi 24 octobre 2006 Statut Membre Dernière intervention 17 mars 2009 - 10 mars 2009 à 22:24
CGSI Messages postés 9 Date d'inscription mardi 24 octobre 2006 Statut Membre Dernière intervention 17 mars 2009 - 17 mars 2009 à 22:43
Bonjour tous le monde
Je vient vers vous car je n'aurais bientôt plus de cheveux sur la tête.

Je travail sur un projet de génération de mail à partir de base de données SQL.
Tous fonctionne jusque à la génération de mon dataset et de mon datagrid.
Mon dataset et composé des colone Mail Article Quantité Prix
Certain colone ne sont pas toujours rempli (Mail)
Et un même mail peu correspondre à plusieurs articles.

Voici mon problémes:
Je n'arrive pas à crée la boucle qui me permetrais de récupérer les différents "article" "quantité" et "prix" pour un "mail" identique.
Dans le but de les mettre dans un label ou autre pour un envoie final par mail.

voici mon code

 

Dim myReader2
As
New SqlDataAdaptermyReader2.SelectCommand =

New SqlCommand(
"SELECT mail, article, quantité, prix from table")myReader2.SelectCommand.Connection = OUFConnection

Dim DatasetResultat =
New DataSet(
"Resultat")

myReader2.Fill(DatasetResultat)
Merci de votre aide !!!!

6 réponses

hudon77 Messages postés 127 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 29 mai 2014
13 mars 2009 à 02:53
tu peux  faire un select sur une table en faisais    Tableresultat.Select   ceci retournera un array de dataRow... mais je n'ai jamais utilisé ca alors je ne peux pas t'aider pour ca....

un autre chose que tu peux faire cest de parcourir ta tableResultat et de construire une 2ieme table a coté qui contiendrait seulement les mail unique.  Pour ne pas avoir de doublons il faudrait vérifier a chaque fois que le mail que tu t'apprete a ajouter n'a pas déja été ajouté. Un fois cela fait tu te retrouverait avec 2 tables...un avec les mails et lautre avec toutes tes donneés. Apres ca tu boucle sur tes mail et sur tes produit pour construire ton mail.
Nicolas!
3
hudon77 Messages postés 127 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 29 mai 2014
11 mars 2009 à 01:10
tu peux utiliser une datatable au lieu d'un dataset.  Voici ce que je ferais......

Dim myAdapter AsNew SqlDataAdapter

With myAdapter

   .SelectCommand = New SqlCommand("SELECT mail, article, quantit‚, prix from table")

   .SelectCommand.Connection = OUFConnection

EndWith

Dim myResultTable AsNew DataTable()

myAdapter.Fill(myResultTable)

ForEach row As DataRow In myResultTable.Rows

   Dim mail = row("mail")

   Dim article = row("article")

   Dim quantite = row("quantite"))

   Dim prix AsDouble = row("quantite")

Next

Nicolas!
0
CGSI Messages postés 9 Date d'inscription mardi 24 octobre 2006 Statut Membre Dernière intervention 17 mars 2009
11 mars 2009 à 14:46
Je te remercie pour ton aide.
J'avais déjà fait le test avec un datatable mais je suis telement nul en boucle for each que je n'y arrive pas.


Donc j'ai mis en place ton code.
j'ai rajouter un textbox pour visualiser l'information récupérer; comme suit:



For



Each
row

As
DataRow

In
Tableresultat.Rows




Dim
mail = row(

"Mail"
)




Dim
article = row(

"Libélé"
)




Dim
quantite = row(

"Quantité‚"
)




Dim
prix

As



Double
= row(

"Prix"
)




TextBox1.Text = TextBox1.Text & vbCrLf & quantite.ToString &




" "
& article.ToString &

" au prix de "
& prix.ToString &

"?"


Next

le probléme c'est que le resultat englobe toute les ligne du tableau.
comment puis je faire pour filtrer en fonction des mail ?
Est il possible de fair une requete select ou select distinct sur un datatable ? si oui comment ?

Merci 
0
hudon77 Messages postés 127 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 29 mai 2014
11 mars 2009 à 22:53
tu pourrais faire 2 requete..... la premiere  SELECT DISTINCT  mail FROM table entuite tu boule sur ta table de mail ....  a chaque passage dans ta boucle tu peux refaire un SELECT article, quantité,  prix from table WHERE mail = row("mail")

donc tu envoi un mail a chaque passage dans ta boucle....

mais que fais tu des article qui n'on pas de mail ???

Nicolas!
0

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

Posez votre question
CGSI Messages postés 9 Date d'inscription mardi 24 octobre 2006 Statut Membre Dernière intervention 17 mars 2009
12 mars 2009 à 14:25
Je te remercie pour l'info,
C'est éffectivement ce que j'avais commencer à faire.
Est ce que tu sait si il est possible de faire une requéte sur un datatable ?
Car dans la réalité la requéte qui me donne mon resultats est trés lourde... ce n'est pas juste un SELECT mail, article, quantit,, prix from table mais une union de plusieurs tables avec bcp de conditions.
Alors que si je pouvais requéter sur le résultat de cette requette j'irais bcp plus vite et je ne chargerais pas le serveur de SQL.
Tu vois ce que je veux dire ?
0
CGSI Messages postés 9 Date d'inscription mardi 24 octobre 2006 Statut Membre Dernière intervention 17 mars 2009
17 mars 2009 à 22:43
Yes je te remercie bcp j'y suis arriver....
Ca marche carément mieux, 50 fois plus rapide..
Merci encore
@+
0
Rejoignez-nous