Vider un datagrid winform

Résolu
cs_Bruno28 Messages postés 21 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 18 octobre 2005 - 27 juil. 2005 à 16:22
cs_Bruno28 Messages postés 21 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 18 octobre 2005 - 3 août 2005 à 10:01
Bonjour à tous.


Suis nouveau sur le forum, et en prog aussi, mais bon, j'me débrouille quand même.


J'ai créé un formulaire avec un DataGrid et des ComboBox pour filtrer mon DataGrid .
Je remplis le premier Combo avec les données d'une table Access, affiche les données correspondantes dans le DataGrid , et je remplis le 2ème ComboBox en fonction du 1er (je vide bien mon 2ème Combo si modification du choix dans le 1er), mais mon DataGrid AJOUTE les enregistrement à la 1ère sélection, alors que je veut filtrer les enregistrements déjà présents. Il faut donc vider le DataGrid avant de le re-remplir.

ci dessous le code utilisé pour remplir mon datagrid
J'espère que c'est clair
Merci d'avance

'Ce code pour le DataGrid (liste)



'Initialisation de la chaîne de paramètres pour la connexion


strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= C:\Documents and Settings\...\MaBase.mdb;"



'Initialisation de la chaîne contenant l'instruction SQL (ContenuRefTuyaux es le contenu de mon ComboBox)


strSql = "SELECT Stocks.* FROM Stocks WHERE Stocks.RefTuyau LIKE" & "'" & ContenuRefTuyaux & "'"



'Instanciation d'un Objet Connexion


ObjetConnection =
New OleDbConnection



'Donner à la propriété ConnectionString les paramètres de connexion


ObjetConnection.ConnectionString = strConn



'Ouvrir la connexion


ObjetConnection.Open()



'Instancer un objet Commande


ObjetCommand =
New OleDbCommand(strSql)



'Instancer un objet Adapter


ObjetDataAdapter =
New OleDbDataAdapter(ObjetCommand)



'initialiser l'objet Command


ObjetCommand.Connection() = ObjetConnection



'initialise l'objet OleCBComandBuilder (sinon pas d'update)


ObjetCB =
New OleDbCommandBuilder(ObjetDataAdapter)



'Avec l'aide de la propriété Fill du DataAdapter charger le DataSet


ObjetDataAdapter.Fill(ObjetDataSet, "Stocks")



'Mettre dans le DataGrid une table du DataSet


Liste.SetDataBinding(ObjetDataSet, "Stocks")


ObjetConnection.Close()

11 réponses

cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
3 août 2005 à 09:06
Salut Bruno,



Pour la doc, pas difficile, tu vas sur http://msdn.microsoft.com et ensuite une petite recherche devrait donner quelque chose.



Pour ton problème, je vais faire une syntèse des opérations que tu réalises et des objets que tu utilise.



Le DataAdapter permet de remplir une "structure" logique avec des
données provenant d'une ou plusieurs requête(s) SQL. Cette "struture"
logique peut être un DataSet ou un sous élément le DataTable. En effet,
le DataSet met à disposition du développpeur une mini base de données
virtuelle en mémoire. Le DataSet (base de données) gère plusieurs jeux
de données les DataTable (tables de la base de données), des
DataRelation (foreign key) et ainsi de suite. Le DataSet fourni donc
90% des fonctionnalités d'une base de données.

Pour revenir à ton code, lorsque que tu utilise la méthode Fill sur le DataSet, celui-ci crée une table.

Après l'instruction :

ObjetDataAdapter.Fill(ObjetDataSet, "Stocks")



ObjetDataSet contient une table "Stocks" qui contient tes données.



Donc pour vider le DataSet, tu dois faire:

ObjetDataSet.Tables("Stocks").Clear()



En espérant avoir été clair.

Chris


N'oubliez pas de cloturer votre post.
3
cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
27 juil. 2005 à 16:38
Bonjour,



Si tu lis avec attention la doc de la méthode Fill, il est est indiqué qu'il ajoute les enregistrements.

Donc, fais un Clear de ton DataTable avec de le reremplir.



Chris

N'oubliez pas de cloturer votre post.
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
27 juil. 2005 à 16:39
je ne suis pas certain de bien comprendre ton problème :
ma traduction.....
tout est niquel, sauf que le DataGrid (ou MsFlexGrid) ne se vide pas à l'arrivée d'une nouvelle connection
(???)
si c'est bien çà, vider une Flex ne supprime pas les cases. tu peux les vider, mais il restera autant de lignes/colonnes vides qu'il y en avait de remplies.

pour la formater correctement, tu dois la redéfinir comme la première fois

ex :
With MaFlex
.Rows = 1
.Cols = 2
.ColWidth(0) = 90
.ColWidth(1) = 1900

.TextMatrix(0, 1) = "Mon titre"
End With

sinon, il m'a semblé que StrSql était presque parfait :
strSql = "SELECT Stocks.* FROM Stocks WHERE Stocks.RefTuyau LIKE '" & ContenuRefTuyaux & "'"

PCPT
0
cs_Bruno28 Messages postés 21 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 18 octobre 2005
28 juil. 2005 à 16:02
Merci à toi pour ta réponse PCPT.

Seulement, j'avais bien essayé un reformatage complet, mais j'ai un message dans la 'Liste des taches' qui m'indique que ces methodes ne sont 'pas un membre de System.Windows.forms.DataGrid'.

Comprend pas
Bruno
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bruno28 Messages postés 21 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 18 octobre 2005
28 juil. 2005 à 16:05
Bonjour Chris

Merci pour ta réponse.
Regarde le message que j'ai laissé à PCPT s'il te plait, j'ai la même chose avec un .Clear
Why

Bruno
0
cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
28 juil. 2005 à 16:11
Bonjour Bruno,



Effectivement, le message est justifié, y a pas de méthode clera sur le DataGrid.

Le clear, faut le faire sur la source de données donc le DataTable.

Le DataGrid est un control d'affichage. Pas de gestion de données.


Conseil entre nous, la lecture de la doc est souvent bien instructive.



Chris


N'oubliez pas de cloturer votre post.
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
28 juil. 2005 à 16:17
System.Windows.forms.DataGrid?
VB.NET ?

ma "solution" était pour VB, je ne connais pas du tout .NET...
en VB, le .Clear existe, mais résultat indiqué dans mon précédent post ;)

désolé, j'peux pas faire +...
PCPT
0
Merci à vous PCPT et Chris

Mais à déjà essayé un reformatage et un clear, mais j'obtient le message "n'est pas un membre de System.Windows.Forms.DataGrid"
Why??

PCPT, merci pour le compliment sur ma sql. Pourquoi ' presque parfait '?
veut progresser moi.

Salut
Bruno28
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
2 août 2005 à 12:06
salut,
presque, parce que regarde la correction que j'y ai apporté ;)

PCPT
0
cs_Bruno28 Messages postés 21 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 18 octobre 2005
3 août 2005 à 08:21
Merci Chris,

Mon patron n'a pas voulu m'acheter de doc, et l'aide n'est pas toujours pertinente, ou nécéssite une connaissance déjà approfondie du sujet.

"Le clear, faut le faire sur la source de données donc le DataTable." ???

Si tu regardes à nouveau le code que j'ai utlisé, il n'y a pas de DataTable. J'ai essayé de vider le DataAdapter, ou le DataSet du DataAdapter, mais pas moyen.

Aurais-je utilisé une mauvaise méthode.

Excuse moi si je traines un peu pour répondre, mais avec les vacances et les sous effectifs qui vont avec, je fait beaucoup de préparation commandes, montage, dessin indus (AutoCAD), et peu de prog. Faut gérer les priorités.

Bruno28
0
cs_Bruno28 Messages postés 21 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 18 octobre 2005
3 août 2005 à 10:01
C'est très clair
Merci à toi Chris
Bruno
0