Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

DataSet

5 réponses
Avatar
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

5 réponses

Avatar
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" a écrit dans le message de
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





Avatar
Gloup
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

a écrit dans le message de news:
#
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" a écrit dans le message de
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
>
>
>




Avatar
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" a écrit dans le message de
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

a écrit dans le message de news:
#
> 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" a écrit dans le message de
> 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
> >
> >
> >
>
>




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

Merci

JLE

a écrit dans le message de news:

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" a écrit dans le message de
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
>
> a écrit dans le message de news:
> #
> > 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" a écrit dans le message de
> > 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
> > >
> > >
> > >
> >
> >
>
>




Avatar
ah vi j'avais pas vu dsl

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

Merci

JLE

a écrit dans le message de news:

> 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" a écrit dans le message de
> 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
> >
> > a écrit dans le message de news:
> > #
> > > 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" a écrit dans le message de
> > > 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
> > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>