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

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);
voici un extrait du xml pour chaque table.

Catalogue

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>
Appro

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>
voila, ce qui est en commun sur les deux table c'est le champ ref

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 :

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>
j'ai essaye par exemple de parcourir chaque ligne de la table de mon dataset catalogue et d'utiliser :

.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 :-)