Cela fait 1 mois maintenant que je me heurte au même problème et je trouve
pas... J'ais déjà posé plusieurs question sur mon problème mais sans filer
mon code parce ke ca me parraissait un peu compliqué... Mais la j'ai plus le
choix.
Le problème simplifié:
j'ai un tabcontrol avec 2 tabpages et 1 datagrid sur chaque tabpage.
j'ai sur chaque datagrid, un lien vers deux dataview différent issues de
deux dataset différent (et les dataset sont lié à un datatable)
Pour simplifier et reproduire mon problème, les deux datasets sont issues de
la même interrogation sur la même table.
au démarrage de ma form contenant les deux datagrid, je rempli ces deux
datagrids avec les dataview issues des dataset (fonction ci-dessous)
L'utilisateur fait une modification sur un enregistrement du premier
datagrid.
j'utilise l'évènement du datatable du datagrid "rowchanging". a cet endroit,
je me contente de modifier ma base de données (update table set
champs="jkljlk" where ...) avec le "e.row" et c'est tout.
Par la suite, si l'utilisateur change de tabpages, je reconstruit le
dataview du datagrid de la manière suivante:
FONCTION DE CONSTRUCTION DU 1er DATAGRID (le 2ème DATAGRID utilise
dataset2, dataview2, datatable2)
Dim dbAdaptr As System.Data.OleDb.OleDbDataAdapter = New
System.Data.OleDb.OleDbDataAdapter()
With dbAdaptr
If Not Dataset1 Is Nothing Then Me.Dataset1.Dispose()
Dataset1 = New DataSet("ds")
Dim SQLStr As String = "Select numero,nom,prenom from tab"
.TableMappings.Add("Table", "contact")
Dim cmd As System.Data.OleDb.OleDbCommand = New
System.Data.OleDb.OleDbCommand(SQLStr, cn) : cmd.CommandType =
CommandType.Text
.SelectCommand = cmd : .Fill(Dataset1)
Dataset1.Tables("contact").AcceptChanges() : Datatable1 =
Dataset1.Tables("contact")
.Dispose()
End With
Dataview1 = Dataset1.Tables("contact").DefaultView :
Datagrid1.DataSource = Dataview1
Datagrid1.DataSource = Dataview1
Datagrid1.refresh
Mon problème, quand je reconstruit le second datagrid, le datagrid ne
reflète pas la modification (alors que la base de données contient bien la
modification au moment de la construction)
C'est comme si le dataset n'était pas vidé et qu'il restait le même.
Voila, si kelk'un pouvait m'aider, ca serait vraimment super
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
LEBRUN Thomas
Après
Datagrid1.refresh
essaye un
Dataset1.Dispose()
Car, si les changements sont bien dans la base, c'est que ton dataset ne récupère pas les bonnes valeurs (étant donné que tout par du dataset)
-- LEBRUN Thomas MCP Visual C# (70-316)
"Sylo" a écrit :
Bonjour,
Cela fait 1 mois maintenant que je me heurte au même problème et je trouve pas... J'ais déjà posé plusieurs question sur mon problème mais sans filer mon code parce ke ca me parraissait un peu compliqué... Mais la j'ai plus le choix.
Le problème simplifié: j'ai un tabcontrol avec 2 tabpages et 1 datagrid sur chaque tabpage. j'ai sur chaque datagrid, un lien vers deux dataview différent issues de deux dataset différent (et les dataset sont lié à un datatable) Pour simplifier et reproduire mon problème, les deux datasets sont issues de la même interrogation sur la même table.
au démarrage de ma form contenant les deux datagrid, je rempli ces deux datagrids avec les dataview issues des dataset (fonction ci-dessous) L'utilisateur fait une modification sur un enregistrement du premier datagrid. j'utilise l'évènement du datatable du datagrid "rowchanging". a cet endroit, je me contente de modifier ma base de données (update table set champs="jkljlk" where ...) avec le "e.row" et c'est tout. Par la suite, si l'utilisateur change de tabpages, je reconstruit le dataview du datagrid de la manière suivante:
FONCTION DE CONSTRUCTION DU 1er DATAGRID (le 2ème DATAGRID utilise dataset2, dataview2, datatable2)
Dim dbAdaptr As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter() With dbAdaptr If Not Dataset1 Is Nothing Then Me.Dataset1.Dispose() Dataset1 = New DataSet("ds") Dim SQLStr As String = "Select numero,nom,prenom from tab" .TableMappings.Add("Table", "contact") Dim cmd As System.Data.OleDb.OleDbCommand = New System.Data.OleDb.OleDbCommand(SQLStr, cn) : cmd.CommandType > CommandType.Text .SelectCommand = cmd : .Fill(Dataset1) Dataset1.Tables("contact").AcceptChanges() : Datatable1 > Dataset1.Tables("contact") .Dispose() End With Dataview1 = Dataset1.Tables("contact").DefaultView : Datagrid1.DataSource = Dataview1 Datagrid1.DataSource = Dataview1 Datagrid1.refresh
Mon problème, quand je reconstruit le second datagrid, le datagrid ne reflète pas la modification (alors que la base de données contient bien la modification au moment de la construction)
C'est comme si le dataset n'était pas vidé et qu'il restait le même.
Voila, si kelk'un pouvait m'aider, ca serait vraimment super
Sylo
Après
Datagrid1.refresh
essaye un
Dataset1.Dispose()
Car, si les changements sont bien dans la base, c'est que ton dataset ne récupère pas les bonnes valeurs (étant donné que tout par du dataset)
--
LEBRUN Thomas
MCP Visual C# (70-316)
"Sylo" a écrit :
Bonjour,
Cela fait 1 mois maintenant que je me heurte au même problème et je trouve
pas... J'ais déjà posé plusieurs question sur mon problème mais sans filer
mon code parce ke ca me parraissait un peu compliqué... Mais la j'ai plus le
choix.
Le problème simplifié:
j'ai un tabcontrol avec 2 tabpages et 1 datagrid sur chaque tabpage.
j'ai sur chaque datagrid, un lien vers deux dataview différent issues de
deux dataset différent (et les dataset sont lié à un datatable)
Pour simplifier et reproduire mon problème, les deux datasets sont issues de
la même interrogation sur la même table.
au démarrage de ma form contenant les deux datagrid, je rempli ces deux
datagrids avec les dataview issues des dataset (fonction ci-dessous)
L'utilisateur fait une modification sur un enregistrement du premier
datagrid.
j'utilise l'évènement du datatable du datagrid "rowchanging". a cet endroit,
je me contente de modifier ma base de données (update table set
champs="jkljlk" where ...) avec le "e.row" et c'est tout.
Par la suite, si l'utilisateur change de tabpages, je reconstruit le
dataview du datagrid de la manière suivante:
FONCTION DE CONSTRUCTION DU 1er DATAGRID (le 2ème DATAGRID utilise
dataset2, dataview2, datatable2)
Dim dbAdaptr As System.Data.OleDb.OleDbDataAdapter = New
System.Data.OleDb.OleDbDataAdapter()
With dbAdaptr
If Not Dataset1 Is Nothing Then Me.Dataset1.Dispose()
Dataset1 = New DataSet("ds")
Dim SQLStr As String = "Select numero,nom,prenom from tab"
.TableMappings.Add("Table", "contact")
Dim cmd As System.Data.OleDb.OleDbCommand = New
System.Data.OleDb.OleDbCommand(SQLStr, cn) : cmd.CommandType > CommandType.Text
.SelectCommand = cmd : .Fill(Dataset1)
Dataset1.Tables("contact").AcceptChanges() : Datatable1 > Dataset1.Tables("contact")
.Dispose()
End With
Dataview1 = Dataset1.Tables("contact").DefaultView :
Datagrid1.DataSource = Dataview1
Datagrid1.DataSource = Dataview1
Datagrid1.refresh
Mon problème, quand je reconstruit le second datagrid, le datagrid ne
reflète pas la modification (alors que la base de données contient bien la
modification au moment de la construction)
C'est comme si le dataset n'était pas vidé et qu'il restait le même.
Voila, si kelk'un pouvait m'aider, ca serait vraimment super
Car, si les changements sont bien dans la base, c'est que ton dataset ne récupère pas les bonnes valeurs (étant donné que tout par du dataset)
-- LEBRUN Thomas MCP Visual C# (70-316)
"Sylo" a écrit :
Bonjour,
Cela fait 1 mois maintenant que je me heurte au même problème et je trouve pas... J'ais déjà posé plusieurs question sur mon problème mais sans filer mon code parce ke ca me parraissait un peu compliqué... Mais la j'ai plus le choix.
Le problème simplifié: j'ai un tabcontrol avec 2 tabpages et 1 datagrid sur chaque tabpage. j'ai sur chaque datagrid, un lien vers deux dataview différent issues de deux dataset différent (et les dataset sont lié à un datatable) Pour simplifier et reproduire mon problème, les deux datasets sont issues de la même interrogation sur la même table.
au démarrage de ma form contenant les deux datagrid, je rempli ces deux datagrids avec les dataview issues des dataset (fonction ci-dessous) L'utilisateur fait une modification sur un enregistrement du premier datagrid. j'utilise l'évènement du datatable du datagrid "rowchanging". a cet endroit, je me contente de modifier ma base de données (update table set champs="jkljlk" where ...) avec le "e.row" et c'est tout. Par la suite, si l'utilisateur change de tabpages, je reconstruit le dataview du datagrid de la manière suivante:
FONCTION DE CONSTRUCTION DU 1er DATAGRID (le 2ème DATAGRID utilise dataset2, dataview2, datatable2)
Dim dbAdaptr As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter() With dbAdaptr If Not Dataset1 Is Nothing Then Me.Dataset1.Dispose() Dataset1 = New DataSet("ds") Dim SQLStr As String = "Select numero,nom,prenom from tab" .TableMappings.Add("Table", "contact") Dim cmd As System.Data.OleDb.OleDbCommand = New System.Data.OleDb.OleDbCommand(SQLStr, cn) : cmd.CommandType > CommandType.Text .SelectCommand = cmd : .Fill(Dataset1) Dataset1.Tables("contact").AcceptChanges() : Datatable1 > Dataset1.Tables("contact") .Dispose() End With Dataview1 = Dataset1.Tables("contact").DefaultView : Datagrid1.DataSource = Dataview1 Datagrid1.DataSource = Dataview1 Datagrid1.refresh
Mon problème, quand je reconstruit le second datagrid, le datagrid ne reflète pas la modification (alors que la base de données contient bien la modification au moment de la construction)
C'est comme si le dataset n'était pas vidé et qu'il restait le même.
Voila, si kelk'un pouvait m'aider, ca serait vraimment super
Sylo
Sylo
Mais le datset.dispose va me détruire le dataset en cours et je vais me retrouver avec NOTHING dans mon datagrid, non ? Dois-je le remplir a nouveau aprés ? Merci
"LEBRUN Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de news:
Après
Datagrid1.refresh
essaye un
Dataset1.Dispose()
Car, si les changements sont bien dans la base, c'est que ton dataset ne
récupère pas les bonnes valeurs (étant donné que tout par du dataset)
-- LEBRUN Thomas MCP Visual C# (70-316)
"Sylo" a écrit :
> Bonjour, > > Cela fait 1 mois maintenant que je me heurte au même problème et je
trouve
> pas... J'ais déjà posé plusieurs question sur mon problème mais sans
filer
> mon code parce ke ca me parraissait un peu compliqué... Mais la j'ai
plus le
> choix. > > Le problème simplifié: > j'ai un tabcontrol avec 2 tabpages et 1 datagrid sur chaque tabpage. > j'ai sur chaque datagrid, un lien vers deux dataview différent issues de > deux dataset différent (et les dataset sont lié à un datatable) > Pour simplifier et reproduire mon problème, les deux datasets sont
issues de
> la même interrogation sur la même table. > > au démarrage de ma form contenant les deux datagrid, je rempli ces deux > datagrids avec les dataview issues des dataset (fonction ci-dessous) > L'utilisateur fait une modification sur un enregistrement du premier > datagrid. > j'utilise l'évènement du datatable du datagrid "rowchanging". a cet
endroit,
> je me contente de modifier ma base de données (update table set > champs="jkljlk" where ...) avec le "e.row" et c'est tout. > Par la suite, si l'utilisateur change de tabpages, je reconstruit le > dataview du datagrid de la manière suivante: > > > FONCTION DE CONSTRUCTION DU 1er DATAGRID (le 2ème DATAGRID
utilise
> dataset2, dataview2, datatable2) > > Dim dbAdaptr As System.Data.OleDb.OleDbDataAdapter = New > System.Data.OleDb.OleDbDataAdapter() > With dbAdaptr > If Not Dataset1 Is Nothing Then Me.Dataset1.Dispose() > Dataset1 = New DataSet("ds") > Dim SQLStr As String = "Select numero,nom,prenom from
tab"
> .TableMappings.Add("Table", "contact") > Dim cmd As System.Data.OleDb.OleDbCommand = New > System.Data.OleDb.OleDbCommand(SQLStr, cn) : cmd.CommandType > > CommandType.Text > .SelectCommand = cmd : .Fill(Dataset1) > Dataset1.Tables("contact").AcceptChanges() : Datatable1
> > Dataset1.Tables("contact")
> .Dispose() > End With > Dataview1 = Dataset1.Tables("contact").DefaultView : > Datagrid1.DataSource = Dataview1 > Datagrid1.DataSource = Dataview1 > Datagrid1.refresh > > > > Mon problème, quand je reconstruit le second datagrid, le datagrid ne > reflète pas la modification (alors que la base de données contient bien
la
> modification au moment de la construction) > > C'est comme si le dataset n'était pas vidé et qu'il restait le même. > > > > Voila, si kelk'un pouvait m'aider, ca serait vraimment super > > > > Sylo > > > > > > >
Mais le datset.dispose va me détruire le dataset en cours et je vais me
retrouver avec NOTHING dans mon datagrid, non ? Dois-je le remplir a nouveau
aprés ?
Merci
"LEBRUN Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de
news:A505E84B-DEE4-4B7F-89FA-BA4BE1946D57@microsoft.com...
Après
Datagrid1.refresh
essaye un
Dataset1.Dispose()
Car, si les changements sont bien dans la base, c'est que ton dataset ne
récupère pas les bonnes valeurs (étant donné que tout par du dataset)
--
LEBRUN Thomas
MCP Visual C# (70-316)
"Sylo" a écrit :
> Bonjour,
>
> Cela fait 1 mois maintenant que je me heurte au même problème et je
trouve
> pas... J'ais déjà posé plusieurs question sur mon problème mais sans
filer
> mon code parce ke ca me parraissait un peu compliqué... Mais la j'ai
plus le
> choix.
>
> Le problème simplifié:
> j'ai un tabcontrol avec 2 tabpages et 1 datagrid sur chaque tabpage.
> j'ai sur chaque datagrid, un lien vers deux dataview différent issues de
> deux dataset différent (et les dataset sont lié à un datatable)
> Pour simplifier et reproduire mon problème, les deux datasets sont
issues de
> la même interrogation sur la même table.
>
> au démarrage de ma form contenant les deux datagrid, je rempli ces deux
> datagrids avec les dataview issues des dataset (fonction ci-dessous)
> L'utilisateur fait une modification sur un enregistrement du premier
> datagrid.
> j'utilise l'évènement du datatable du datagrid "rowchanging". a cet
endroit,
> je me contente de modifier ma base de données (update table set
> champs="jkljlk" where ...) avec le "e.row" et c'est tout.
> Par la suite, si l'utilisateur change de tabpages, je reconstruit le
> dataview du datagrid de la manière suivante:
>
>
> FONCTION DE CONSTRUCTION DU 1er DATAGRID (le 2ème DATAGRID
utilise
> dataset2, dataview2, datatable2)
>
> Dim dbAdaptr As System.Data.OleDb.OleDbDataAdapter = New
> System.Data.OleDb.OleDbDataAdapter()
> With dbAdaptr
> If Not Dataset1 Is Nothing Then Me.Dataset1.Dispose()
> Dataset1 = New DataSet("ds")
> Dim SQLStr As String = "Select numero,nom,prenom from
tab"
> .TableMappings.Add("Table", "contact")
> Dim cmd As System.Data.OleDb.OleDbCommand = New
> System.Data.OleDb.OleDbCommand(SQLStr, cn) : cmd.CommandType > > CommandType.Text
> .SelectCommand = cmd : .Fill(Dataset1)
> Dataset1.Tables("contact").AcceptChanges() : Datatable1
> > Dataset1.Tables("contact")
> .Dispose()
> End With
> Dataview1 = Dataset1.Tables("contact").DefaultView :
> Datagrid1.DataSource = Dataview1
> Datagrid1.DataSource = Dataview1
> Datagrid1.refresh
>
>
>
> Mon problème, quand je reconstruit le second datagrid, le datagrid ne
> reflète pas la modification (alors que la base de données contient bien
la
> modification au moment de la construction)
>
> C'est comme si le dataset n'était pas vidé et qu'il restait le même.
>
>
>
> Voila, si kelk'un pouvait m'aider, ca serait vraimment super
>
>
>
> Sylo
>
>
>
>
>
>
>
Mais le datset.dispose va me détruire le dataset en cours et je vais me retrouver avec NOTHING dans mon datagrid, non ? Dois-je le remplir a nouveau aprés ? Merci
"LEBRUN Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de news:
Après
Datagrid1.refresh
essaye un
Dataset1.Dispose()
Car, si les changements sont bien dans la base, c'est que ton dataset ne
récupère pas les bonnes valeurs (étant donné que tout par du dataset)
-- LEBRUN Thomas MCP Visual C# (70-316)
"Sylo" a écrit :
> Bonjour, > > Cela fait 1 mois maintenant que je me heurte au même problème et je
trouve
> pas... J'ais déjà posé plusieurs question sur mon problème mais sans
filer
> mon code parce ke ca me parraissait un peu compliqué... Mais la j'ai
plus le
> choix. > > Le problème simplifié: > j'ai un tabcontrol avec 2 tabpages et 1 datagrid sur chaque tabpage. > j'ai sur chaque datagrid, un lien vers deux dataview différent issues de > deux dataset différent (et les dataset sont lié à un datatable) > Pour simplifier et reproduire mon problème, les deux datasets sont
issues de
> la même interrogation sur la même table. > > au démarrage de ma form contenant les deux datagrid, je rempli ces deux > datagrids avec les dataview issues des dataset (fonction ci-dessous) > L'utilisateur fait une modification sur un enregistrement du premier > datagrid. > j'utilise l'évènement du datatable du datagrid "rowchanging". a cet
endroit,
> je me contente de modifier ma base de données (update table set > champs="jkljlk" where ...) avec le "e.row" et c'est tout. > Par la suite, si l'utilisateur change de tabpages, je reconstruit le > dataview du datagrid de la manière suivante: > > > FONCTION DE CONSTRUCTION DU 1er DATAGRID (le 2ème DATAGRID
utilise
> dataset2, dataview2, datatable2) > > Dim dbAdaptr As System.Data.OleDb.OleDbDataAdapter = New > System.Data.OleDb.OleDbDataAdapter() > With dbAdaptr > If Not Dataset1 Is Nothing Then Me.Dataset1.Dispose() > Dataset1 = New DataSet("ds") > Dim SQLStr As String = "Select numero,nom,prenom from
tab"
> .TableMappings.Add("Table", "contact") > Dim cmd As System.Data.OleDb.OleDbCommand = New > System.Data.OleDb.OleDbCommand(SQLStr, cn) : cmd.CommandType > > CommandType.Text > .SelectCommand = cmd : .Fill(Dataset1) > Dataset1.Tables("contact").AcceptChanges() : Datatable1
> > Dataset1.Tables("contact")
> .Dispose() > End With > Dataview1 = Dataset1.Tables("contact").DefaultView : > Datagrid1.DataSource = Dataview1 > Datagrid1.DataSource = Dataview1 > Datagrid1.refresh > > > > Mon problème, quand je reconstruit le second datagrid, le datagrid ne > reflète pas la modification (alors que la base de données contient bien
la
> modification au moment de la construction) > > C'est comme si le dataset n'était pas vidé et qu'il restait le même. > > > > Voila, si kelk'un pouvait m'aider, ca serait vraimment super > > > > Sylo > > > > > > >
LEBRUN Thomas
Arf, suis trop bête : c'est ca d'aller trop vite :
Si j'ai bien compris, il faudrait que tu relances la contruction de tes tdatagrid après chaque modifications sur l'un deux : ainsi, la requête SQL de MAJ est executé et tu datagrid récupèrera les nouveaux changements.
-- LEBRUN Thomas MCP Visual C# (70-316)
"Sylo" a écrit :
Mais le datset.dispose va me détruire le dataset en cours et je vais me retrouver avec NOTHING dans mon datagrid, non ? Dois-je le remplir a nouveau aprés ? Merci
"LEBRUN Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de news: > Après > > Datagrid1.refresh > > essaye un > > Dataset1.Dispose() > > Car, si les changements sont bien dans la base, c'est que ton dataset ne récupère pas les bonnes valeurs (étant donné que tout par du dataset) > > -- > LEBRUN Thomas > MCP Visual C# (70-316) > > > "Sylo" a écrit : > > > Bonjour, > > > > Cela fait 1 mois maintenant que je me heurte au même problème et je trouve > > pas... J'ais déjà posé plusieurs question sur mon problème mais sans filer > > mon code parce ke ca me parraissait un peu compliqué... Mais la j'ai plus le > > choix. > > > > Le problème simplifié: > > j'ai un tabcontrol avec 2 tabpages et 1 datagrid sur chaque tabpage. > > j'ai sur chaque datagrid, un lien vers deux dataview différent issues de > > deux dataset différent (et les dataset sont lié à un datatable) > > Pour simplifier et reproduire mon problème, les deux datasets sont issues de > > la même interrogation sur la même table. > > > > au démarrage de ma form contenant les deux datagrid, je rempli ces deux > > datagrids avec les dataview issues des dataset (fonction ci-dessous) > > L'utilisateur fait une modification sur un enregistrement du premier > > datagrid. > > j'utilise l'évènement du datatable du datagrid "rowchanging". a cet endroit, > > je me contente de modifier ma base de données (update table set > > champs="jkljlk" where ...) avec le "e.row" et c'est tout. > > Par la suite, si l'utilisateur change de tabpages, je reconstruit le > > dataview du datagrid de la manière suivante: > > > > > > FONCTION DE CONSTRUCTION DU 1er DATAGRID (le 2ème DATAGRID utilise > > dataset2, dataview2, datatable2) > > > > Dim dbAdaptr As System.Data.OleDb.OleDbDataAdapter = New > > System.Data.OleDb.OleDbDataAdapter() > > With dbAdaptr > > If Not Dataset1 Is Nothing Then Me.Dataset1.Dispose() > > Dataset1 = New DataSet("ds") > > Dim SQLStr As String = "Select numero,nom,prenom from tab" > > .TableMappings.Add("Table", "contact") > > Dim cmd As System.Data.OleDb.OleDbCommand = New > > System.Data.OleDb.OleDbCommand(SQLStr, cn) : cmd.CommandType > > > CommandType.Text > > .SelectCommand = cmd : .Fill(Dataset1) > > Dataset1.Tables("contact").AcceptChanges() : Datatable1 > > > Dataset1.Tables("contact") > > .Dispose() > > End With > > Dataview1 = Dataset1.Tables("contact").DefaultView : > > Datagrid1.DataSource = Dataview1 > > Datagrid1.DataSource = Dataview1 > > Datagrid1.refresh > > > > > > > > Mon problème, quand je reconstruit le second datagrid, le datagrid ne > > reflète pas la modification (alors que la base de données contient bien la > > modification au moment de la construction) > > > > C'est comme si le dataset n'était pas vidé et qu'il restait le même. > > > > > > > > Voila, si kelk'un pouvait m'aider, ca serait vraimment super > > > > > > > > Sylo > > > > > > > > > > > > > >
Arf, suis trop bête : c'est ca d'aller trop vite :
Si j'ai bien compris, il faudrait que tu relances la contruction de tes tdatagrid après chaque modifications sur l'un deux : ainsi, la requête SQL de MAJ est executé et tu datagrid récupèrera les nouveaux changements.
--
LEBRUN Thomas
MCP Visual C# (70-316)
"Sylo" a écrit :
Mais le datset.dispose va me détruire le dataset en cours et je vais me
retrouver avec NOTHING dans mon datagrid, non ? Dois-je le remplir a nouveau
aprés ?
Merci
"LEBRUN Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de
news:A505E84B-DEE4-4B7F-89FA-BA4BE1946D57@microsoft.com...
> Après
>
> Datagrid1.refresh
>
> essaye un
>
> Dataset1.Dispose()
>
> Car, si les changements sont bien dans la base, c'est que ton dataset ne
récupère pas les bonnes valeurs (étant donné que tout par du dataset)
>
> --
> LEBRUN Thomas
> MCP Visual C# (70-316)
>
>
> "Sylo" a écrit :
>
> > Bonjour,
> >
> > Cela fait 1 mois maintenant que je me heurte au même problème et je
trouve
> > pas... J'ais déjà posé plusieurs question sur mon problème mais sans
filer
> > mon code parce ke ca me parraissait un peu compliqué... Mais la j'ai
plus le
> > choix.
> >
> > Le problème simplifié:
> > j'ai un tabcontrol avec 2 tabpages et 1 datagrid sur chaque tabpage.
> > j'ai sur chaque datagrid, un lien vers deux dataview différent issues de
> > deux dataset différent (et les dataset sont lié à un datatable)
> > Pour simplifier et reproduire mon problème, les deux datasets sont
issues de
> > la même interrogation sur la même table.
> >
> > au démarrage de ma form contenant les deux datagrid, je rempli ces deux
> > datagrids avec les dataview issues des dataset (fonction ci-dessous)
> > L'utilisateur fait une modification sur un enregistrement du premier
> > datagrid.
> > j'utilise l'évènement du datatable du datagrid "rowchanging". a cet
endroit,
> > je me contente de modifier ma base de données (update table set
> > champs="jkljlk" where ...) avec le "e.row" et c'est tout.
> > Par la suite, si l'utilisateur change de tabpages, je reconstruit le
> > dataview du datagrid de la manière suivante:
> >
> >
> > FONCTION DE CONSTRUCTION DU 1er DATAGRID (le 2ème DATAGRID
utilise
> > dataset2, dataview2, datatable2)
> >
> > Dim dbAdaptr As System.Data.OleDb.OleDbDataAdapter = New
> > System.Data.OleDb.OleDbDataAdapter()
> > With dbAdaptr
> > If Not Dataset1 Is Nothing Then Me.Dataset1.Dispose()
> > Dataset1 = New DataSet("ds")
> > Dim SQLStr As String = "Select numero,nom,prenom from
tab"
> > .TableMappings.Add("Table", "contact")
> > Dim cmd As System.Data.OleDb.OleDbCommand = New
> > System.Data.OleDb.OleDbCommand(SQLStr, cn) : cmd.CommandType > > > CommandType.Text
> > .SelectCommand = cmd : .Fill(Dataset1)
> > Dataset1.Tables("contact").AcceptChanges() : Datatable1
> > > Dataset1.Tables("contact")
> > .Dispose()
> > End With
> > Dataview1 = Dataset1.Tables("contact").DefaultView :
> > Datagrid1.DataSource = Dataview1
> > Datagrid1.DataSource = Dataview1
> > Datagrid1.refresh
> >
> >
> >
> > Mon problème, quand je reconstruit le second datagrid, le datagrid ne
> > reflète pas la modification (alors que la base de données contient bien
la
> > modification au moment de la construction)
> >
> > C'est comme si le dataset n'était pas vidé et qu'il restait le même.
> >
> >
> >
> > Voila, si kelk'un pouvait m'aider, ca serait vraimment super
> >
> >
> >
> > Sylo
> >
> >
> >
> >
> >
> >
> >
Arf, suis trop bête : c'est ca d'aller trop vite :
Si j'ai bien compris, il faudrait que tu relances la contruction de tes tdatagrid après chaque modifications sur l'un deux : ainsi, la requête SQL de MAJ est executé et tu datagrid récupèrera les nouveaux changements.
-- LEBRUN Thomas MCP Visual C# (70-316)
"Sylo" a écrit :
Mais le datset.dispose va me détruire le dataset en cours et je vais me retrouver avec NOTHING dans mon datagrid, non ? Dois-je le remplir a nouveau aprés ? Merci
"LEBRUN Thomas" <lebrun_thomas_at_hotmail.com> a écrit dans le message de news: > Après > > Datagrid1.refresh > > essaye un > > Dataset1.Dispose() > > Car, si les changements sont bien dans la base, c'est que ton dataset ne récupère pas les bonnes valeurs (étant donné que tout par du dataset) > > -- > LEBRUN Thomas > MCP Visual C# (70-316) > > > "Sylo" a écrit : > > > Bonjour, > > > > Cela fait 1 mois maintenant que je me heurte au même problème et je trouve > > pas... J'ais déjà posé plusieurs question sur mon problème mais sans filer > > mon code parce ke ca me parraissait un peu compliqué... Mais la j'ai plus le > > choix. > > > > Le problème simplifié: > > j'ai un tabcontrol avec 2 tabpages et 1 datagrid sur chaque tabpage. > > j'ai sur chaque datagrid, un lien vers deux dataview différent issues de > > deux dataset différent (et les dataset sont lié à un datatable) > > Pour simplifier et reproduire mon problème, les deux datasets sont issues de > > la même interrogation sur la même table. > > > > au démarrage de ma form contenant les deux datagrid, je rempli ces deux > > datagrids avec les dataview issues des dataset (fonction ci-dessous) > > L'utilisateur fait une modification sur un enregistrement du premier > > datagrid. > > j'utilise l'évènement du datatable du datagrid "rowchanging". a cet endroit, > > je me contente de modifier ma base de données (update table set > > champs="jkljlk" where ...) avec le "e.row" et c'est tout. > > Par la suite, si l'utilisateur change de tabpages, je reconstruit le > > dataview du datagrid de la manière suivante: > > > > > > FONCTION DE CONSTRUCTION DU 1er DATAGRID (le 2ème DATAGRID utilise > > dataset2, dataview2, datatable2) > > > > Dim dbAdaptr As System.Data.OleDb.OleDbDataAdapter = New > > System.Data.OleDb.OleDbDataAdapter() > > With dbAdaptr > > If Not Dataset1 Is Nothing Then Me.Dataset1.Dispose() > > Dataset1 = New DataSet("ds") > > Dim SQLStr As String = "Select numero,nom,prenom from tab" > > .TableMappings.Add("Table", "contact") > > Dim cmd As System.Data.OleDb.OleDbCommand = New > > System.Data.OleDb.OleDbCommand(SQLStr, cn) : cmd.CommandType > > > CommandType.Text > > .SelectCommand = cmd : .Fill(Dataset1) > > Dataset1.Tables("contact").AcceptChanges() : Datatable1 > > > Dataset1.Tables("contact") > > .Dispose() > > End With > > Dataview1 = Dataset1.Tables("contact").DefaultView : > > Datagrid1.DataSource = Dataview1 > > Datagrid1.DataSource = Dataview1 > > Datagrid1.refresh > > > > > > > > Mon problème, quand je reconstruit le second datagrid, le datagrid ne > > reflète pas la modification (alors que la base de données contient bien la > > modification au moment de la construction) > > > > C'est comme si le dataset n'était pas vidé et qu'il restait le même. > > > > > > > > Voila, si kelk'un pouvait m'aider, ca serait vraimment super > > > > > > > > Sylo > > > > > > > > > > > > > >
marcbelgium
bonjour essaie un datagrid.clear avant de le remplir
"Sylo" wrote:
Bonjour,
Cela fait 1 mois maintenant que je me heurte au même problème et je trouve pas... J'ais déjà posé plusieurs question sur mon problème mais sans filer mon code parce ke ca me parraissait un peu compliqué... Mais la j'ai plus le choix.
Le problème simplifié: j'ai un tabcontrol avec 2 tabpages et 1 datagrid sur chaque tabpage. j'ai sur chaque datagrid, un lien vers deux dataview différent issues de deux dataset différent (et les dataset sont lié à un datatable) Pour simplifier et reproduire mon problème, les deux datasets sont issues de la même interrogation sur la même table.
au démarrage de ma form contenant les deux datagrid, je rempli ces deux datagrids avec les dataview issues des dataset (fonction ci-dessous) L'utilisateur fait une modification sur un enregistrement du premier datagrid. j'utilise l'évènement du datatable du datagrid "rowchanging". a cet endroit, je me contente de modifier ma base de données (update table set champs="jkljlk" where ...) avec le "e.row" et c'est tout. Par la suite, si l'utilisateur change de tabpages, je reconstruit le dataview du datagrid de la manière suivante:
FONCTION DE CONSTRUCTION DU 1er DATAGRID (le 2ème DATAGRID utilise dataset2, dataview2, datatable2)
Dim dbAdaptr As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter() With dbAdaptr If Not Dataset1 Is Nothing Then Me.Dataset1.Dispose() Dataset1 = New DataSet("ds") Dim SQLStr As String = "Select numero,nom,prenom from tab" .TableMappings.Add("Table", "contact") Dim cmd As System.Data.OleDb.OleDbCommand = New System.Data.OleDb.OleDbCommand(SQLStr, cn) : cmd.CommandType > CommandType.Text .SelectCommand = cmd : .Fill(Dataset1) Dataset1.Tables("contact").AcceptChanges() : Datatable1 > Dataset1.Tables("contact") .Dispose() End With Dataview1 = Dataset1.Tables("contact").DefaultView : Datagrid1.DataSource = Dataview1 Datagrid1.DataSource = Dataview1 Datagrid1.refresh
Mon problème, quand je reconstruit le second datagrid, le datagrid ne reflète pas la modification (alors que la base de données contient bien la modification au moment de la construction)
C'est comme si le dataset n'était pas vidé et qu'il restait le même.
Voila, si kelk'un pouvait m'aider, ca serait vraimment super
Sylo
bonjour
essaie un datagrid.clear avant de le remplir
"Sylo" wrote:
Bonjour,
Cela fait 1 mois maintenant que je me heurte au même problème et je trouve
pas... J'ais déjà posé plusieurs question sur mon problème mais sans filer
mon code parce ke ca me parraissait un peu compliqué... Mais la j'ai plus le
choix.
Le problème simplifié:
j'ai un tabcontrol avec 2 tabpages et 1 datagrid sur chaque tabpage.
j'ai sur chaque datagrid, un lien vers deux dataview différent issues de
deux dataset différent (et les dataset sont lié à un datatable)
Pour simplifier et reproduire mon problème, les deux datasets sont issues de
la même interrogation sur la même table.
au démarrage de ma form contenant les deux datagrid, je rempli ces deux
datagrids avec les dataview issues des dataset (fonction ci-dessous)
L'utilisateur fait une modification sur un enregistrement du premier
datagrid.
j'utilise l'évènement du datatable du datagrid "rowchanging". a cet endroit,
je me contente de modifier ma base de données (update table set
champs="jkljlk" where ...) avec le "e.row" et c'est tout.
Par la suite, si l'utilisateur change de tabpages, je reconstruit le
dataview du datagrid de la manière suivante:
FONCTION DE CONSTRUCTION DU 1er DATAGRID (le 2ème DATAGRID utilise
dataset2, dataview2, datatable2)
Dim dbAdaptr As System.Data.OleDb.OleDbDataAdapter = New
System.Data.OleDb.OleDbDataAdapter()
With dbAdaptr
If Not Dataset1 Is Nothing Then Me.Dataset1.Dispose()
Dataset1 = New DataSet("ds")
Dim SQLStr As String = "Select numero,nom,prenom from tab"
.TableMappings.Add("Table", "contact")
Dim cmd As System.Data.OleDb.OleDbCommand = New
System.Data.OleDb.OleDbCommand(SQLStr, cn) : cmd.CommandType > CommandType.Text
.SelectCommand = cmd : .Fill(Dataset1)
Dataset1.Tables("contact").AcceptChanges() : Datatable1 > Dataset1.Tables("contact")
.Dispose()
End With
Dataview1 = Dataset1.Tables("contact").DefaultView :
Datagrid1.DataSource = Dataview1
Datagrid1.DataSource = Dataview1
Datagrid1.refresh
Mon problème, quand je reconstruit le second datagrid, le datagrid ne
reflète pas la modification (alors que la base de données contient bien la
modification au moment de la construction)
C'est comme si le dataset n'était pas vidé et qu'il restait le même.
Voila, si kelk'un pouvait m'aider, ca serait vraimment super
bonjour essaie un datagrid.clear avant de le remplir
"Sylo" wrote:
Bonjour,
Cela fait 1 mois maintenant que je me heurte au même problème et je trouve pas... J'ais déjà posé plusieurs question sur mon problème mais sans filer mon code parce ke ca me parraissait un peu compliqué... Mais la j'ai plus le choix.
Le problème simplifié: j'ai un tabcontrol avec 2 tabpages et 1 datagrid sur chaque tabpage. j'ai sur chaque datagrid, un lien vers deux dataview différent issues de deux dataset différent (et les dataset sont lié à un datatable) Pour simplifier et reproduire mon problème, les deux datasets sont issues de la même interrogation sur la même table.
au démarrage de ma form contenant les deux datagrid, je rempli ces deux datagrids avec les dataview issues des dataset (fonction ci-dessous) L'utilisateur fait une modification sur un enregistrement du premier datagrid. j'utilise l'évènement du datatable du datagrid "rowchanging". a cet endroit, je me contente de modifier ma base de données (update table set champs="jkljlk" where ...) avec le "e.row" et c'est tout. Par la suite, si l'utilisateur change de tabpages, je reconstruit le dataview du datagrid de la manière suivante:
FONCTION DE CONSTRUCTION DU 1er DATAGRID (le 2ème DATAGRID utilise dataset2, dataview2, datatable2)
Dim dbAdaptr As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter() With dbAdaptr If Not Dataset1 Is Nothing Then Me.Dataset1.Dispose() Dataset1 = New DataSet("ds") Dim SQLStr As String = "Select numero,nom,prenom from tab" .TableMappings.Add("Table", "contact") Dim cmd As System.Data.OleDb.OleDbCommand = New System.Data.OleDb.OleDbCommand(SQLStr, cn) : cmd.CommandType > CommandType.Text .SelectCommand = cmd : .Fill(Dataset1) Dataset1.Tables("contact").AcceptChanges() : Datatable1 > Dataset1.Tables("contact") .Dispose() End With Dataview1 = Dataset1.Tables("contact").DefaultView : Datagrid1.DataSource = Dataview1 Datagrid1.DataSource = Dataview1 Datagrid1.refresh
Mon problème, quand je reconstruit le second datagrid, le datagrid ne reflète pas la modification (alors que la base de données contient bien la modification au moment de la construction)
C'est comme si le dataset n'était pas vidé et qu'il restait le même.
Voila, si kelk'un pouvait m'aider, ca serait vraimment super