Bonjour à tous, je bataille depuis 2 jours à tenter de faire qq chose de correct.. mais en vain.. quand ca marche les temps d'exécution sont beaucoup trop long.
voila le context
j'accède a un SQL server pour récupérer 2 tables différentes
on va dire une table : Catalogue et une table Appro
j'utilise ce code pour les deux tables pour obtenir mes 2 DataSet
voici un extrait du xml pour chaque table.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 string querySelect = "SELECT ........."; SqlConnection conn = new SqlConnection(); conn.ConnectionString = "data source.................."; SqlCommand query = new SqlCommand(); query.Connection = conn; query.CommandText = querySelect; query.CommandType = CommandType.Text; SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = query; adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey; DataSet ds = new DataSet(); adapter.FillSchema(ds, SchemaType.Mapped, "MyTest"); adapter.Fill(ds, "MyTest"); ds.WriteXml("c:\\MyTest_Catalogue.xml", XmlWriteMode.WriteSchema);
Catalogue
Appro
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <MyTest> <Ref>1/BC/HIBISCUS/A/36</Ref> <Colisage>800.000000</Colisage> <T2>0.000000</T2> <T3>0.000000</T3> </MyTest>
voila, ce qui est en commun sur les deux table c'est le champ ref
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <MyTest> <Ref>1/BB/HIPOINT/B</Ref> <date_arrivage>2011-02-16T00:00:00+01:00</date_arrivage> <qte_arrivages>5040.000000</qte_arrivages> </MyTest> <MyTest> <Ref>1/BC/HIBISCUS/A/36</Ref> <date_arrivage>2011-02-16T00:00:00+01:00</date_arrivage> <qte_arrivages>5040.000000</qte_arrivages> </MyTest> <MyTest> <Ref>1/BC/HIBISCUS/A/36</Ref> <date_arrivage>2011-04-16T00:00:00+01:00</date_arrivage> <qte_arrivages>4320.000000</qte_arrivages> </MyTest>
jusque la tout va bien... la ou ca se complique c'est que j'ai besoin d'avoir un dataset qui prends en compte les 2 datasets..
cad que dans mon exemple sur le dataset catalogue, j'ai besoin d'avoir les infos dispo dans le dataset appro, sachant que dans le deuxiememe dataset, l'info peut etre disponible x fois, dans mon exemple 2 fois
je ne pense pas qu'il soit possible d'ajouter des "noeuds" dans un data set, il me semble qu'il doit falloir utiliser un séparateur pour avoir mes données ex :
j'ai essaye par exemple de parcourir chaque ligne de la table de mon dataset catalogue et d'utiliser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <MyTest> <Ref>1/BC/HIBISCUS/A/36</Ref> <Colisage>800.000000</Colisage> <T2>0.000000</T2> <T3>0.000000</T3> <date_arrivage>2011-02-16T00:00:00+01:00|2011-04-16T00:00:00+01:00</date_arrivage> <qte_arrivages>5040.000000|4320.000000</qte_arrivages> </MyTest>
.Select(string.Format("{0} LIKE '%{1}%'", columnName, value));
ca marcherais, mais c'est vraiment très très lent..
donc est ce que vous avez qq conseils pour moi, est ce qu'il n'y pas une méthode qui me permet de faire qq chose de propre en utilisant le champ commun ref ?
merci d'avance de votre aide précieuse :-)
Partager