OVH Cloud OVH Cloud

DataGrid, vidage et mise a jour (DataSet et OleDataAdapter)

4 réponses
Avatar
aitoz
Bonjour,

select case valeur

Case 1

'*************************************************************************
'Avant je reforme le formulaire de question
Ds_NUBL.Clear()
'*************************************************************************
'J'implémente le DataGrid
Da_NUBL = New OleDb.OleDbDataAdapter("SELECT * FROM LIVRAISONS",
OleDbConnection1)

'Je créé le lien entre le DataSet et le DataGrid uniquement pour la tabble
en-cours
Da_NUBL.Fill(Ds_NUBL)
Me.DataGrid1.DataSource = Ds_NUBL.Tables(0)
Me.DataGrid1.ReadOnly = True
Me.DataGrid1.AllowNavigation = True

Case 2

'*************************************************************************
'Avant je reforme le formulaire de question
Ds_NUBL.Clear()
'*************************************************************************
'J'implémente le DataGrid
Da_NUBL = New OleDb.OleDbDataAdapter("SELECT * FROM COMMANDES",
OleDbConnection1)

'Je créé le lien entre le DataSet et le DataGrid uniquement pour la tabble
en-cours
Da_NUBL.Fill(Ds_NUBL)
Me.DataGrid1.DataSource = Ds_NUBL.Tables(0)
Me.DataGrid1.ReadOnly = True
Me.DataGrid1.AllowNavigation = True

end select



Le probleme est que la struture de ma table LIVRAISONS et la table COMMANDES
sont différente et dans le meme DataGrid1 les colonnes restent en place.

Je n'arrive pas a repartir sur un DataGrid1 propre. les colonnes de la
première table chargée reste affichées quand j'affiche la deuxieme.

Si quelqu'un sait comment vider completement un Datagrid ?

4 réponses

Avatar
aitoz
En fait, la fonction :

'Avant je reforme le formulaire de question
Ds_NUBL.Clear()

Fonctionne très bien lorsqu'il s'agit d'afficher les mêmes informations.
Je m'explique : si j'ai 2 colonnes, ARTICLE et PRIX, je peux effacer avec
clear et reafficher les memes données mises a jour.
Mais si je veux sur le meme Datagrid afficher une fois 2 colonnes et une
autre fois 3, comme par exemple la base ARTICLE (avec la désignation, le
prix, etc...) je ne peux plus utiliser la méthode Clear().

Comment faire !

Laurent
Avatar
Vko
Attention Ds_Clear() vide ton DataSet ... mais pas ta DataGrid. Sauf si tu
refais un Me.DataGrid1.DataBind()

Comment sont créés les colonnes de ta DataGrid ? Automatiquement (si la
propriété AutoGenerateColumn est à vraie) ? Manuellement ?

Pourquoi tu ne peux plus appeler la méthode Clear() ?

Est-ce que tu pourrais expliquer grossièrement ton applicatif ? je pense
qu'on pourra te donner des éléments de réponse plus adaptés, parce que là
j'ai du mal à comprendre (je fais le parallèle avec ton autre post).

"aitoz" wrote:

En fait, la fonction :

'Avant je reforme le formulaire de question
Ds_NUBL.Clear()

Fonctionne très bien lorsqu'il s'agit d'afficher les mêmes informations.
Je m'explique : si j'ai 2 colonnes, ARTICLE et PRIX, je peux effacer avec
clear et reafficher les memes données mises a jour.
Mais si je veux sur le meme Datagrid afficher une fois 2 colonnes et une
autre fois 3, comme par exemple la base ARTICLE (avec la désignation, le
prix, etc...) je ne peux plus utiliser la méthode Clear().

Comment faire !

Laurent





Avatar
aitoz
Justement, on autre poste est quasiment identique. C'est juste une autre
manière d'exposer le probleme.

voici mon code :


SELECT CASE Valeur

CASE 1

Ds_NUBL.Clear()
Da_NUBL = New OleDb.OleDbDataAdapter("SELECT * FROM LIVRAISONS",
OleDbConnection1)

'Je créé le lien entre le DataSet et le DataGrid
Da_NUBL.Fill(Ds_NUBL)
Me.DataGrid1.DataSource = Ds_NUBL.Tables(0)
Me.DataGrid1.ReadOnly = True
Me.DataGrid1.AllowNavigation = True

CASE 2

Ds_NUBL.Clear()
Da_NUBL = New OleDb.OleDbDataAdapter("SELECT * FROM COMMANDES",
OleDbConnection1)

'Je créé le lien entre le DataSet et le DataGrid
Da_NUBL.Fill(Ds_NUBL)
Me.DataGrid1.DataSource = Ds_NUBL.Tables(0)
Me.DataGrid1.ReadOnly = True
Me.DataGrid1.AllowNavigation = True

END SELECT

Donc je dirais que c'est le résultat de la requete qui implémente le
DataGrid et qui créé les colonnes.
Mais la méthode clear efface le DataSet et ar conséquence le Datagrid (a
l'affichage).
Sauf qu'il ne supprime pas le schéma qui a été créé et du coup les en-têtes
restent.
par conséquent, quand je veux afficher le résultat d'une autre table les
en-têtes de colonnes se décalent et mon Datagrid ne ressemble a rien.

j'aimerai donc utiliser un truc du genre DataGrid1.columns.clear ! mais je
n'ai pas accès a cette propriété.

Voila ! j'espère que je suis clair !?

Merci
Avatar
aitoz
Je n'ai toujours pas réussi a trouver une réponse a mon probleme.
Pour vous expliquer mon probleme, j'ai une fenetre qui contient sur la
partie gauche une listview et sur la partir droite un datagrid.
Sur la partie gauche j'ai mis la liste des états crystal report classés par
catégories que j'ai dans ma banque de données.
Dans la partie gauche j'ai une datagrid qui contient a chaque fois les
critères !
Et comme les critères sont différents d'un état a l'autre je voudrais en
gros effacer le critère en cours et le remettre a jour avec les nouveaux
critères !

Exemple : J'ai deux états, l'un pour imprimer les Factures et l'autre les
commandes d'achats.
Quand je clique dans ma listview sur les factures j'ai dans la partie droite
le datagrid qui regroupe tous les n° de factures avc des petites
informations. ensuite quand je clique sur l'état des commandes d'achats, je
veux que ca m'affiche la liste des commandes d'achats, mais le probleme est
que j'arrive a vider les données mais pas le format du datagrid, donc il
reste les en-têtes et mes colonnes viennent s'ajouter a la fin de l'état
précèdent !

Si quelqu'un peut m'aider ?