Vider un datagrid winform [Résolu]

cs_Bruno28 21 Messages postés mercredi 27 juillet 2005Date d'inscription 18 octobre 2005 Dernière intervention - 27 juil. 2005 à 16:22 - Dernière réponse : cs_Bruno28 21 Messages postés mercredi 27 juillet 2005Date d'inscription 18 octobre 2005 Dernière intervention
- 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()
Afficher la suite 

11 réponses

Meilleure réponse
cs_69chris 318 Messages postés jeudi 30 janvier 2003Date d'inscription 30 décembre 2005 Dernière intervention - 3 août 2005 à 09:06
3
Merci
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.

Merci cs_69chris 3

codes-sources a aidé 79 internautes ce mois-ci

cs_69chris 318 Messages postés jeudi 30 janvier 2003Date d'inscription 30 décembre 2005 Dernière intervention - 27 juil. 2005 à 16:38
0
Merci
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.
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscriptionModérateurStatut 3 février 2018 Dernière intervention - 27 juil. 2005 à 16:39
0
Merci
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
cs_Bruno28 21 Messages postés mercredi 27 juillet 2005Date d'inscription 18 octobre 2005 Dernière intervention - 28 juil. 2005 à 16:02
0
Merci
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
cs_Bruno28 21 Messages postés mercredi 27 juillet 2005Date d'inscription 18 octobre 2005 Dernière intervention - 28 juil. 2005 à 16:05
0
Merci
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
cs_69chris 318 Messages postés jeudi 30 janvier 2003Date d'inscription 30 décembre 2005 Dernière intervention - 28 juil. 2005 à 16:11
0
Merci
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.
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscriptionModérateurStatut 3 février 2018 Dernière intervention - 28 juil. 2005 à 16:17
0
Merci
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
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
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscriptionModérateurStatut 3 février 2018 Dernière intervention - 2 août 2005 à 12:06
0
Merci
salut,
presque, parce que regarde la correction que j'y ai apporté ;)

PCPT
cs_Bruno28 21 Messages postés mercredi 27 juillet 2005Date d'inscription 18 octobre 2005 Dernière intervention - 3 août 2005 à 08:21
0
Merci
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
cs_Bruno28 21 Messages postés mercredi 27 juillet 2005Date d'inscription 18 octobre 2005 Dernière intervention - 3 août 2005 à 10:01
0
Merci
C'est très clair
Merci à toi Chris
Bruno

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.