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

ASP.NET Discussion :

[VB.NET][ASP.Net]Specified cast is not valid


Sujet :

ASP.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut [VB.NET][ASP.Net]Specified cast is not valid
    Bonjour,

    J'ai le problème suivant :

    J'ai une classe mère "User" qui a deux classe fille "Lecteur" et "Employe"

    Lors du chargement du User dans la BD, une fois que j'ai récupéré son type je crée soit un Lecteur, soit un Employe et je l'attribue a ma variable de type User :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    user = bd_Lec.createLec(user)  ou
    user = bd_Emp.createEmp(user)
    bd_Lec retournant un lecteur et bd_Emp, retourne un employe.

    J'ai bien vérifié mes deux classes fille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Namespace Metier
                Public Class Employe
                      Inherits User
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Namespace Metier
                Public Class Lecteur
                      Inherits User
    Et ca fonctionne très bien si l'utilisateur est un lecteur... mais des que l'utilisateur est un employe :

    Specified cast is not valid !

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Je vous met le code complêt au cas où :

    Classe BDEmp.vb :

    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
    Imports BMLWebAppl.Metier
    Imports BMLWebAppl.BDAccess
     
    Namespace BDObjet
     
        Public Class BDEmp
     
            Public Function createEmp(ByVal user As User) As Employe
                Dim da As New DataAccess
                Dim ds As New DataSet
                'création d'un lecteur en reprenant les données déjà chargée dans la BD
                Dim emp As New Employe(user)
     
                Try
                    'Récupération des donnée propre au lecteur
                    ds = da.getDataSet("SELECT IdEmp, idBiblio, Abrev, TelProf, idUser FROM Employe WHERE (idUser = " & +user.Id.ToString & ")")
                    'Création du visiteur
                    If ds.Tables(0).Rows.Count > 0 Then
                        'Récupération des données propres au lecteur
                        emp.BiblioEmp = ds.Tables(0).Rows(0).Item("IDBIBLIO")
                        emp.Abrev = ds.Tables(0).Rows(0).Item("ABREV").ToString()
                        emp.TelProf = ds.Tables(0).Rows(0).Item("TELPROF").ToString()
                    End If
                    'Retourner l'objet visiteur
                    Return emp
     
                Catch ex As Exception
                    Throw
                Finally
                    da = Nothing
                    ds = Nothing
                End Try
            End Function
        End Class
    End Namespace
    Classe BDLecteur.vb
    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
    Imports BMLWebAppl.Metier
    Imports BMLWebAppl.BDAccess
     
    Namespace BDObjet
     
        Public Class BDLecteur
     
            Public Function createLec(ByVal user As User) As Lecteur
                Dim da As New DataAccess
                Dim ds As New DataSet
                'création d'un lecteur en reprenant les données déjà chargée dans la BD
                Dim lect As New Lecteur(user)
     
                Try
                    'Récupération des donnée propre au lecteur
                    ds = da.getDataSet("SELECT IdLec, IdUser, IdBiblio FROM Lecteur WHERE (IdUser = " & +user.Id.ToString & ")")
                    'Création du visiteur
                    If ds.Tables(0).Rows.Count > 0 Then
                        'Récupération des données propres au lecteur
                        lect.BiblioMem = ds.Tables(0).Rows(0).Item("IDBIBLIO")
                    End If
                    'Retourner l'objet visiteur
                    Return lect
     
                Catch ex As Exception
                    Throw
                Finally
                    da = Nothing
                    ds = Nothing
                End Try
            End Function
        End Class
    End Namespace
    classe BDUser.vb
    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
    Imports BMLWebAppl.Metier
    Imports BMLWebAppl.BDAccess
    Imports System.Data.SqlClient
     
    Namespace BDObjet
     
        Public Class BDUser
     
            Public Function loginCheck(ByVal pseudo As String, ByVal psw As String) As Lecteur
                Dim da As New DataAccess
                Dim ds As New DataSet
                Dim comm As New SqlCommand
     
     
                Try
                    comm.CommandType = CommandType.Text
     
                    comm.CommandText = "SELECT ""User"".IdUser, ""User"".Type, ""User"".Pseudo, ""User"".Psw, ""User"".NoCarte, ""Us" & _
                    "er"".ValAu, ""User"".Echeance, ""User"".Saisie, ""User"".Modif, ""User"".Prenom, ""User"".N" & _
                    "om, ""User"".Naiss, ""User"".Sexe, ""User"".Ind, ""User"".Dpt, ""User"".GrpPret, ""User"".Gr" & _
                    "pStat, ""User"".Inst, ""User"".Adresse, ""User"".No, ""User"".NPA, ""User"".Ville, ""User""." & _
                    "Canton, ""User"".Pays, ""User"".TelPrive, ""User"".TelNatel, ""User"".Mail, ""User"".Titre" & _
                    ", ""User"".Nationalite, ""User"".Cot, Statut.Description AS Statut FROM ""User"" INNER" & _
                    " JOIN Statut ON ""User"".IdStatut = Statut.IdStatut WHERE (""User"".Pseudo = @Pseudo" & _
                    ") AND (""User"".Psw = @Psw)"
     
                    comm.Parameters.Add(New System.Data.SqlClient.SqlParameter("@PSEUDO", System.Data.SqlDbType.VarChar, 30))
                    comm.Parameters.Add(New System.Data.SqlClient.SqlParameter("@PSW", System.Data.SqlDbType.VarChar, 30))
                    comm.Parameters("@PSEUDO").Value = pseudo
                    comm.Parameters("@PSW").Value = psw
                    'Récupération d'un utilisateur
                    ds = da.getDataSet(comm)
                    'Création d'un lecteur ou d'un employer
                    Return CreateUser(ds)
     
                Catch ex As Exception
                    Throw
                Finally
                    da = Nothing
                    ds = Nothing
                End Try
            End Function
     
            Public Function CreateUser(ByRef ds As DataSet) As User
                Dim user = New User
                Dim bd_emp As New BDEmp
                Dim bd_Lec As New BDLecteur
                'Si le DataSet contient un utiisateur
                If ds.Tables(0).Rows.Count > 0 Then
                    'Charger ses données personnelles
                    user.Id = ds.Tables(0).Rows(0).Item("IDUSER")
                    user.Pseudo = ds.Tables(0).Rows(0).Item("PSEUDO").ToString()
                    user.Pwd = ds.Tables(0).Rows(0).Item("PSW").ToString()
                    If Not ds.Tables(0).Rows(0).IsNull("NOCARTE") Then
                        user.NoCarte = ds.Tables(0).Rows(0).Item("NOCARTE")
                    End If
                    If Not ds.Tables(0).Rows(0).IsNull("VALAU") Then
                        user.ValAu = ds.Tables(0).Rows(0).Item("VALAU")
                    End If
                    If Not ds.Tables(0).Rows(0).IsNull("ECHEANCE") Then
                        user.Echeance = ds.Tables(0).Rows(0).Item("ECHEANCE")
                    End If
                    user.Saisie = ds.Tables(0).Rows(0).Item("SAISIE")
                    If Not ds.Tables(0).Rows(0).IsNull("MODIF") Then
                        user.Modif = ds.Tables(0).Rows(0).Item("MODIF")
                    End If
                    user.Prenom = ds.Tables(0).Rows(0).Item("PRENOM").ToString()
                    user.Nom = ds.Tables(0).Rows(0).Item("NOM").ToString()
                    user.Naiss = ds.Tables(0).Rows(0).Item("NAISS")
                    user.Ind = ds.Tables(0).Rows(0).Item("IND").ToString()
                    user.Sexe = ds.Tables(0).Rows(0).Item("SEXE").ToString()
                    user.Dpt = ds.Tables(0).Rows(0).Item("DPT").ToString()
                    user.GpPret = ds.Tables(0).Rows(0).Item("GRPPRET").ToString()
                    user.GpStat = ds.Tables(0).Rows(0).Item("GRPSTAT").ToString()
                    user.Inst = ds.Tables(0).Rows(0).Item("INST").ToString()
                    user.Adr = ds.Tables(0).Rows(0).Item("ADRESSE").ToString()
                    user.No = ds.Tables(0).Rows(0).Item("NO")
                    user.NPA = ds.Tables(0).Rows(0).Item("NPA")
                    user.Ville = ds.Tables(0).Rows(0).Item("VILLE").ToString()
                    user.Cant = ds.Tables(0).Rows(0).Item("CANTON").ToString()
                    user.Pays = ds.Tables(0).Rows(0).Item("PAYS").ToString()
                    user.TelPrive = ds.Tables(0).Rows(0).Item("TELPRIVE").ToString()
                    user.TelNat = ds.Tables(0).Rows(0).Item("TELNATEL").ToString()
                    user.Email = ds.Tables(0).Rows(0).Item("MAIL").ToString()
                    user.Titre = ds.Tables(0).Rows(0).Item("TITRE").ToString()
                    user.Nation = ds.Tables(0).Rows(0).Item("NATIONALITE").ToString()
                    user.Cot = ds.Tables(0).Rows(0).Item("COT")
                    user.Statut = ds.Tables(0).Rows(0).Item("STATUT").ToString()
                    'Vérifier son type
                    For Each oRow As DataRow In ds.Tables(0).Rows
                        If oRow.Item("TYPE") = 0 Then
                            user = bd_Lec.createLec(user)
                        ElseIf oRow.Item("TYPE") = 1 Then
                            user = bd_emp.createEmp(user)
                        End If
                    Next
                Else
                    user = Nothing
                End If
                'Retourner l'objet visiteur
                Return user
            End Function
        End Class
    End Namespace

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Chercher plus...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Public Function loginCheck(ByVal pseudo As String, ByVal psw As String) As Lecteur

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/07/2009, 03h27
  2. Participez à la F.A.Q .NET ASP.NET Delphi.NET
    Par Jérôme Lambert dans le forum Contribuez
    Réponses: 0
    Dernier message: 05/12/2008, 01h00
  3. Participez à la F.A.Q .NET ASP.NET VB.NET
    Par Jérôme Lambert dans le forum Contribuez
    Réponses: 0
    Dernier message: 05/12/2008, 01h00
  4. Specified cast is not valid
    Par Titi41 dans le forum ASP.NET
    Réponses: 11
    Dernier message: 29/05/2008, 18h38
  5. Erreur "specified cast is not valid"
    Par [DreaMs] dans le forum Delphi .NET
    Réponses: 1
    Dernier message: 30/01/2006, 22h15

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