Comment rendre un DataTable indépendant de la source de données ?
6 réponses
olivier
Bonjour,
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 !!
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
ChC2B
Bonjour,
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 :
Bonjour,
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
Bonjour,
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 :
Bonjour,
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 !!
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 :
Bonjour,
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
Richard Clark
ChC2B a écrit :
Bonjour,
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 :
Bonjour,
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
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
ChC2B a écrit :
Bonjour,
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 :
Bonjour,
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
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
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 :
Bonjour,
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
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
ChC2B
Bonjour,
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+
Bonjour,
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.
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+
Richard Clark
ChC2B a écrit :
Bonjour,
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.
-- Richard Clark http://www.c2i.fr Le 1er site .NET
ChC2B a écrit :
Bonjour,
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.
--
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.
-- Richard Clark http://www.c2i.fr Le 1er site .NET
vanderghast
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
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.
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
eddymaue
Ca fait du sens DataReader = lecteur de données ;-)
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
Ca fait du sens DataReader = lecteur de données ;-)
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.
Ca fait du sens DataReader = lecteur de données ;-)
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.