DataSet

Le
Gloup
Bonjours à tous.

J'ai une application qui doit faire une petite synchro entre 2 DB, une en
ASA6 et l'autre en SQL Server 2000.
C'est la même table des 2 côtés avec exactement la même structure.
J'imaginais (naïvement) qu'il était possible de faire un machin du genre:
.
//prendre les données du côté SQL server
sqlDataAdapter1.Fill(dsSQL);

//Faire un merge dans l'autre DataSet et faire un update
// en ASA6
dsASA.Merge(dsSQL.matable);
odbcDataAdapter1.Update(dsASA);
.

Je n'ai pas d'erreur, mais je n'ai absolument rien qui change dans la DB ASA
6. Le but du jeux est d'insérer des enregistrements du côté ASA (la table
est vide) en provenance de SQL Server sans faire de boucle.
Si quelqu'un a une idée sur la manière de faire, son aide sera très
appréciée. Et dans l'affirmative, un update fonctionnerait-il différemment
d'un insert?

Merci à tous.

JL

  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
Le #12525521
Bonjour,

en fait le datset met un flag devant ses lignes pour dire l'action a faire
dessus lors de la mise a jour

INSER, DELETE , UPDATE en sql

votre dataset provenant de sql n'a aucune ligne de flagué vous n'avez fais
que le charger donc d'après lui il n'y a pas d'action a faire si vous faites

if (MonDataSet.haschanges())

MessageBox.show("il y a des changements")

else
MessageBox.show("il n'y a pas de changement)


vous verrez apparaitre la deuxième boite , il faut passer toutes les lignes
du dataset en flag INSERTED topo le dataadapter opérera la commande sql
d'insert

a mon avis le mieu serait de prendre le deuxième dataset et de lui faire
insérer autant de ligne qu'il y en a dans le premier et ensuite de copier
les ligne une a une

parce que j'ai regardé et je n'ai pas trouvé où dire à une datatable que
toutes ses ligne doivent être considérée en insert

il faut aussi vérifier les données présente dans les dataset un petit
MoçnDataSet.WriteXLM(@"c:monfichier.xml") permettra d'écrire sur le disque
le dataset et de vérifier si tout est bon

Sebastien

"Gloup" news:
Bonjours à tous.

J'ai une application qui doit faire une petite synchro entre 2 DB, une en
ASA6 et l'autre en SQL Server 2000.
C'est la même table des 2 côtés avec exactement la même structure.
J'imaginais (naïvement) qu'il était possible de faire un machin du genre:
....
//prendre les données du côté SQL server
sqlDataAdapter1.Fill(dsSQL);

//Faire un merge dans l'autre DataSet et faire un update
// en ASA6
dsASA.Merge(dsSQL.matable);
odbcDataAdapter1.Update(dsASA);
....

Je n'ai pas d'erreur, mais je n'ai absolument rien qui change dans la DB


ASA
6. Le but du jeux est d'insérer des enregistrements du côté ASA (la table
est vide) en provenance de SQL Server sans faire de boucle.
Si quelqu'un a une idée sur la manière de faire, son aide sera très
appréciée. Et dans l'affirmative, un update fonctionnerait-il différemment
d'un insert?

Merci à tous.

JL





Gloup
Le #12525511
J'en étais effectivement arrivé à cette conclusion. Je vais faire quelque
chose comme

for(int n;n < dsSQL.matable.Rows.Count;n++)
dsASA.matable.Rows.Add(dsSQL.matable.Rows[n].ItemArray);
odbcDataAdapter1.Update(dsASA);

Merci pour la réponse.

JL

#
Bonjour,

en fait le datset met un flag devant ses lignes pour dire l'action a faire
dessus lors de la mise a jour

INSER, DELETE , UPDATE en sql

votre dataset provenant de sql n'a aucune ligne de flagué vous n'avez fais
que le charger donc d'après lui il n'y a pas d'action a faire si vous


faites

if (MonDataSet.haschanges())

MessageBox.show("il y a des changements")

else
MessageBox.show("il n'y a pas de changement)


vous verrez apparaitre la deuxième boite , il faut passer toutes les


lignes
du dataset en flag INSERTED topo le dataadapter opérera la commande sql
d'insert

a mon avis le mieu serait de prendre le deuxième dataset et de lui faire
insérer autant de ligne qu'il y en a dans le premier et ensuite de copier
les ligne une a une

parce que j'ai regardé et je n'ai pas trouvé où dire à une datatable que
toutes ses ligne doivent être considérée en insert

il faut aussi vérifier les données présente dans les dataset un petit
MoçnDataSet.WriteXLM(@"c:monfichier.xml") permettra d'écrire sur le


disque
le dataset et de vérifier si tout est bon

Sebastien

"Gloup" news:
> Bonjours à tous.
>
> J'ai une application qui doit faire une petite synchro entre 2 DB, une


en
> ASA6 et l'autre en SQL Server 2000.
> C'est la même table des 2 côtés avec exactement la même structure.
> J'imaginais (naïvement) qu'il était possible de faire un machin du


genre:
> ....
> //prendre les données du côté SQL server
> sqlDataAdapter1.Fill(dsSQL);
>
> //Faire un merge dans l'autre DataSet et faire un update
> // en ASA6
> dsASA.Merge(dsSQL.matable);
> odbcDataAdapter1.Update(dsASA);
> ....
>
> Je n'ai pas d'erreur, mais je n'ai absolument rien qui change dans la DB
ASA
> 6. Le but du jeux est d'insérer des enregistrements du côté ASA (la


table
> est vide) en provenance de SQL Server sans faire de boucle.
> Si quelqu'un a une idée sur la manière de faire, son aide sera très
> appréciée. Et dans l'affirmative, un update fonctionnerait-il


différemment
> d'un insert?
>
> Merci à tous.
>
> JL
>
>
>




Le #12525501
je serais vous je passerais le update a la fin une fois toutes les lignes
ajoutées car il consomme beaucoup de temps machine autant attendre que tout
soit dans le dataset et le lancer en une fois
Sebastien
"Gloup" news:
J'en étais effectivement arrivé à cette conclusion. Je vais faire quelque
chose comme

for(int n;n < dsSQL.matable.Rows.Count;n++)
dsASA.matable.Rows.Add(dsSQL.matable.Rows[n].ItemArray);
odbcDataAdapter1.Update(dsASA);

Merci pour la réponse.

JL

#
> Bonjour,
>
> en fait le datset met un flag devant ses lignes pour dire l'action a


faire
> dessus lors de la mise a jour
>
> INSER, DELETE , UPDATE en sql
>
> votre dataset provenant de sql n'a aucune ligne de flagué vous n'avez


fais
> que le charger donc d'après lui il n'y a pas d'action a faire si vous
faites
>
> if (MonDataSet.haschanges())
>
> MessageBox.show("il y a des changements")
>
> else
> MessageBox.show("il n'y a pas de changement)
>
>
> vous verrez apparaitre la deuxième boite , il faut passer toutes les
lignes
> du dataset en flag INSERTED topo le dataadapter opérera la commande sql
> d'insert
>
> a mon avis le mieu serait de prendre le deuxième dataset et de lui faire
> insérer autant de ligne qu'il y en a dans le premier et ensuite de


copier
> les ligne une a une
>
> parce que j'ai regardé et je n'ai pas trouvé où dire à une datatable que
> toutes ses ligne doivent être considérée en insert
>
> il faut aussi vérifier les données présente dans les dataset un petit
> MoçnDataSet.WriteXLM(@"c:monfichier.xml") permettra d'écrire sur le
disque
> le dataset et de vérifier si tout est bon
>
> Sebastien
>
> "Gloup" > news:
> > Bonjours à tous.
> >
> > J'ai une application qui doit faire une petite synchro entre 2 DB, une
en
> > ASA6 et l'autre en SQL Server 2000.
> > C'est la même table des 2 côtés avec exactement la même structure.
> > J'imaginais (naïvement) qu'il était possible de faire un machin du
genre:
> > ....
> > //prendre les données du côté SQL server
> > sqlDataAdapter1.Fill(dsSQL);
> >
> > //Faire un merge dans l'autre DataSet et faire un update
> > // en ASA6
> > dsASA.Merge(dsSQL.matable);
> > odbcDataAdapter1.Update(dsASA);
> > ....
> >
> > Je n'ai pas d'erreur, mais je n'ai absolument rien qui change dans la


DB
> ASA
> > 6. Le but du jeux est d'insérer des enregistrements du côté ASA (la
table
> > est vide) en provenance de SQL Server sans faire de boucle.
> > Si quelqu'un a une idée sur la manière de faire, son aide sera très
> > appréciée. Et dans l'affirmative, un update fonctionnerait-il
différemment
> > d'un insert?
> >
> > Merci à tous.
> >
> > JL
> >
> >
> >
>
>




Gloup
Le #12525491
C'est le cas, je n'ai pas d'accolade pour ma boucle for ;o)

Merci

JLE


je serais vous je passerais le update a la fin une fois toutes les lignes
ajoutées car il consomme beaucoup de temps machine autant attendre que


tout
soit dans le dataset et le lancer en une fois
Sebastien
"Gloup" news:
> J'en étais effectivement arrivé à cette conclusion. Je vais faire


quelque
> chose comme
>
> for(int n;n < dsSQL.matable.Rows.Count;n++)
> dsASA.matable.Rows.Add(dsSQL.matable.Rows[n].ItemArray);
> odbcDataAdapter1.Update(dsASA);
>
> Merci pour la réponse.
>
> JL
>
> > #
> > Bonjour,
> >
> > en fait le datset met un flag devant ses lignes pour dire l'action a
faire
> > dessus lors de la mise a jour
> >
> > INSER, DELETE , UPDATE en sql
> >
> > votre dataset provenant de sql n'a aucune ligne de flagué vous n'avez
fais
> > que le charger donc d'après lui il n'y a pas d'action a faire si vous
> faites
> >
> > if (MonDataSet.haschanges())
> >
> > MessageBox.show("il y a des changements")
> >
> > else
> > MessageBox.show("il n'y a pas de changement)
> >
> >
> > vous verrez apparaitre la deuxième boite , il faut passer toutes les
> lignes
> > du dataset en flag INSERTED topo le dataadapter opérera la commande


sql
> > d'insert
> >
> > a mon avis le mieu serait de prendre le deuxième dataset et de lui


faire
> > insérer autant de ligne qu'il y en a dans le premier et ensuite de
copier
> > les ligne une a une
> >
> > parce que j'ai regardé et je n'ai pas trouvé où dire à une datatable


que
> > toutes ses ligne doivent être considérée en insert
> >
> > il faut aussi vérifier les données présente dans les dataset un petit
> > MoçnDataSet.WriteXLM(@"c:monfichier.xml") permettra d'écrire sur le
> disque
> > le dataset et de vérifier si tout est bon
> >
> > Sebastien
> >
> > "Gloup" > > news:
> > > Bonjours à tous.
> > >
> > > J'ai une application qui doit faire une petite synchro entre 2 DB,


une
> en
> > > ASA6 et l'autre en SQL Server 2000.
> > > C'est la même table des 2 côtés avec exactement la même structure.
> > > J'imaginais (naïvement) qu'il était possible de faire un machin du
> genre:
> > > ....
> > > //prendre les données du côté SQL server
> > > sqlDataAdapter1.Fill(dsSQL);
> > >
> > > //Faire un merge dans l'autre DataSet et faire un update
> > > // en ASA6
> > > dsASA.Merge(dsSQL.matable);
> > > odbcDataAdapter1.Update(dsASA);
> > > ....
> > >
> > > Je n'ai pas d'erreur, mais je n'ai absolument rien qui change dans


la
DB
> > ASA
> > > 6. Le but du jeux est d'insérer des enregistrements du côté ASA (la
> table
> > > est vide) en provenance de SQL Server sans faire de boucle.
> > > Si quelqu'un a une idée sur la manière de faire, son aide sera très
> > > appréciée. Et dans l'affirmative, un update fonctionnerait-il
> différemment
> > > d'un insert?
> > >
> > > Merci à tous.
> > >
> > > JL
> > >
> > >
> > >
> >
> >
>
>




Le #12525481
ah vi j'avais pas vu dsl

"Gloup" news:O%
C'est le cas, je n'ai pas d'accolade pour ma boucle for ;o)

Merci

JLE


> je serais vous je passerais le update a la fin une fois toutes les


lignes
> ajoutées car il consomme beaucoup de temps machine autant attendre que
tout
> soit dans le dataset et le lancer en une fois
> Sebastien
> "Gloup" > news:
> > J'en étais effectivement arrivé à cette conclusion. Je vais faire
quelque
> > chose comme
> >
> > for(int n;n < dsSQL.matable.Rows.Count;n++)
> > dsASA.matable.Rows.Add(dsSQL.matable.Rows[n].ItemArray);
> > odbcDataAdapter1.Update(dsASA);
> >
> > Merci pour la réponse.
> >
> > JL
> >
> > > > #
> > > Bonjour,
> > >
> > > en fait le datset met un flag devant ses lignes pour dire l'action a
> faire
> > > dessus lors de la mise a jour
> > >
> > > INSER, DELETE , UPDATE en sql
> > >
> > > votre dataset provenant de sql n'a aucune ligne de flagué vous


n'avez
> fais
> > > que le charger donc d'après lui il n'y a pas d'action a faire si


vous
> > faites
> > >
> > > if (MonDataSet.haschanges())
> > >
> > > MessageBox.show("il y a des changements")
> > >
> > > else
> > > MessageBox.show("il n'y a pas de changement)
> > >
> > >
> > > vous verrez apparaitre la deuxième boite , il faut passer toutes les
> > lignes
> > > du dataset en flag INSERTED topo le dataadapter opérera la commande
sql
> > > d'insert
> > >
> > > a mon avis le mieu serait de prendre le deuxième dataset et de lui
faire
> > > insérer autant de ligne qu'il y en a dans le premier et ensuite de
> copier
> > > les ligne une a une
> > >
> > > parce que j'ai regardé et je n'ai pas trouvé où dire à une datatable
que
> > > toutes ses ligne doivent être considérée en insert
> > >
> > > il faut aussi vérifier les données présente dans les dataset un


petit
> > > MoçnDataSet.WriteXLM(@"c:monfichier.xml") permettra d'écrire sur le
> > disque
> > > le dataset et de vérifier si tout est bon
> > >
> > > Sebastien
> > >
> > > "Gloup" > > > news:
> > > > Bonjours à tous.
> > > >
> > > > J'ai une application qui doit faire une petite synchro entre 2 DB,
une
> > en
> > > > ASA6 et l'autre en SQL Server 2000.
> > > > C'est la même table des 2 côtés avec exactement la même structure.
> > > > J'imaginais (naïvement) qu'il était possible de faire un machin du
> > genre:
> > > > ....
> > > > //prendre les données du côté SQL server
> > > > sqlDataAdapter1.Fill(dsSQL);
> > > >
> > > > //Faire un merge dans l'autre DataSet et faire un update
> > > > // en ASA6
> > > > dsASA.Merge(dsSQL.matable);
> > > > odbcDataAdapter1.Update(dsASA);
> > > > ....
> > > >
> > > > Je n'ai pas d'erreur, mais je n'ai absolument rien qui change dans
la
> DB
> > > ASA
> > > > 6. Le but du jeux est d'insérer des enregistrements du côté ASA


(la
> > table
> > > > est vide) en provenance de SQL Server sans faire de boucle.
> > > > Si quelqu'un a une idée sur la manière de faire, son aide sera


très
> > > > appréciée. Et dans l'affirmative, un update fonctionnerait-il
> > différemment
> > > > d'un insert?
> > > >
> > > > Merci à tous.
> > > >
> > > > JL
> > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>




Poster une réponse
Anonyme