OVH Cloud OVH Cloud

SQLDataAdapter

4 réponses
Avatar
alan
Bonjour
Je souhaite faire un truc simple (mais uniquement par du code)
J'ai un datagrid, un SqlConnection , un SqlCommand, un SqlDataAdapter, un
SqlCommandBuiler , un DataSet et un DataTable.
Je détourne l'évenement datatable.RowChanged, pour essayer de refleter
immédiatement dans ma base de données SQL toute modification effectuée dans
ma grille.
Si j'effectue une insertion, puis une mise à jour dans ma grille, j'ai
l'erreur 'Violation de l'accès concurrentiel'... Et ma mise à jour ne se fait
pas... D'autant plus que mes insertion ne se font pas tout de suite, malgré
l'appel de DataAdapter.Update... Comment faire????
Merci d'avance

4 réponses

Avatar
RAVAILLE James
Bonjour,

Voici un article dans le MSDN nomlmé 'Gestion des erreurs d'accès
concurrentiel' qui pourra te permettre de résoudre ton problème :
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/vbcon/html/vbtskcatchingconcurrencyerror.asp

De manière plus générale 'Contrôle d'accès concurrentiel dans ADO.NET' :
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/vbcon/html/vboridataupdatesconcurrency.asp

As-tu lu ces articles ? Peuvent-ils t'ade à résoudre ton pb ? Sinon, peux-tu
fournir ton code afin que je puisse jeter un coup d'oeil...

Cordialement,

--
James RAVAILLE.
MCAD .NET et MCT .NET
http://www.certifdotnet.com


"alan" a écrit :

Bonjour
Je souhaite faire un truc simple (mais uniquement par du code)
J'ai un datagrid, un SqlConnection , un SqlCommand, un SqlDataAdapter, un
SqlCommandBuiler , un DataSet et un DataTable.
Je détourne l'évenement datatable.RowChanged, pour essayer de refleter
immédiatement dans ma base de données SQL toute modification effectuée dans
ma grille.
Si j'effectue une insertion, puis une mise à jour dans ma grille, j'ai
l'erreur 'Violation de l'accès concurrentiel'... Et ma mise à jour ne se fait
pas... D'autant plus que mes insertion ne se font pas tout de suite, malgré
l'appel de DataAdapter.Update... Comment faire????
Merci d'avance


Avatar
Ambassadeur Kosh
> l'appel de DataAdapter.Update... Comment faire????



du mode deconnecté pour de vrai.
sinon, s'appuyer sur la grille, chopper l'evenement "changed" et faire
l'update.
donc, pas à partir du rowchanged (d'ou ton souci)
Avatar
alan
Merci pour cette eclaircissante réponse... Le problème vient en fait du
SQLCommandBuilder : il ne génère pas les commandes re rafraichissement...
Donc mon Dataset ne reflète pas les modifications exactes de la base de
données.
(ex: UPDATE MaTable SET Col1 = @P1 WHERE MaClePrimaire = @P2 ; SELECT Col1
FROM MaTable WHERE MaClePrimaire = @P2 )
Si quelqu'un sait comment forcer le sqlCommandBuildera créer le SELECT

"RAVAILLE James" a écrit :

Bonjour,

Voici un article dans le MSDN nomlmé 'Gestion des erreurs d'accès
concurrentiel' qui pourra te permettre de résoudre ton problème :
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/vbcon/html/vbtskcatchingconcurrencyerror.asp

De manière plus générale 'Contrôle d'accès concurrentiel dans ADO.NET' :
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/vbcon/html/vboridataupdatesconcurrency.asp

As-tu lu ces articles ? Peuvent-ils t'ade à résoudre ton pb ? Sinon, peux-tu
fournir ton code afin que je puisse jeter un coup d'oeil...

Cordialement,

--
James RAVAILLE.
MCAD .NET et MCT .NET
http://www.certifdotnet.com


"alan" a écrit :

> Bonjour
> Je souhaite faire un truc simple (mais uniquement par du code)
> J'ai un datagrid, un SqlConnection , un SqlCommand, un SqlDataAdapter, un
> SqlCommandBuiler , un DataSet et un DataTable.
> Je détourne l'évenement datatable.RowChanged, pour essayer de refleter
> immédiatement dans ma base de données SQL toute modification effectuée dans
> ma grille.
> Si j'effectue une insertion, puis une mise à jour dans ma grille, j'ai
> l'erreur 'Violation de l'accès concurrentiel'... Et ma mise à jour ne se fait
> pas... D'autant plus que mes insertion ne se font pas tout de suite, malgré
> l'appel de DataAdapter.Update... Comment faire????
> Merci d'avance


Avatar
RAVAILLE James
De rien...

Cordialement,

--
James RAVAILLE.
MCAD .NET et MCT .NET
http://www.certifdotnet.com


"alan" a écrit :

Merci pour cette eclaircissante réponse... Le problème vient en fait du
SQLCommandBuilder : il ne génère pas les commandes re rafraichissement...
Donc mon Dataset ne reflète pas les modifications exactes de la base de
données.
(ex: UPDATE MaTable SET Col1 = @P1 WHERE MaClePrimaire = @P2 ; SELECT Col1
FROM MaTable WHERE MaClePrimaire = @P2 )
Si quelqu'un sait comment forcer le sqlCommandBuildera créer le SELECT

"RAVAILLE James" a écrit :

> Bonjour,
>
> Voici un article dans le MSDN nomlmé 'Gestion des erreurs d'accès
> concurrentiel' qui pourra te permettre de résoudre ton problème :
> http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/vbcon/html/vbtskcatchingconcurrencyerror.asp
>
> De manière plus générale 'Contrôle d'accès concurrentiel dans ADO.NET' :
> http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/vbcon/html/vboridataupdatesconcurrency.asp
>
> As-tu lu ces articles ? Peuvent-ils t'ade à résoudre ton pb ? Sinon, peux-tu
> fournir ton code afin que je puisse jeter un coup d'oeil...
>
> Cordialement,
>
> --
> James RAVAILLE.
> MCAD .NET et MCT .NET
> http://www.certifdotnet.com
>
>
> "alan" a écrit :
>
> > Bonjour
> > Je souhaite faire un truc simple (mais uniquement par du code)
> > J'ai un datagrid, un SqlConnection , un SqlCommand, un SqlDataAdapter, un
> > SqlCommandBuiler , un DataSet et un DataTable.
> > Je détourne l'évenement datatable.RowChanged, pour essayer de refleter
> > immédiatement dans ma base de données SQL toute modification effectuée dans
> > ma grille.
> > Si j'effectue une insertion, puis une mise à jour dans ma grille, j'ai
> > l'erreur 'Violation de l'accès concurrentiel'... Et ma mise à jour ne se fait
> > pas... D'autant plus que mes insertion ne se font pas tout de suite, malgré
> > l'appel de DataAdapter.Update... Comment faire????
> > Merci d'avance