Gunshin82
Messages postés37Date d'inscriptionjeudi 22 mars 2007StatutMembreDernière intervention10 décembre 2009
-
12 sept. 2007 à 23:18
Gunshin82
Messages postés37Date d'inscriptionjeudi 22 mars 2007StatutMembreDernière intervention10 décembre 2009
-
7 nov. 2007 à 10:07
Bonjour à tous et toute,
Je suis en plein développement d'un mini soft pour charger des données de fichier text dans une base SQL. Pour ce faire, l'utilisateur devra choisir la période pour laquelle il veut charger ses données. Les valeurs qui se trouvera dans la combo Periode sera renseigner par mon code à partir de nom de dossier présent dans un répertoire.
Mon soucis est que je ne peux pas faire référence du tout au Combo Box Periode qui ce trouve sur mon formulaire principal... Il me marque comme quoi la variable est non déclarer, comment dois-je faire pour qu'il soit visible dans mon module...
Merci pour toute aide que vous pouvez m'apporter...
Voici mon code du module :
Module
ChargerNN
Function Fetch_Periode()
'Variable pour manipuler fichier texte
Dim TxtChemin AsString = IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly.Location) & "\TEMP"
Dim TxtRead As IO.StreamReader
'Variable Chemin pour le chemin où ce trouve les répertoires et Dossier pour les répertoires qui
'seront rajouté dans la combo box
Dim Chemin, Dossier AsString
'Def seras la valeur par défault du combo Periode
Dim Def As Data
'Aller chercher le chemin principal où ce trouve les sous dossiers dans le fichier texte
TxtRead = New IO.StreamReader(TxtChemin & "Chemin.txt", System.Text.Encoding.Default)
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 13 sept. 2007 à 00:23
Salut,
Tout simplement
If IsNumeric(Dossier) And Len(Dossier) = 4 Then FormulairePrincipal.Periode.Items.Add("20" & Mid(Dossier, 3, 2) & Mid(Dossier, 1, 2))
EndIf
Une autre méthode consiste à paramètrer ta fonction
Function Fetch_Periode(xCombo As ComboBox)
If IsNumeric(Dossier) And Len(Dossier) = 4 Then xCombo.Items.Add("20" & Mid(Dossier, 3, 2) & Mid(Dossier, 1, 2))
EndIf
et lors de l' appel faire passer Priode à ta function
(qui ressemble plutot une procedure puisqu' il n' y' a pas de valeur à retourner Mais bon!)
Gunshin82
Messages postés37Date d'inscriptionjeudi 22 mars 2007StatutMembreDernière intervention10 décembre 2009 13 sept. 2007 à 09:47
Merci beaucoup pour ton aide. J'ai tenté en premier lieu de faire Main.Periode.Items.Add(...), Main étant le nom de mon formulaire principal et il me donnait le message suivant : "Une référence à un membre non partagé requiert une référence d'objet."
Par contre, j'ai fait ta deuxième solution en incluant ma combo periode dans la Function et elle fonctionne à merveille.
Function Fetch_Periode(ByVal Periode As ComboBox)
J'aimerais quand même comprendre pourquoi le premier option ne fonctionne pas, y-a-t'il une propriété à changer sur le champ ? ou une déclaration suplémentaire ?
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 13 sept. 2007 à 13:13
Bonjour,
dsl et au risque de te decevoir, j' avoue n' avoir jamais eu la malchance de
tomber sur cette erreur !
En même temps c' est pas étonnant puisque je suis en VB6 ,et c' est à tout
hasard que j' ai répondu à ta première question.
Pour le reste, tu peux faire ce que j' ai déjà fait: En recherchant dans google
"Une référence à un membre non partagé requiert une référence d'objet",
j' ai eu pleins de liens que j' ai consulté sans rien trop comprendre.
Peut être que toi tu pourras en tirer quelque chose ...
Bonne continuation.
<hr />
I LIKE TO BE HERE WHEN I CAN
<hr />
Vous n’avez pas trouvé la réponse que vous recherchez ?
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 14 sept. 2007 à 08:43
Bonjour
D'où l'utilité de préfixé les objets, ton formulaire Main FrmMain, tu n'aurais pas eu de pb.
Le problème s'explique simplement, tu es dans un module, tu lui demande d'acccéder à un objet qu'il ne connais pas, tu doit lui dire à quelle form il appartient, car si tu as 2 formulaire (frm1 et Frm2 par ex) et sur les 2 un bouton nommé CmdButton, comment peut-il savoir lequel prendre ?
Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
Mon site
Gunshin82
Messages postés37Date d'inscriptionjeudi 22 mars 2007StatutMembreDernière intervention10 décembre 2009 18 sept. 2007 à 21:56
Re-Bonsoir,
Par contre, ceci devient ennuyant, j'ai découvert que dans ma class principal, c'est à dire Main.vb, celui rattacher à mon formulaire, je peux appeller des Functions qui sont dans mon Module, par contre, je ne peux pas appeller des Function ou Public Sub situer dans mon code principal (Main) à partir de mon Module...
Je crois que mon problème ci-haut et celui-ci sont relier...
Quelqu'un saurait comment je dois procéder pour pourvoir appeller des functions et champ situer dans le code principal ?
Gunshin82
Messages postés37Date d'inscriptionjeudi 22 mars 2007StatutMembreDernière intervention10 décembre 2009 3 oct. 2007 à 09:23
Bonjour,
Désoler d'avoir pris du temps à revenir mais j'ai dû mettre ce projet en attente.
J'ai essayer FrmMain.Periode.ItemsAdd et ca ne fonctionne toujours pas. Quand tu dis "Ton formulaire, au lieu de l'appeler Main, appelle le FrmMain" tu parles de quand je fais référence au formulaire dans mon code ou c'est mon code qui doit s'appeller comme ça (car dans les tabs en haut, j'ai Main.vb, Main.vb [Design] et ChargerNN.vb) ?
Merci
Most people would die sooner than think; in fact, they do.
-Bertrand Russell-
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 3 oct. 2007 à 09:38
Bonjour
Quand tu clique sur le fichier correspondate à ton formulaire dans
l'explorateur de projet (la fenêtre à droite), tu vas dans les
propriétés, tu change le nom Main.vb en FrmMain.vb, puis tu clique sur "Oui" à la question qui suit.
Quand tu clique sur le fichier correspondate à ton module dans
l'explorateur de projet (la fenêtre à droite), tu vas dans les
propriétés, tu change le nom Main.vb en MdlMain.vb, puis tu clique sur "Oui" à la question qui suit.
Ensuite les occurences à ta form s'appelleront FrmMain et plus Main (et mme principe pour le module).
Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
Mon site
Gunshin82
Messages postés37Date d'inscriptionjeudi 22 mars 2007StatutMembreDernière intervention10 décembre 2009 3 oct. 2007 à 11:01
J'ai fait la tentative, renommer Main en FrmMain et ChargerNN en MdlChargerNN. Dans mon code de MdlChargerNN, j'ai mis FrmMain.Periode.ItemsAdd mais FrmMain est souligné bleu et j'ai toujours le messsage popup "Le nom 'FrmMain' n'est pas déclarer"...
Most people would die sooner than think; in fact, they do.
-Bertrand Russell-
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 3 oct. 2007 à 11:15
Bonjour
J'ai pas l'EDI, de mémoire, quand tu clique sur la form de ton formulaire, ses props s'affichent dans la fenêtre dédiée à cette tâche.
La propriété Name (je ne sais plus si c'est "(Name)" ou non) te met "Main", là tu la change en "FrmMain".
Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
Mon site
Gunshin82
Messages postés37Date d'inscriptionjeudi 22 mars 2007StatutMembreDernière intervention10 décembre 2009 3 oct. 2007 à 12:09
Bonjour,
Quand je choissis le tab "FrmMain.vb [Design]" et que je clique sur le formulaire, dans les propriétés, sous Design j'ai "(Name)". J'ai changer celui-ci en imaginant que c'est ce que tu parlais de. Maintenant, il me souligne en bleu FrmMain.Periode (contrairement à juste FrmMain) et me met le message "Une référence à un membre non partagé requiert une référence d'objet."...
Most people would die sooner than think; in fact, they do.
-Bertrand Russell-
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 3 oct. 2007 à 12:19
Bonjour
Oui, car là tu fais référence à la classe, l'expression complète (et propre) (toujours sans EDI) :
My.Forms.FrmMain
(Il se pourrait qu'il y a un viveau de plus, mais je n'en suis pas sûr).
Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
Mon site
Gunshin82
Messages postés37Date d'inscriptionjeudi 22 mars 2007StatutMembreDernière intervention10 décembre 2009 6 nov. 2007 à 17:20
Bonjour,
Je reviens sur mon problème qui persiste toujours mais avec de nouveau détail :
1° Je suis sous VB.NET 2003 donc 7.1 avec FrameWork 1.1;
2° J'ai fait le test chez un ami qui à VB.NET 2005 donc 8.0 avec FrameWork 2.0 et ca fonctionne, apparament, quand l'on met un champ en public, ca rajoute Shared derrière Public (ex : Public Shared WithEvents Periode As System.Windows.Forms.ComboBox) ce que ma version ne fait pas... Donc je le fait en dur, je rajoute Shared mais ca fait disparaître ma comboBox de mon formulaire...
Donc comment faire?
Merci
Most people would die sooner than think; in fact, they do.
-Bertrand Russell-
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 7 nov. 2007 à 08:28
Bonjour
Ah donc tu es en 1.1, j'ai cru que tu étais en .NET2.
Dans ce cas ça explique pas mal de chose :
- pour pouvoir utiliser ta ComboBox, tu vire le shared, mais dans le Load de ta form (qui contient le Combo) tu fais :
MdlCommun.MyFrmMain=me
MdlCommun étant un module comportant un attribut public "MyFrmMain" de type FrmMain.
Ensuite, pour accéder à ton Combo : MdlCommun.MyFrmMain.Combo
Car le mot clé My n'existe que depuis .NET2
Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
Mon site
Gunshin82
Messages postés37Date d'inscriptionjeudi 22 mars 2007StatutMembreDernière intervention10 décembre 2009 7 nov. 2007 à 09:05
Bonjour,
Bon, je crois que l'on peut dire que j'ai dépassé le status de chiant mais bon... désoler mais j'ai toujours des problèmes.
Dans mon code principal, sous le Private Sub FrmMain_Load(...) j'ai entrer MdlCommun.MyFrmMain = Me et ca me retourne comme quoi MdlCommun n'est pas déclarer.
Dois-je ajouté une référence ou importer un namespace..?
Merci
Most people would die sooner than think; in fact, they do.
-Bertrand Russell-