IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

appel d'un classe


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Par défaut appel d'un classe
    bonjour

    j'ai créé des classes métier pour gérer les "Chargé d'affaire" a chaque fois qu'un mail est envoyer a leur client ca ajoute des ligne dans une variable string, pour simplifier tout ca j'ai une classe listeCDA qui contient tout les chargé d'affaire et une fonction qui ajoute le texte au bon CDA en fonction du code postal du client .

    mais quand je l'utilise ca marque ca :

    La référence d'objet n'est pas définie à une instance d'un objet.
    pour ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      lalisteCDA.ajoutmessage(dep, message)
    je déclare l'objet en variable global et l'instancie au formload

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     Dim lalisteCDA As cls_lstCDA
        Dim lalistedechoix As Cls_choix
     
     
     
        Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            init() ' charge le contenut du fichier INI.XML
     
            Dim lalistedeschoix As New Cls_choix()
     
     
            cn = New OleDbConnection("provider=Microsoft.jet.oledb.4.0; data source=" & pathBDD)
     
            Dim lalisteCDA As New cls_lstCDA(cn)


    quelqu'un voit l'erreur ?

    la seul petite idée que j'ai la dessus c'est qu'il n'apprécie pas que je déclare et instancie a deux endroit diffèrent

  2. #2
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Je ne sais pas si c'est juste une question de syntaxe ou pas, mais juste au cas où moi je fais ceci généralement, et je n'ai jamais ce genre de problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public lalisteCDA As cls_lstCDA
     
     
    Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
     
            lalistedeschoix = New Cls_choix()
     
    End Sub
    Après tout dépend aussi d'où tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lalisteCDA.ajoutmessage(dep, message)
    Car si c'est d'ailleurs que sur la Form1, alors il ne la verra pas.
    Il faudrait faire un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form1.lalisteCDA.ajoutmessage(dep, message)

  3. #3
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut dim listx as list(of xx),portee
    bonjour
    tout a fait normal.
    -dim à l'interieur du form_load est limite à la sub form_load .il n'est pas visible à l'exterieur de sub
    -dim dans la classe n'a rien à voir avec celui du form(c'est pas parce il porte le meme nom).IL a besoin d'un new propre à lui et c'est pour ca qu'il te dit pas d'instance (=pas de new).

    d'une maniere la regle de portee ou de "rayon d'action des variables" est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    'RAPPEL:Dim <=> Private (appartient à la Sub,Function,Classe ou il est declare)
    'il n'est pas permis de l'utiliser ailleurs.
    'RAPPEL :il faut abuser des richesses de la langue francaise ou anglaise et
    'ne pas donner les memes noms pour eviter des confusions de "code"
    Public Class Form1
        'on parle de ce var1 (homonyme n'a rien à voir avec les 2 autres)
        Private var1 As List(Of String)
        'ce var2 il est visible meme dans une autre classe(toto) 
        Public var2 As List(Of String)
        Public Sub New()
     
            ' Cet appel est requis par le Concepteur Windows Form.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            '------------------------------------------------
            'var1 concerne Sub New
            'on parle de ce var1 (homonyme n'a rien à voir avec les 2 autres)
            Dim var1 As List(Of String)
            var1 = New List(Of String)
            'nb:en plus on ne peut acceder à celui de la classe car il porte le meme nom d'ou =>impasse
        End Sub
        Public Sub masub()
            'var1 concerne  Sub masub
            'on parle de ce var1 (homonyme n'a rien à voir avec les 2 autres)
            Dim var1 As List(Of String)
            var1 = New List(Of String)
            'nb:en plus on ne peut acceder à celui de la classe car il porte le meme nom d'ou =>impasse
        End Sub
        'fin]
    End Class
    Public Class Toto
        Private var2 As List(Of string))
        Dim frm As Form1
        Public Sub New()
            frm = New Form1
            frm.var2 = New List(Of String)
            'ce var2 n'a rien à voir avec l'autre var2
            var2 = New List(Of Integer)
        End Sub
     
    End Class
    bon code....

  4. #4
    Membre très actif
    Avatar de alex61
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mai 2010
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2010
    Messages : 378
    Par défaut
    bonjour

    désolé en faite c'était une erreur stupide

    j'avais déclare 2 fois la même variable, une fois en global et l'autre dans le formload
    du coup ca devez écrasé la deuxième variable


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     Dim lstmsg As New List(Of Message)
        Dim cn As New OleDbConnection
        Public lalisteCDA As cls_lstCDA
        Public lalistedechoix As Cls_choix
     
     
     
     
     
        Public Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            init() ' charge le contenut du fichier INI.XML
     
            lalistedechoix = New Cls_choix()
     
     
            cn = New OleDbConnection("provider=Microsoft.jet.oledb.4.0; data source=" & pathBDD)
     
            lalisteCDA = New cls_lstCDA(cn)
     
            RichTextBox1.Text = "chargement ...."
     
            Dim lastr As String = "Retour formulaire e-mailing: NOUVEAU : Garde-corps pour modules photovoltaïques SECURIGARD®. FRENEHARD ET MICHAUX Batiweb Batiweb est heureux de vous faire "
     
            MsgBox(lalistedechoix.getchemin(lastr))

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MFC] appel de la classe CFormView
    Par julien.nasser dans le forum MFC
    Réponses: 18
    Dernier message: 11/04/2006, 08h37
  2. appel d'une class java en javascript ou autre
    Par tit_oune dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/04/2006, 15h24
  3. [applet][Debutante] Appel a une classe externe
    Par Skydoll dans le forum Applets
    Réponses: 3
    Dernier message: 30/01/2006, 10h31
  4. Réponses: 14
    Dernier message: 04/12/2005, 08h08
  5. [PL/SQL]Appel d'une classe/méthode java
    Par marsup54 dans le forum SQL
    Réponses: 4
    Dernier message: 30/06/2004, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo