Comment rendre un DataTable ind�pendant de la source de donn�es ?
Je m'explique :
Je remplis un datatable avec dataadaptateur, ensuite je lie mon datagrid
avec le datatable
Tout est OK, je peux modifier les valeurs dans mon datagrid etc. OK tout va
bien
Je fais la m�me chose avec un datareader et l�, je ne peut plus modifier
dans le datagrid !!
Pourquoi ?
Puis-je contourner ce probl�me ?
Merci
Olivier
SQL serveur 2005/2008
.Net 2.0/3.0
L'utilisation d'un datareader n'est pas ce qu'il y a de mieux en raison
du mode exclusif g�n�r� sur l'objet connection sous-jacent. (Bon ceci
n'est que mon humble avis)
CF : http://msdn.microsoft.com/fr-fr/library/haa3afyz(VS.80).aspx
Pour ma part j'ai opt� pour un traitement diff�renci� pour chaque table
ou requete de ma base je d�fini un objet qui comporte un:
system.generic.collections.typeof(monobjet)
et un
Bindingcollections associ� (attention synchro des remove, add et clear)
Ce qui permet de g�rer les acc�s � la base avec des SELECT FROM... pour
remplir la liste. De lier les contr�le avec le bindingcollection
de faire des mise � jour ou autre avec une clause SQL.
Ceci permet de ma�triser l'acc�s � la BD le temps d'une fonction, de
lier facilement les donn�es � un ou des contr�les.
A+
olivier a �crit :
Je comprends pas ta r�ponse sur le DataReader. Pour lire les donn�es
d'une base, y'a que le Datareader de possible ?!
A moins que tu veuilles dire de ne pas lier un objet graphique avec le
Datareader directement.
--
Richard Clark
http://www.c2i.fr
Le 1er site .NET
Bon je suis pas un pro et j'ai pas VS2008 sous la main,
Mais de m�moire
Pour lire des donn�es
J'utilise un DataAdapter du style
Dim adapter As DataAdapter = New DataAdapter( _
queryString, connection)
un dataset
da.fill(ds)
ensuite j'obtient un datarow � partir de la table du dataset
puis j'affecte chaque row � un objet (que j'ajoute � ma collection )
Pour faire une mise � jour j'utilise le m�me proc�d� avec une requ�te UPDATE
En fait ce que je voulais signifier c'est que j'utilise en m�moire une
collection d'objet d�connect�s de la base et que seule l'utilisation des
fonction Lire(),Enregistre(), MAJ() Supprime() de mon objet (fonctions
bas�es sur le principe pr�c�dent) acc�de � la BD le temps de leur ex�cution.
Si je suis pas clair dis le je prendrais un exemple de code au bureau.
A+
C'est la solution la plus rapide, pas forcement la plus optimis�e.
De toutes fa�ons, le DataAdapter utilise en interne un DataReader.
Vanderghast, Access MVP
a+ et bonne journᅵe
vanderghast a prᅵsentᅵ l'ᅵnoncᅵ suivant :
> De toutes faᅵons, un DataReader, c'est du Read Only Forward Only (firehose),
> par 'dᅵfinition', on ne peut donc pas l'utiliser pour modifier les donnᅵes.
>
> Vanderghast, Access MVP