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 :

La conversion du type 'DBNull' en type 'String' n'est pas valide.


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Points : 13
    Points
    13
    Par défaut La conversion du type 'DBNull' en type 'String' n'est pas valide.
    Je suis débutant en VB.net et je developpe sur VB.Net Express 2008
    Lorsque je lance l'exe mon programme me signale l'erreur suivante:
    "La conversion du type 'DBNull' en type 'String' n'est pas valide." à la ligne que j'ai présenté en rouge dans le programme ci-dessus. SVP venez moi en aide.
    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
     'déclaration des variables
        Private cnx As OleDbConnection
        Private cmd As OleDbCommand
        Private dta As OleDbDataAdapter
        Private cmdb As OleDbCommandBuilder
        Private dts As New DataSet
        Private dtt As DataTable
        Private dtc As DataColumn
        Private dtr As DataRow
        Private rownum As Integer
        Private conn As String
        Private sql As String
        Private Sub Inscriptions_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            'ouverture de la connection(à partir du répertoire de l'application)
            conn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=..\Etablissements.accdb"
            cnx = New OleDbConnection
            cnx.ConnectionString = conn
            cnx.Open()
            'exécution de la commande(cmd),                      
            'du dataadapter (dta),                                
            'du dataset(dts),                                  
            'de la datatable (dtt)                                          
            'sql=>cmd=>dta                                                  
            'cnx=>cmd                                                        
            'dta=>dts=>dtt                                     
            sql = "select Étudiants.* from Étudiants"
            cmd = New OleDbCommand(Sql)
            dta = New OleDbDataAdapter(cmd)
            cmd.Connection() = cnx
    
            'chargement du DataSet à partir du DataAdapter                  
            dta.Fill(dts, "Étudiants")
    
            'chargement de la DataTable à partir du DataSet                 
            dtt = dts.Tables("Étudiants")
    
            'si la table est vide alors
            If rownum > dtt.Rows.Count - 1 Then
    
                'désactivation des boutons pour éviter une erreur 
                'si la table est vide
                BntNouveau.Enabled = False
                BntEnrégistrer.Enabled = True
                BntSupprimer.Enabled = False
                BntQuitter.Enabled = False
    
                Me.Show()
                Me.Nom.Focus()
    
            Else
    
                'affichage des données dans les textbox             
                Me.Nom.Text = dtt.Rows(rownum).Item("nom")
                Me.Prénoms.Text = dtt.Rows(rownum).Item("prénom")
                Me.LieuNais.Text = dtt.Rows(rownum).Item("Lieu de Naissance")
                Me.TélPersonnel.Text = dtt.Rows(rownum).Item("Téléphone personnel")
                Me.TélProfessionnel.Text = dtt.Rows(rownum).Item("Téléphone professionnel")
    
                Me.TelMobile.Text = dtt.Rows(rownum).Item("Téléphone mobile")
                Me.Mail.Text = dtt.Rows(rownum).Item("Page Web")
                Me.Télécopie.Text = dtt.Rows(rownum).Item("Numéro de télécopie")
                Me.Adresse.Text = dtt.Rows(rownum).Item("Adresse")
                Me.Ville.Text = dtt.Rows(rownum).Item("Ville")
                Me.CP.Text = dtt.Rows(rownum).Item("Code Postal")
                Me.Departement.Text = dtt.Rows(rownum).Item("Département")
                Me.Remarque.Text = dtt.Rows(rownum).Item("Remarques")
                Me.IDEtudiant.Text = dtt.Rows(rownum).Item("ID étudiant")
                Me.DateInscription.Text = dtt.Rows(rownum).Item("Date Inscription")
                Me.NumInscription.Text = dtt.Rows(rownum).Item("N°Inscription")
                Me.Hinscription.Text = dtt.Rows(rownum).Item("Heure Inscription")
    
                Me.ContactUrgence.Text = dtt.Rows(rownum).Item("Nom contact en cas d'urgence")
                Me.Tél1Urgence.Text = dtt.Rows(rownum).Item("Téléphone du contact pour les urgences 1")
                Me.Tél2Urgence.Text = dtt.Rows(rownum).Item("Téléphone du contact pour les urgences 2")
                Me.RelationUrgence.Text = dtt.Rows(rownum).Item("Relation contact pour les urgences")
                Me.NomMedecin.Text = dtt.Rows(rownum).Item("Nom du médecin")
                Me.TélMedecin.Text = dtt.Rows(rownum).Item("Numéro de tél du médecin")
                Me.Allergies.Text = dtt.Rows(rownum).Item("Allergies")
                Me.Médicaments.Text = dtt.Rows(rownum).Item("Médicaments")
    
                'affichage des données dans le datagrid             
                DataGridView1.DataSource = dtt
    
                BntEnrégistrer.Enabled = False
    
            End If
    
            BntQuitterRecherche.Enabled = False
    
        End Sub

  2. #2
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Le champ telephone personnel de ton étudiant est NULL dans la base. Quand c'est raméné dans ton dataTable cela prend la valeur DBNull.Value.

    Transformer un DBNull en string n'est pas possible, d'où l'erreur.

    Il faut que tu vérifies que les données que tu ramène ne sont pas NULL (DBNull) avant de les convertir en String et de les afficher dans les textbox.
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Points : 13
    Points
    13
    Par défaut reponse
    oui comment faire si je n'ai pas encere saisi de données dans la base

  4. #4
    Membre averti
    Inscrit en
    Décembre 2008
    Messages
    256
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Décembre 2008
    Messages : 256
    Points : 311
    Points
    311
    Par défaut
    Salut,
    p'tite remarque au passage: les noms de colonne avec des accents et des espaces, du genre "Téléphone personnel", il vaut mieux éviter, c'est pas recommandé.
    Il y a toujours au moins deux solutions à un problème.

    http://software-design-development.blogspot.com/

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Points : 13
    Points
    13
    Par défaut
    Ok C'est compris merci pour les conseils
    mais SVP je n'es pas encore de solution à mon problème

  6. #6
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    La solution a été donnée
    Il faut que tu vérifies que les données que tu ramène ne sont pas NULL (DBNull) avant de les convertir en String et de les afficher dans les textbox.
    Après tu n'as plus qu'à coder tout ça. Et si tu sèches une recherche google ou sur le forum devrait t'aider.
    Pas de questions techniques par MP

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 22
    Points : 8
    Points
    8
    Par défaut
    Ca doit être un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If dtt.Rows(rownum).Item("Téléphone personnel") Is DBNull.Value Then
      Me.TélPersonnel.Text = ""
    Else
      Me.TélPersonnel.Text = dtt.Rows(rownum).Item("Téléphone personnel")
    End If

  8. #8
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    et plus précisément :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If IsDBNull(dtt.Rows(rownum).Item("Téléphone personnel"))  Then
      Me.TélPersonnel.Text = ""
    Else
      Me.TélPersonnel.Text = dtt.Rows(rownum).Item("Téléphone personnel")
    End If

  9. #9
    Membre à l'essai
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Points : 13
    Points
    13
    Par défaut
    Merci problème resolu

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    programmation
    Inscrit en
    Mars 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : programmation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut si vous chercher de conversion IsDBNull to String
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Com.CommandText = "select Max(Numero) from Traitement"
    '----------------------------" Champs"----"Nom du la base" 
            Dim max = Com.ExecuteScalar
            If IsDBNull(max) Then
     
                Label28.Text = "0"
            Else
                Label28.Text = CStr(max + 1)
            End If
     
    '----------- Solution efficace 100% inchal2alh ------------

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

Discussions similaires

  1. [Débutant] la conversion de type 'DbNull' en type 'Double' n'est pas valide
    Par billinfopro dans le forum VB.NET
    Réponses: 2
    Dernier message: 28/09/2014, 01h29
  2. [Débutant] La conversion du type 'DBNull' en type 'String' n'est pas valide-VB .NET
    Par Aiman.elmachi dans le forum VB.NET
    Réponses: 2
    Dernier message: 10/06/2014, 14h55
  3. Réponses: 2
    Dernier message: 14/02/2011, 12h24
  4. Réponses: 13
    Dernier message: 02/11/2010, 16h03
  5. Réponses: 2
    Dernier message: 18/02/2009, 13h30

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