Débutant : Modification du datagrid non répercutée sur la base Access
4 réponses
DP
Bonjour,
Quand je modifie une ligne de maon DataGrid par l'intarmédaire de controles
correspondants à chaque colonne de mon enregistrement, les modifications
apparaissent bien dans le DataGrid mais quand je relance l'application, elle
n'ont pas été enregistrées dans la bases Access sous-jacente. Je suppose que
c'est parceque je n'ai pas, en fait, modifié le DataSet. J'ai essayé cette
ligne :
Je n'ai pas la possibilité d'utiliser un SqlDataAdapter, probablement parcequ'il s'agit d'une base Access. J'ai essayé de modifier le code comme suit mais sans succès. Quant au lien, je le connaissait déjà mais je n'y ai pas trouvé la réponse à mes interrogations. Mal cherché? Pas compris? Peut-être les deux.
odaListeActes.SelectCommand = New OleDbCommand(strSql, MaConn)
objCB = New OleDbCommandBuilder(odaListeActes)
Me.odaListeActes.Update(dtsListeActes, strTable)
Bonjour,
Je n'ai pas la possibilité d'utiliser un SqlDataAdapter, probablement
parcequ'il s'agit d'une base Access.
J'ai essayé de modifier le code comme suit mais sans succès.
Quant au lien, je le connaissait déjà mais je n'y ai pas trouvé la réponse à
mes interrogations. Mal cherché? Pas compris? Peut-être les deux.
Je n'ai pas la possibilité d'utiliser un SqlDataAdapter, probablement parcequ'il s'agit d'une base Access. J'ai essayé de modifier le code comme suit mais sans succès. Quant au lien, je le connaissait déjà mais je n'y ai pas trouvé la réponse à mes interrogations. Mal cherché? Pas compris? Peut-être les deux.
odaListeActes.SelectCommand = New OleDbCommand(strSql, MaConn)
objCB = New OleDbCommandBuilder(odaListeActes)
Me.odaListeActes.Update(dtsListeActes, strTable)
Effectivement le SQlDataAdapter ne tourne qu'avec SQL SERVER ou MSDE cela dit on peut très facilement le remplacer par un oledbdatadapter sans avoir besoin de retaper tout le code il suffit de changer les première lettre c tout
si votre volonté c'est de charger un dataset dans une datagrid de modifier des cellules puis d'enregistrer les modifications dans la base pour les afficher ensuite alors ne vous compliquez pas la vie
faites un formulaire mettez trois bouton dessus et un datagrid
dans le designer dans la partie donnée de la boite a outil VStudio sélectionné le oledbdataadapter glissé le sur le formulaire et remplissez les question pour ouvrir la base access faite juste un select sur une table
ensuite clic bouton droit sur le dataadapter créer et choisir générer un groupe de donnée laissez dataset1 par défaut
cliquer sur la datagrid dans propriété choisissait datasource => dataSet11
datamember=> Le nom de la table (il va la proposer par défaut
activez le code clic sur le bouton 1 (en fait l'événement en double cliquant sur le bouton) appelez le bouton "chargement" dans la procédure saisissez
Me.oledbdataadapter1.fill(me.dataset11)
dans le bouton 2 pareil appezlez le "MISE A JOUR" et double cliquez dessus
dans la procédure saisir
Me.oledbDataadpter.Update(me.dataset11)
voilà allez regarder dans la table dans la base acces vous devriez voir les modification après pour ce qui est de mettre en majuscule ou encore de rentrer des donnéesx directement dans le dataset c'est autre chose mais il faut déjà avoir saisi ce que j'explique
Vous tapez vos modification directement dans la datagrid il n'y a pas besoin de passer par des textbox
De plus ce que vous êtes entrain de vouloir programmer ne reflète pas les problème de mise a jour mais plutot les problème de travail sur un dataset
si vous voulez ajouter une ligne à un dataset voilà la marche a suivre
dim dr as datarow
drÚtaset11.tables[0].newrow()
dr[0]= "un exemple" dr[1]3
..... pour toute les colonnes
dataset11.tables[0].rows.add(dr)
oledbdataadapter.update(dataset11)
vous trouverez tous les renseignement sur msdn Sebastien
"DP" a écrit dans le message de news:
Bonjour,
Je n'ai pas la possibilité d'utiliser un SqlDataAdapter, probablement parcequ'il s'agit d'une base Access. J'ai essayé de modifier le code comme suit mais sans succès. Quant au lien, je le connaissait déjà mais je n'y ai pas trouvé la réponse
à
mes interrogations. Mal cherché? Pas compris? Peut-être les deux.
odaListeActes.SelectCommand = New OleDbCommand(strSql, MaConn)
objCB = New OleDbCommandBuilder(odaListeActes)
Me.odaListeActes.Update(dtsListeActes, strTable)
Effectivement le SQlDataAdapter ne tourne qu'avec SQL SERVER ou MSDE cela
dit on peut très facilement le remplacer par un oledbdatadapter sans avoir
besoin de retaper tout le code il suffit de changer les première lettre c
tout
si votre volonté c'est de charger un dataset dans une datagrid de modifier
des cellules puis d'enregistrer les modifications dans la base pour les
afficher ensuite alors ne vous compliquez pas la vie
faites un formulaire mettez trois bouton dessus et un datagrid
dans le designer dans la partie donnée de la boite a outil VStudio
sélectionné le oledbdataadapter glissé le sur le formulaire et remplissez
les question pour ouvrir la base access faite juste un select sur une table
ensuite clic bouton droit sur le dataadapter créer et choisir générer un
groupe de donnée laissez dataset1 par défaut
cliquer sur la datagrid dans propriété choisissait datasource => dataSet11
datamember=> Le nom de la table (il va la proposer par défaut
activez le code clic sur le bouton 1 (en fait l'événement en double cliquant
sur le bouton)
appelez le bouton "chargement"
dans la procédure saisissez
Me.oledbdataadapter1.fill(me.dataset11)
dans le bouton 2 pareil appezlez le "MISE A JOUR" et double cliquez dessus
dans la procédure saisir
Me.oledbDataadpter.Update(me.dataset11)
voilà allez regarder dans la table dans la base acces vous devriez voir les
modification après pour ce qui est de mettre en majuscule ou encore de
rentrer des donnéesx directement dans le dataset c'est autre chose mais il
faut déjà avoir saisi ce que j'explique
Vous tapez vos modification directement dans la datagrid il n'y a pas besoin
de passer par des textbox
De plus ce que vous êtes entrain de vouloir programmer ne reflète pas les
problème de mise a jour mais plutot les problème de travail sur un dataset
si vous voulez ajouter une ligne à un dataset voilà la marche a suivre
dim dr as datarow
drÚtaset11.tables[0].newrow()
dr[0]= "un exemple"
dr[1]3
..... pour toute les colonnes
dataset11.tables[0].rows.add(dr)
oledbdataadapter.update(dataset11)
vous trouverez tous les renseignement sur msdn
Sebastien
"DP" <db3319nospam@serveurwanadoo.fr> a écrit dans le message de
news:eDwAAESgEHA.140@TK2MSFTNGP12.phx.gbl...
Bonjour,
Je n'ai pas la possibilité d'utiliser un SqlDataAdapter, probablement
parcequ'il s'agit d'une base Access.
J'ai essayé de modifier le code comme suit mais sans succès.
Quant au lien, je le connaissait déjà mais je n'y ai pas trouvé la réponse
à
mes interrogations. Mal cherché? Pas compris? Peut-être les deux.
Effectivement le SQlDataAdapter ne tourne qu'avec SQL SERVER ou MSDE cela dit on peut très facilement le remplacer par un oledbdatadapter sans avoir besoin de retaper tout le code il suffit de changer les première lettre c tout
si votre volonté c'est de charger un dataset dans une datagrid de modifier des cellules puis d'enregistrer les modifications dans la base pour les afficher ensuite alors ne vous compliquez pas la vie
faites un formulaire mettez trois bouton dessus et un datagrid
dans le designer dans la partie donnée de la boite a outil VStudio sélectionné le oledbdataadapter glissé le sur le formulaire et remplissez les question pour ouvrir la base access faite juste un select sur une table
ensuite clic bouton droit sur le dataadapter créer et choisir générer un groupe de donnée laissez dataset1 par défaut
cliquer sur la datagrid dans propriété choisissait datasource => dataSet11
datamember=> Le nom de la table (il va la proposer par défaut
activez le code clic sur le bouton 1 (en fait l'événement en double cliquant sur le bouton) appelez le bouton "chargement" dans la procédure saisissez
Me.oledbdataadapter1.fill(me.dataset11)
dans le bouton 2 pareil appezlez le "MISE A JOUR" et double cliquez dessus
dans la procédure saisir
Me.oledbDataadpter.Update(me.dataset11)
voilà allez regarder dans la table dans la base acces vous devriez voir les modification après pour ce qui est de mettre en majuscule ou encore de rentrer des donnéesx directement dans le dataset c'est autre chose mais il faut déjà avoir saisi ce que j'explique
Vous tapez vos modification directement dans la datagrid il n'y a pas besoin de passer par des textbox
De plus ce que vous êtes entrain de vouloir programmer ne reflète pas les problème de mise a jour mais plutot les problème de travail sur un dataset
si vous voulez ajouter une ligne à un dataset voilà la marche a suivre
dim dr as datarow
drÚtaset11.tables[0].newrow()
dr[0]= "un exemple" dr[1]3
..... pour toute les colonnes
dataset11.tables[0].rows.add(dr)
oledbdataadapter.update(dataset11)
vous trouverez tous les renseignement sur msdn Sebastien
"DP" a écrit dans le message de news:
Bonjour,
Je n'ai pas la possibilité d'utiliser un SqlDataAdapter, probablement parcequ'il s'agit d'une base Access. J'ai essayé de modifier le code comme suit mais sans succès. Quant au lien, je le connaissait déjà mais je n'y ai pas trouvé la réponse
à
mes interrogations. Mal cherché? Pas compris? Peut-être les deux.
odaListeActes.SelectCommand = New OleDbCommand(strSql, MaConn)
objCB = New OleDbCommandBuilder(odaListeActes)
Me.odaListeActes.Update(dtsListeActes, strTable)
DP
finalement, j'ai trouvé la solution. Je suis obligé de passer par du code car le choix de la table utilisée doit pouvoir être fait au début de l'application. Le choix de remplir le DataGrid par des textbox m'est imposé pour éviter de taper une date de façon répétitive. Enfin la fonction ajouter marche sans problème avec les TextBox. En fait, je travaillais sur le DataGrid et non sur le DataSet ce qui explique que ma bases Access n'étais pas mise à jour. Ca devrait passer en utilisant le DataRow.Item et en oubliant pas le BeginEdit et le EndEdit (je viens juste de comprendre l'intérêt de ces commandes :=) Je vais m'y remettre dans ce sens.
Merci de votre aide
finalement, j'ai trouvé la solution. Je suis obligé de passer par du code
car le choix de la table utilisée doit pouvoir être fait au début de
l'application.
Le choix de remplir le DataGrid par des textbox m'est imposé pour éviter de
taper une date de façon répétitive.
Enfin la fonction ajouter marche sans problème avec les TextBox.
En fait, je travaillais sur le DataGrid et non sur le DataSet ce qui
explique que ma bases Access n'étais pas mise à jour.
Ca devrait passer en utilisant le DataRow.Item et en oubliant pas le
BeginEdit et le EndEdit (je viens juste de comprendre l'intérêt de ces
commandes :=)
Je vais m'y remettre dans ce sens.
finalement, j'ai trouvé la solution. Je suis obligé de passer par du code car le choix de la table utilisée doit pouvoir être fait au début de l'application. Le choix de remplir le DataGrid par des textbox m'est imposé pour éviter de taper une date de façon répétitive. Enfin la fonction ajouter marche sans problème avec les TextBox. En fait, je travaillais sur le DataGrid et non sur le DataSet ce qui explique que ma bases Access n'étais pas mise à jour. Ca devrait passer en utilisant le DataRow.Item et en oubliant pas le BeginEdit et le EndEdit (je viens juste de comprendre l'intérêt de ces commandes :=) Je vais m'y remettre dans ce sens.