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 :

Problème de "Méthode introuvable" systèmatique


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de shkyo
    Homme Profil pro
    Développeur Robotique - Administrateur systèmes
    Inscrit en
    Juin 2003
    Messages
    841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Robotique - Administrateur systèmes

    Informations forums :
    Inscription : Juin 2003
    Messages : 841
    Par défaut Problème de "Méthode introuvable" systèmatique
    Bonjour à tous,

    Alors tout d'abord, je précise que je suis débutant en VB .Net, jusqu'à maintenant, j'ai plutôt fait du VB6...

    Le but final est d'avoir une DLL qui me permette d’accéder à différentes class en vb6 à priori plus simples à coder en vb.net qu'en vb6

    Donc d'un côté j'ai mon début de bibliothèque :
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
     
    Imports System.Net.Mail
    Imports System.Text.RegularExpressions
    Imports System.Net
    Imports System.Text
     
    <ComClass(communicationsNET.ClassId, communicationsNET.InterfaceId, communicationsNET.EventsId)> _
    Public Class communicationsNET
     
    #Region "GUID COM"
        ' Ces GUID fournissent l'identité COM pour cette classe 
        ' et ses interfaces COM. Si vous les modifiez, les clients 
        ' existants ne pourront plus accéder à la classe.
        Public Const ClassId As String = "6b33c85a-4df9-4fff-9026-83ee06c91391"
        Public Const InterfaceId As String = "01b2cf8f-bcdd-4a5f-9eeb-a1116db44b67"
        Public Const EventsId As String = "6b57c641-bd88-4df7-a513-236e77f38c8f"
    #End Region
     
        ' Une classe COM pouvant être créée doit avoir Public Sub New() 
        ' sans paramètre, sinon, la classe ne sera pas 
        ' inscrite dans le Registre COM et ne pourra pas être créée 
        ' via CreateObject.
        Public Sub New()
            MyBase.New()
        End Sub
     
    #Region "EMAILING"
        Private _hostSMTP As String
        Private _portSMTP As Integer = 25
        Private _adrExpediteur As String
        Private _adrDestinataire As String
        Private _adrCC As String
        Private _mailObject As String
        Private _mailContent As String
        Private _enclosedFile As String
     
        Public Property hostSMTP() As String
            Get
                Return _hostSMTP
            End Get
            Set(ByVal value As String)
                _hostSMTP = value
            End Set
        End Property
     
        Public Property portSMTP() As Integer
            Get
                Return _portSMTP
            End Get
            Set(ByVal value As Integer)
                _portSMTP = value
            End Set
        End Property
     
        Public Property adrExpediteur() As String
            Get
                Return _adrExpediteur
            End Get
            Set(ByVal value As String)
                _adrExpediteur = value
            End Set
        End Property
     
        Public Property adrDestinataire() As String
            Get
                Return _adrDestinataire
            End Get
            Set(ByVal value As String)
                _adrDestinataire = value
            End Set
        End Property
     
        Public Property adrCC() As String
            Get
                Return _adrCC
            End Get
            Set(ByVal value As String)
                _adrCC = value
            End Set
        End Property
     
        Public Property mailObject() As String
            Get
                Return _mailObject
            End Get
            Set(ByVal value As String)
                _mailObject = value
            End Set
        End Property
     
        Public Property mailContent() As String
            Get
                Return _mailContent
            End Get
            Set(ByVal value As String)
                _mailContent = value
            End Set
        End Property
     
        Public Property enclosedFile() As String
            Get
                Return _enclosedFile
            End Get
            Set(ByVal value As String)
                _enclosedFile = value
            End Set
        End Property
     
        ''' <summary>
        ''' Fonction permettant l'envoi d'un email
        ''' </summary>
        ''' <returns>Un n° d'erreur</returns>
        ''' <remarks>Les paramètres de la fonction sont définis par les propriétés</remarks>
        Public Function SendEmail() As Integer
            Dim email As MailMessage, smtp As SmtpClient
            '
            If Trim(hostSMTP) = "" Then Return 1 : Exit Function
            If portSMTP = 0 Then Return 2 : Exit Function
            If Trim(adrExpediteur) = "" Then Return 3 : Exit Function
            If Trim(adrDestinataire) = "" Then Return 4 : Exit Function
            If Trim(mailObject) = "" Then Return 5 : Exit Function
            If Not IsEmail(adrDestinataire) Then Return 6 : Exit Function
            '
            smtp = New SmtpClient()                         '/ Serveur SMTP
            smtp.Host = Trim(hostSMTP)
            smtp.Port = portSMTP
            '
            email = New MailMessage                         '/ Message email
            With email
                .From = New MailAddress(adrExpediteur)      '/ FROM
                .To.Add(New MailAddress(adrDestinataire))   '/ TO
                If Trim(adrCC) <> "" Then
                    .CC.Add(New MailAddress(adrCC))         '/ CC
                End If
                If Trim(enclosedFile) <> "" Then            '/ Pièce jointe
                    .Attachments.Add(New Attachment(enclosedFile))
                End If
                .Subject = mailObject                       '/ Objet du message
                .Body = mailContent                         '/ Corps du message
            End With
            '
            Try
                '/ Envoi du message
                smtp.Send(email)
                Return 0
            Catch exSMTP As SmtpFailedRecipientException
                Dim status As New SmtpStatusCode
                status = exSMTP.StatusCode
                Return status
            Catch ex As Exception
                Return -1
            Finally
                email.Dispose()
            End Try
        End Function
     
        ''' <summary>
        ''' Fonction permettant de vérifier le formatage d'un email
        ''' </summary>
        ''' <param name="email">La chaine de caractère à vérifier comme étant un email valide</param>
        ''' <returns>Retourne vrai si la chaine est formatée en tant qu'email correct, faux sinon</returns>
        ''' <remarks></remarks>
        Public Shared Function IsEmail(ByVal email As String) As Boolean
            Dim bMail As Boolean = False
            Dim regex As New Regex("^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$")
     
            If regex.IsMatch(email) Then
                bMail = True
            End If
            Return bMail
        End Function
     
    #End Region
     
    #Region "TVA_VIES"
        Private _countryCode As String
        Private _vatNumber As String
        Private _valid As Boolean
        Private _name As String
        Private _address As String
     
        Public Property countryCode() As String
            Get
                Return _countryCode
            End Get
            Set(ByVal value As String)
                _countryCode = value
            End Set
        End Property
        Public Property vatNumber() As String
            Get
                Return _vatNumber
            End Get
            Set(ByVal value As String)
                _vatNumber = value
            End Set
        End Property
        Public Property valid() As Boolean
            Get
                Return _valid
            End Get
            Set(ByVal value As Boolean)
                _valid = value
            End Set
        End Property
        Public Property name() As String
            Get
                Return _name
            End Get
            Set(ByVal value As String)
                _name = value
            End Set
        End Property
        Public Property address() As String
            Get
                Return _address
            End Get
            Set(ByVal value As String)
                _address = value
            End Set
        End Property
     
        Public Function check_NIF() As Date
            Dim check As New checkVatService
     
            check_NIF = check.checkVat(countryCode, vatNumber, valid, name, address)
     
        End Function
    #End Region
     
    End Class
    Et de l'autre j'ai mon appli de test avec le windows form qui va bien, c'est-à-dire des champs textes et des boutons, rien de bien compliqué à priori...
    Voici le code :
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    Imports trucNet
     
    Public Class MENGEN
        Private Sub SendCmd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SendCmd.Click
            Dim clsMail As New communicationsNET, rslt As Integer
            '
            clsMail.hostSMTP = ZhostSMTP.Text.Trim
            clsMail.portSMTP = CInt(ZportSMTP.Text)
            clsMail.adrExpediteur = ZadrExpediteur.Text.Trim
            clsMail.adrDestinataire = ZadrDestinataire.Text.Trim
            clsMail.mailObject = ZmailObject.Text.Trim
            clsMail.mailContent = ZmailContent.Text.Trim
            '
            rslt = clsMail.SendEmail
            If rslt <> 0 Then
                Select Case rslt
                    Case 1 : MsgBox("Serveur SMTP manquant", MsgBoxStyle.Critical, "Erreur")
                    Case 2 : MsgBox("Port SMTP manquant", MsgBoxStyle.Critical, "Erreur")
                    Case 3 : MsgBox("Adresse expéditeur manquante", MsgBoxStyle.Critical, "Erreur")
                    Case 4 : MsgBox("Adresse destinataire manquante", MsgBoxStyle.Critical, "Erreur")
                    Case 5 : MsgBox("Sujet de l'email manquant", MsgBoxStyle.Critical, "Erreur")
                    Case 6 : MsgBox("L'adresse email du destinataire n'est pas formaté correctement", MsgBoxStyle.Critical, "Erreur")
                    Case -1 : MsgBox("Erreur générale", MsgBoxStyle.Critical, "Erreur")
                    Case Else : MsgBox("Erreur de communication avec le serveur SMTP", MsgBoxStyle.Critical, "Erreur")
                End Select
            Else
                MsgBox("Envoi terminé avec succés", MsgBoxStyle.Information, "Terminé")
            End If
            '
        End Sub
     
        Private Sub CheckNIF_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckNIF.Click
            Dim pays As String, TVA As String, name As String, adresse As String, valide As Boolean
            Dim NIF As New communicationsNET, result As Date
     
            If txCodeNIF.Text <> "" Then
                pays = txCodeNIF.Text.Substring(0, 2).Trim
                TVA = txCodeNIF.Text.Substring(2, (txCodeNIF.Text.Length) - 2).Trim
            Else
                MsgBox("Donnez un code NIF valide!", MsgBoxStyle.Exclamation, "Champ vide...")
                Exit Sub
            End If
     
            valide = False
            name = ""
            adresse = ""
     
            NIF.countryCode = pays
            NIF.vatNumber = TVA
            NIF.valid = valide
            NIF.name = name
            NIF.address = adresse
     
            result = NIF.check_NIF
     
            MsgBox(name & vbLf & adresse)
        End Sub
    End Class
    Quand je génère la solution, je n'ai aucune erreur, quand je compile non plus, mais quand je lance l'appli dans mon Visual Studio 2008 avec la touche F5, le windows form apparaît, je remplis le champ texte qui va bien et quand je clique sur le bouton "Check", j'ai systèmatiquement (et quoi que je fasse) le message d'erreur suivant :
    Méthode introuvable : 'Void negoNet.communicationsNET.set_countryCode(System.String)'.
    Argh!!!

    Sachant que pour info, la partie que vous pouvez voir dans la région "EMAILING" fonctionne très bien avec son bouton "SendCmd", mais la nouvelle région "TVA_VIES" pas du tout!!!

    Je suppose que j'ai loupé quelquechose mais quoi???

    Merci d'avance de votre aide!!!

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 199
    Par défaut
    je suis pas expert en exposition COM, néanmoins j'ai cru comprendre que c'est depuis un appel .net que ca plante

    quelques trucs à essayer tout de même : vérifier les références (les refaire même) parce que là ca dit que ca ne trouve pas le setter de la propriété
    à tout hasard une fois que tu es sur de la ou pointe la référence tu peux la passer dans reflector pour voir si c'est le bon code source
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éclairé Avatar de shkyo
    Homme Profil pro
    Développeur Robotique - Administrateur systèmes
    Inscrit en
    Juin 2003
    Messages
    841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Robotique - Administrateur systèmes

    Informations forums :
    Inscription : Juin 2003
    Messages : 841
    Par défaut
    En fait la référence est un web service qui fonctionne très bien dans un programme autonome, mais en voulant passer par un système de DLL, j'ai cette erreur sans arrêt...

    Donc à priori elle fonctionne très bien, mais par contre, peux-tu préciser sur "reflector", je connais mal visual studio 2008, c'est quoi donc STP?

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 199
    Par défaut
    c'est écrit dans ma signature ...

    reflector est un décompilateur .net
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éclairé Avatar de shkyo
    Homme Profil pro
    Développeur Robotique - Administrateur systèmes
    Inscrit en
    Juin 2003
    Messages
    841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Robotique - Administrateur systèmes

    Informations forums :
    Inscription : Juin 2003
    Messages : 841
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    c'est écrit dans ma signature ...

    reflector est un décompilateur .net
    Effectivement, mais bon c'est payant et si au premier soucis, il faut que je commence à acheter des add-ins, c'est pas top...

    Il n'y a pas moyen avec la montagne de fonctionnalités qu'il y a d'origine dans VS 2008 de trouver mon soucis autrement?

    C'est sûr que le lien ne se fait pas (j'ai déjà effacé et reconstruit la référence web) parce que je n'ai pas (ou mal) déclaré un truc, mais quoi?...

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 199
    Par défaut
    y a une version gratuite sans le plugin pour vs

    sinon je comprends pas trop ton histoire de référence web que tu veux utiliser comme une dll, je ne suis pas expert là dessus ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/09/2007, 16h57
  2. Problème sur Request.ServerVariables("QUERY_STRING"
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 25/03/2005, 11h47

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