Panel DataGrid stored procedure sqlserver

Résolu
aitoz Messages postés 59 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 30 décembre 2008 - 23 avril 2008 à 12:11
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 - 24 avril 2008 à 12:19
Bonjour à tous,

J'ai une feuille MDI qui contient un panel.
Quand je clique dans un menu, j'affiche dans ce panel un usercontrol qui contient une datagrid.

Je voudrais ensuite, en fonction du client que je selectionne afficher dans cette datagrid la liste des factures.
Cette liste de facture provient d'une procédure stockée dans une base Sqlserver 2005.

Merci de votre aide.

Laurent

9 réponses

aitoz Messages postés 59 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 30 décembre 2008 1
24 avril 2008 à 12:17
Oh puré, j'ai trouvé !
La réponse est tellement bête !!!!!

En fait, c'est qu'une question de portée de variable.
Je déclarais mon usercontrol dans mon private sub.
Du coup, toutes les propriétés étaient accessible uniquement de là.

J'ai déclaré au niveau de ma class principale et du coup je peux envoyer tout ce que je veux maintenant dans mon usercontrol sur mon panel.

Avant je faisais le code ci-dessous pour ouvrir mon usercontrol
Dim tempObject As

New
Analysis
Panel1.Controls.Clear()
Panel1.Controls.Add(tempObject)
tempObject.Dock = DockStyle.Fill

Maintenant je fais ça :
tempObject = New
Analysis
Panel1.Controls.Clear()
Panel1.Controls.Add(tempObject )
tempObject .Dock = DockStyle.Fill

En déclarant dans ma class principale :  DIM tempObject as Analysis

Merci beaucoup pour ton aide.

Laurent
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
23 avril 2008 à 13:37
Bonjour

Et où est-ce que tu coince ?

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
aitoz Messages postés 59 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 30 décembre 2008 1
23 avril 2008 à 14:06
ben, je ne sais pas comment faire !!!

Je voudrais créer un databinding entre mon menu qui contient mon paramètre (code client) et mon datagrid qui est dans mon panel. Le tout via une procédure stockée dans ma base sqlserver.

Dans l'idée :
- Je clique sur mon client AREVA
- Ca lance ma procédure stockée avec pour paramètre AREVA
- Et ca m'affiche dans mon datagrid qui est dans mon panel le résultat de ma procédure stockée (liste des factures).

Voila !
Merci de votre

Laurent
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
23 avril 2008 à 14:24
Bonjour

Je te conseil de passer par un objet Command et un DataSet, tu peux trouver des vidéos sur :
http://www.microsoft.com/france/vision/saga-dot-net/Default.aspx

sinon, regarde sur le site, il y a pas mal de codes (parfois c'est avec Access, mais en adaptant, ça fonctionne avec SQL Server).

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
0

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

Posez votre question
aitoz Messages postés 59 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 30 décembre 2008 1
23 avril 2008 à 15:58
Merci pour l'info, j'ai regardé mais je sais deja faire tout ca.
voici un bout de mon code pour peut-être comprendre mon soucis.

'J'instancie mes variables

Dim ObjetDR
As SqlDataReader

Dim ObjetDC
As SqlCommand =
New SqlCommand()

'Ouverture de la connexion
BLS_CS.Open()

With ObjetDC
.Connection = BLS_CS
.CommandType = CommandType.StoredProcedure
.CommandText =
"ps_portfolio_user"

Dim ObjetPR
As SqlParameter = .Parameters.Add(
"@nomclient", SqlDbType.VarChar, 20)
ObjetPR.Value = SystemInformation.UserName.ToString
ObjetDR = .ExecuteReader(CommandBehavior.CloseConnection)

End
WithICI JE VOUDRAIS AJOUTER LE CODE QUI ME PERMET DE METTRE A JOUR MON DATAGRID QUI EST DANS UN USERCONTROL ET QUE JE PLACE DANS UN PANEL AVEC LE CODE SUIVANT :
Dim tempObject
As

New
Analysis
Panel1.Controls.Clear()
Panel1.Controls.Add(tempObject)
tempObject.Dock = DockStyle.Fill

'je vide mon objet DataReader pour le relancer sur les zones clients
ObjetDR.Close()
BLS_CS.Close()
0
aitoz Messages postés 59 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 30 décembre 2008 1
23 avril 2008 à 17:43
J'ai essayé la phrase en rose. Je veux dire affiche le dataset dans le control 6 (le 6 étant le datagrid) qui est dans le panel. MAIS biensur CA NE FONCTIONNE PAS !














Dim
DataSet

As
DataSet =

New
DataSet(ObjetDC.CommandText)
ObjetAD.Fill(DataSet)
Panel1.Controls(6).DataBindings.Add(DataSet.Tables(0))


'je vide mon objet DataReader pour le relancer sur les zones clients

ObjetDR.Close()
BLS_CS.Close()

Merci de votre aide.

Laurent
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
24 avril 2008 à 11:36
Bonjour

C'est le DataSource qui doit être définit avec la valeur du DataSet et DataMember avec le nom de la table à visualiser.

Nota, je te conseil d'utiliser le controle DataGridView (si tu es .NET2+)

Ensuite, ta syntaxe :
Panel1.Controls(6)
est très risquée :
- Si tu rajoute/supprime un controle, ...
- Evite les noms par défaut dans le code (Panel1)
Je te conseil de nommer ton controle et de l'utiliser par son nom.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
aitoz Messages postés 59 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 30 décembre 2008 1
24 avril 2008 à 12:05
Bonjour,

En fait mon soucis n'est pas trop sur le databinding. Je m'en occuperai plus tard.

C'est surtout sur comment communiquer à partir de la feuille MDI vers un usercontrol que j'ai loadé dans un panel ???

L'instruction ci-dessous m'affiche le nom de mon usercontrol ("Analysis")
MsgBox(Panel1.Controls(0).Name.ToString(), MsgBoxStyle.Critical)



Si je change d'index et que je mets 6 par exemple, c'est "out of range" !!!

Pour simplifier :
Imaginons que j'ai un textbox2 dans mon usercontrol Analysis, je voudrais afficher quelque chose dedans sur l'événement click de mon menu principal dans ma feuille MDI.
J'imagine un truc comme ca !

Panel1.analysis.textbox2.text = "Client AREVA"

Mais bien sur cette instruction ne fonctionne pas du tout. Je voudrais savoir comment faire !!!

En tous cas, merci de ton aide.

Laurent
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
24 avril 2008 à 12:19
Bonjour

Ce n'est pas vraiment conseiller d'accéder à un controle inclu dans un UserControl (on peut jouer avec la visibilité, mais c'est pas propre), je te conseil plutot d'utiliser des méthodes et des propriétés définit au niveau de ton UserControl qui accèderont aux membres désirés de tes controles contenus.

Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
0
Rejoignez-nous