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

Messages postés
12
Date d'inscription
vendredi 30 mai 2008
Dernière intervention
6 février 2009
- - Dernière réponse : coulibalysy
Messages postés
12
Date d'inscription
vendredi 30 mai 2008
Dernière intervention
6 février 2009
- 30 janv. 2009 à 18:28
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
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
29
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 118 internautes nous ont dit merci ce mois-ci

Commenter la réponse de PCPT
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
29
3
Merci
Me.TélPersonnel.Text = dtt.Rows(rownum).Item("Téléphone personnel")


.value ou .Tostring
?

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 118 internautes nous ont dit merci ce mois-ci

Commenter la réponse de PCPT
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
29
0
Merci
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 
Commenter la réponse de PCPT
Messages postés
12
Date d'inscription
vendredi 30 mai 2008
Dernière intervention
6 février 2009
0
Merci
Merci pour tes conseil 
Cà ne marche tjrs pas je deveoppe Visual Basic.net 2008 express
csy
Commenter la réponse de coulibalysy
Messages postés
12
Date d'inscription
vendredi 30 mai 2008
Dernière intervention
6 février 2009
0
Merci
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
Commenter la réponse de coulibalysy
Messages postés
12
Date d'inscription
vendredi 30 mai 2008
Dernière intervention
6 février 2009
0
Merci
Merci, mais malheureusement ça ne marche tjrs pas et je ne comprends pas
csy
Commenter la réponse de coulibalysy
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
29
0
Merci
tu as un message d'erreur? le même que dans ton premier post?
tu utilises le framework 3.5 ?
Commenter la réponse de PCPT
Messages postés
12
Date d'inscription
vendredi 30 mai 2008
Dernière intervention
6 février 2009
0
Merci
oui exactement et VB.Net express 2008
Commenter la réponse de coulibalysy
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
29
0
Merci
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 ;)
Commenter la réponse de PCPT
Messages postés
12
Date d'inscription
vendredi 30 mai 2008
Dernière intervention
6 février 2009
0
Merci
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
Commenter la réponse de coulibalysy
Messages postés
12
Date d'inscription
vendredi 30 mai 2008
Dernière intervention
6 février 2009
0
Merci
Merci tout marche bien maintenant

csy
Commenter la réponse de coulibalysy

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.