Exploitation des données d'un dataset ou d'un datatable [Résolu]

CGSI 9 Messages postés mardi 24 octobre 2006Date d'inscription 17 mars 2009 Dernière intervention - 10 mars 2009 à 22:24 - Dernière réponse : CGSI 9 Messages postés mardi 24 octobre 2006Date d'inscription 17 mars 2009 Dernière intervention
- 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 !!!!
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
hudon77 127 Messages postés vendredi 21 janvier 2005Date d'inscription 29 mai 2014 Dernière intervention - 13 mars 2009 à 02:53
3
Merci
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!

Merci hudon77 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 73 internautes ce mois-ci

Commenter la réponse de hudon77
hudon77 127 Messages postés vendredi 21 janvier 2005Date d'inscription 29 mai 2014 Dernière intervention - 11 mars 2009 à 01:10
0
Merci
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!
Commenter la réponse de hudon77
CGSI 9 Messages postés mardi 24 octobre 2006Date d'inscription 17 mars 2009 Dernière intervention - 11 mars 2009 à 14:46
0
Merci
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 
Commenter la réponse de CGSI
hudon77 127 Messages postés vendredi 21 janvier 2005Date d'inscription 29 mai 2014 Dernière intervention - 11 mars 2009 à 22:53
0
Merci
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!
Commenter la réponse de hudon77
CGSI 9 Messages postés mardi 24 octobre 2006Date d'inscription 17 mars 2009 Dernière intervention - 12 mars 2009 à 14:25
0
Merci
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 ?
Commenter la réponse de CGSI
CGSI 9 Messages postés mardi 24 octobre 2006Date d'inscription 17 mars 2009 Dernière intervention - 17 mars 2009 à 22:43
0
Merci
Yes je te remercie bcp j'y suis arriver....
Ca marche carément mieux, 50 fois plus rapide..
Merci encore
@+
Commenter la réponse de CGSI

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.