Prolème de Conversion de type DBNuull en String [Résolu]

Signaler
Messages postés
12
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
6 février 2009
-
Messages postés
12
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
6 février 2009
-
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.

 '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

11 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
oups en effet isempty n'existe plus en vb.net...

tu peux passer par ISNOTHING(x), ou STRING.ISNULLOREMPTY(x)

if string.IsNullOrEmpty(dtt.Rows(rownum).Item("Téléphone personnel") then


  Me.TélPersonnel.Text = string.empty




else
  Me.TélPersonnel.Text = dtt.Rows(rownum).Item("Téléphone personnel")
end if
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
Me.TélPersonnel.Text = dtt.Rows(rownum).Item("Téléphone personnel")


.value ou .Tostring
?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
salut,

le forum ne supporte pas le BBCODE


Me.TélPersonnel.Text = dtt.Rows(rownum).Item("Téléphone personnel")




tu dois tester "non null" avant d'attribuer la valeur

if (not isnull(
dtt.Rows(rownum).Item("Téléphone personnel")
)) andelse (not isempty(
dtt.Rows(rownum).Item("Téléphone personnel")
)) then
Me.TélPersonnel.Text = dtt.Rows(rownum).Item("Téléphone personnel")




pas testé mais çà devrait être bon

ps : évite les accents dans les noms de tes contrôles (et dans tout en fait : variables, noms de form, noms de modules, etc..)
++

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Messages postés
12
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
6 février 2009

Merci pour tes conseil 
Cà ne marche tjrs pas je deveoppe Visual Basic.net 2008 express
csy
Messages postés
12
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
6 février 2009

Le message d'erreur qui apparait est le suivant :
Le nom isnull n'est pas déclaré
le  nomp isempty n'est pas déclaré

cvomment les déclarer
csy
Messages postés
12
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
6 février 2009

Merci, mais malheureusement ça ne marche tjrs pas et je ne comprends pas
csy
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
tu as un message d'erreur? le même que dans ton premier post?
tu utilises le framework 3.5 ?
Messages postés
12
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
6 février 2009

oui exactement et VB.Net express 2008
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
umm....

quelques idées :
if blabla is nothing then
if blabla = nothing then
if isdbempty(blabla) then
if blabla.tostring.equals(string.empty) then

ps : en vb2008 ( VS version complète du moins) on peut choisir d'utiliser un autre framework que le 3.5, pour çà que je demandais ;)
Messages postés
12
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
6 février 2009

Toujours le même message mais cette fois-ci juste après le else, au niveau de Me.TélPersonnel.Text = dtt.Rows(rownum).Item("Téléphone personnel")

Voici le code, les autres exemples ne marchent pas.

If dtt.Rows(rownum).Item("Téléphone personnel")is nothing then

  Me.TélPersonnel.Text = string.empty

else

  Me.TélPersonnel.Text = dtt.Rows(rownum).Item("Téléphone personnel")

end If
Messages postés
12
Date d'inscription
vendredi 30 mai 2008
Statut
Membre
Dernière intervention
6 février 2009

Merci tout marche bien maintenant

csy