bonjour,
je développe une appli qui me retourne des infos d'une Bdd sous sybase. ces
infos je les fait apparaître dans une datagrid et je les modifie.pour
retourner l'info dans la base sur un btn, j'y inscrit ds.AcceptChanges or
cela ne retourne pas l'info jusque la bdd.quelqu'un peut-il m'aider?
d'avance merci
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
Bruno Chassagne
Bonjour,
Lorsque vous appelez la méthode AcceptChanges() sur un DataSet, vous ne faites que valider les données qui y sont enfermées, un point c'est tout (toutes les DataRow en état Deleted, Updated, etc. sont définitivement mises à jour). Tout reste côté client, il n'y a strictement aucune communication avec la base de données à ce moment-là. Il faut garder en mémoire qu'un DataSet n'est rien d'autre qu'un cache de base de données, par définition déconnecté.
Pour mettre à jour la base de données, la solution la plus directe proposée par ADO.NET est de passer par un DataAdapter, qui peut se configurer via l'IDE en quelques clics de souris. C'est vraiment ce qu'il y a de plus simple, Visual Studio générant automatiquement les commandes INSERT, UPDATE, DELETE, etc.
L'autre solution est de parcourir manuellement toutes les DataRow du DataSet, et d'effectuer les opérations appropriées en fonction de l'état de chaque ligne. Cela doit donc se faire AVANT d'appeler la méthode AcceptChanges(). Par exemple, si une DataRow a l'état Updated, on appelera la méthode ExecuteNonQuery() sur un objet OdbcCommand comprenant une instruction SQL de type UPDATE.
Cordialement,
Bruno Chassagne
"Damien H." a écrit :
bonjour, je développe une appli qui me retourne des infos d'une Bdd sous sybase. ces infos je les fait apparaître dans une datagrid et je les modifie.pour retourner l'info dans la base sur un btn, j'y inscrit ds.AcceptChanges or cela ne retourne pas l'info jusque la bdd.quelqu'un peut-il m'aider? d'avance merci
Bonjour,
Lorsque vous appelez la méthode AcceptChanges() sur un DataSet, vous ne
faites que valider les données qui y sont enfermées, un point c'est tout
(toutes les DataRow en état Deleted, Updated, etc. sont définitivement mises
à jour). Tout reste côté client, il n'y a strictement aucune communication
avec la base de données à ce moment-là. Il faut garder en mémoire qu'un
DataSet n'est rien d'autre qu'un cache de base de données, par définition
déconnecté.
Pour mettre à jour la base de données, la solution la plus directe proposée
par ADO.NET est de passer par un DataAdapter, qui peut se configurer via
l'IDE en quelques clics de souris. C'est vraiment ce qu'il y a de plus
simple, Visual Studio générant automatiquement les commandes INSERT, UPDATE,
DELETE, etc.
L'autre solution est de parcourir manuellement toutes les DataRow du
DataSet, et d'effectuer les opérations appropriées en fonction de l'état de
chaque ligne. Cela doit donc se faire AVANT d'appeler la méthode
AcceptChanges(). Par exemple, si une DataRow a l'état Updated, on appelera la
méthode ExecuteNonQuery() sur un objet OdbcCommand comprenant une instruction
SQL de type UPDATE.
Cordialement,
Bruno Chassagne
"Damien H." a écrit :
bonjour,
je développe une appli qui me retourne des infos d'une Bdd sous sybase. ces
infos je les fait apparaître dans une datagrid et je les modifie.pour
retourner l'info dans la base sur un btn, j'y inscrit ds.AcceptChanges or
cela ne retourne pas l'info jusque la bdd.quelqu'un peut-il m'aider?
d'avance merci
Lorsque vous appelez la méthode AcceptChanges() sur un DataSet, vous ne faites que valider les données qui y sont enfermées, un point c'est tout (toutes les DataRow en état Deleted, Updated, etc. sont définitivement mises à jour). Tout reste côté client, il n'y a strictement aucune communication avec la base de données à ce moment-là. Il faut garder en mémoire qu'un DataSet n'est rien d'autre qu'un cache de base de données, par définition déconnecté.
Pour mettre à jour la base de données, la solution la plus directe proposée par ADO.NET est de passer par un DataAdapter, qui peut se configurer via l'IDE en quelques clics de souris. C'est vraiment ce qu'il y a de plus simple, Visual Studio générant automatiquement les commandes INSERT, UPDATE, DELETE, etc.
L'autre solution est de parcourir manuellement toutes les DataRow du DataSet, et d'effectuer les opérations appropriées en fonction de l'état de chaque ligne. Cela doit donc se faire AVANT d'appeler la méthode AcceptChanges(). Par exemple, si une DataRow a l'état Updated, on appelera la méthode ExecuteNonQuery() sur un objet OdbcCommand comprenant une instruction SQL de type UPDATE.
Cordialement,
Bruno Chassagne
"Damien H." a écrit :
bonjour, je développe une appli qui me retourne des infos d'une Bdd sous sybase. ces infos je les fait apparaître dans une datagrid et je les modifie.pour retourner l'info dans la base sur un btn, j'y inscrit ds.AcceptChanges or cela ne retourne pas l'info jusque la bdd.quelqu'un peut-il m'aider? d'avance merci
Damien H.
bonjour,
je suis entierement d'accord avec la premiere solution (celle que j'ai adopté d'ailleur) mais je dois avoir un pblm de synthaxe ... Mon code est le suivant: Private Sub Formulaire1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim cpt As Integer 'on initialise la connexion Cn = OleDbConnection1 Adapt = OleDbDataAdapter1 Affichage() End Sub Sub Affichage() Cmd = New OleDb.OleDbCommand Cmd.Connection = Cn Cmd.CommandText = ChaineSql 'on ratache cette commande à notre Sql Adapteur Adapt.SelectCommand = Cmd Ds = New DataSet Adapt.Fill(Ds, "TableX") DataGrid1.DataSource = Ds DataGrid1.DataMember = "TableX" Cmd = Nothing End Sub Private Sub BtnValiderEnregistr_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnValiderEnregistr.Click DataGrid1.Update() Ds.AcceptChanges() CmdBuild = New OleDb.OleDbCommandBuilder(Adapt) Adapt.Update(Ds, "ChoixPep") End Sub Pourriez-vous m'aider SVP Merci beaucoup
"Bruno Chassagne" wrote:
Bonjour,
Lorsque vous appelez la méthode AcceptChanges() sur un DataSet, vous ne faites que valider les données qui y sont enfermées, un point c'est tout (toutes les DataRow en état Deleted, Updated, etc. sont définitivement mises à jour). Tout reste côté client, il n'y a strictement aucune communication avec la base de données à ce moment-là. Il faut garder en mémoire qu'un DataSet n'est rien d'autre qu'un cache de base de données, par définition déconnecté.
Pour mettre à jour la base de données, la solution la plus directe proposée par ADO.NET est de passer par un DataAdapter, qui peut se configurer via l'IDE en quelques clics de souris. C'est vraiment ce qu'il y a de plus simple, Visual Studio générant automatiquement les commandes INSERT, UPDATE, DELETE, etc.
L'autre solution est de parcourir manuellement toutes les DataRow du DataSet, et d'effectuer les opérations appropriées en fonction de l'état de chaque ligne. Cela doit donc se faire AVANT d'appeler la méthode AcceptChanges(). Par exemple, si une DataRow a l'état Updated, on appelera la méthode ExecuteNonQuery() sur un objet OdbcCommand comprenant une instruction SQL de type UPDATE.
Cordialement,
Bruno Chassagne
"Damien H." a écrit :
> bonjour, > je développe une appli qui me retourne des infos d'une Bdd sous sybase. ces > infos je les fait apparaître dans une datagrid et je les modifie.pour > retourner l'info dans la base sur un btn, j'y inscrit ds.AcceptChanges or > cela ne retourne pas l'info jusque la bdd.quelqu'un peut-il m'aider? > d'avance merci
bonjour,
je suis entierement d'accord avec la premiere solution (celle que j'ai
adopté d'ailleur) mais je dois avoir un pblm de synthaxe ...
Mon code est le suivant:
Private Sub Formulaire1_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim cpt As Integer
'on initialise la connexion
Cn = OleDbConnection1
Adapt = OleDbDataAdapter1
Affichage()
End Sub
Sub Affichage()
Cmd = New OleDb.OleDbCommand
Cmd.Connection = Cn
Cmd.CommandText = ChaineSql
'on ratache cette commande à notre Sql Adapteur
Adapt.SelectCommand = Cmd
Ds = New DataSet
Adapt.Fill(Ds, "TableX")
DataGrid1.DataSource = Ds
DataGrid1.DataMember = "TableX"
Cmd = Nothing
End Sub
Private Sub BtnValiderEnregistr_Click_1(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles BtnValiderEnregistr.Click
DataGrid1.Update()
Ds.AcceptChanges()
CmdBuild = New OleDb.OleDbCommandBuilder(Adapt)
Adapt.Update(Ds, "ChoixPep")
End Sub
Pourriez-vous m'aider SVP
Merci beaucoup
"Bruno Chassagne" wrote:
Bonjour,
Lorsque vous appelez la méthode AcceptChanges() sur un DataSet, vous ne
faites que valider les données qui y sont enfermées, un point c'est tout
(toutes les DataRow en état Deleted, Updated, etc. sont définitivement mises
à jour). Tout reste côté client, il n'y a strictement aucune communication
avec la base de données à ce moment-là. Il faut garder en mémoire qu'un
DataSet n'est rien d'autre qu'un cache de base de données, par définition
déconnecté.
Pour mettre à jour la base de données, la solution la plus directe proposée
par ADO.NET est de passer par un DataAdapter, qui peut se configurer via
l'IDE en quelques clics de souris. C'est vraiment ce qu'il y a de plus
simple, Visual Studio générant automatiquement les commandes INSERT, UPDATE,
DELETE, etc.
L'autre solution est de parcourir manuellement toutes les DataRow du
DataSet, et d'effectuer les opérations appropriées en fonction de l'état de
chaque ligne. Cela doit donc se faire AVANT d'appeler la méthode
AcceptChanges(). Par exemple, si une DataRow a l'état Updated, on appelera la
méthode ExecuteNonQuery() sur un objet OdbcCommand comprenant une instruction
SQL de type UPDATE.
Cordialement,
Bruno Chassagne
"Damien H." a écrit :
> bonjour,
> je développe une appli qui me retourne des infos d'une Bdd sous sybase. ces
> infos je les fait apparaître dans une datagrid et je les modifie.pour
> retourner l'info dans la base sur un btn, j'y inscrit ds.AcceptChanges or
> cela ne retourne pas l'info jusque la bdd.quelqu'un peut-il m'aider?
> d'avance merci
je suis entierement d'accord avec la premiere solution (celle que j'ai adopté d'ailleur) mais je dois avoir un pblm de synthaxe ... Mon code est le suivant: Private Sub Formulaire1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim cpt As Integer 'on initialise la connexion Cn = OleDbConnection1 Adapt = OleDbDataAdapter1 Affichage() End Sub Sub Affichage() Cmd = New OleDb.OleDbCommand Cmd.Connection = Cn Cmd.CommandText = ChaineSql 'on ratache cette commande à notre Sql Adapteur Adapt.SelectCommand = Cmd Ds = New DataSet Adapt.Fill(Ds, "TableX") DataGrid1.DataSource = Ds DataGrid1.DataMember = "TableX" Cmd = Nothing End Sub Private Sub BtnValiderEnregistr_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnValiderEnregistr.Click DataGrid1.Update() Ds.AcceptChanges() CmdBuild = New OleDb.OleDbCommandBuilder(Adapt) Adapt.Update(Ds, "ChoixPep") End Sub Pourriez-vous m'aider SVP Merci beaucoup
"Bruno Chassagne" wrote:
Bonjour,
Lorsque vous appelez la méthode AcceptChanges() sur un DataSet, vous ne faites que valider les données qui y sont enfermées, un point c'est tout (toutes les DataRow en état Deleted, Updated, etc. sont définitivement mises à jour). Tout reste côté client, il n'y a strictement aucune communication avec la base de données à ce moment-là. Il faut garder en mémoire qu'un DataSet n'est rien d'autre qu'un cache de base de données, par définition déconnecté.
Pour mettre à jour la base de données, la solution la plus directe proposée par ADO.NET est de passer par un DataAdapter, qui peut se configurer via l'IDE en quelques clics de souris. C'est vraiment ce qu'il y a de plus simple, Visual Studio générant automatiquement les commandes INSERT, UPDATE, DELETE, etc.
L'autre solution est de parcourir manuellement toutes les DataRow du DataSet, et d'effectuer les opérations appropriées en fonction de l'état de chaque ligne. Cela doit donc se faire AVANT d'appeler la méthode AcceptChanges(). Par exemple, si une DataRow a l'état Updated, on appelera la méthode ExecuteNonQuery() sur un objet OdbcCommand comprenant une instruction SQL de type UPDATE.
Cordialement,
Bruno Chassagne
"Damien H." a écrit :
> bonjour, > je développe une appli qui me retourne des infos d'une Bdd sous sybase. ces > infos je les fait apparaître dans une datagrid et je les modifie.pour > retourner l'info dans la base sur un btn, j'y inscrit ds.AcceptChanges or > cela ne retourne pas l'info jusque la bdd.quelqu'un peut-il m'aider? > d'avance merci