Prolème de Conversion de type DBNuull en String

Résolu
coulibalysy Messages postés 12 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 6 février 2009 - 24 janv. 2009 à 12:47
coulibalysy Messages postés 12 Date d'inscription vendredi 30 mai 2008 Statut Membre 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

11 réponses

PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 48
25 janv. 2009 à 20:18
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
3
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 48
30 janv. 2009 à 06:54
Me.TélPersonnel.Text = dtt.Rows(rownum).Item("Téléphone personnel")


.value ou .Tostring
?
3
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 48
24 janv. 2009 à 13:43
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 
0
coulibalysy Messages postés 12 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 6 février 2009
24 janv. 2009 à 20:09
Merci pour tes conseil 
Cà ne marche tjrs pas je deveoppe Visual Basic.net 2008 express
csy
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coulibalysy Messages postés 12 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 6 février 2009
24 janv. 2009 à 20:26
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
0
coulibalysy Messages postés 12 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 6 février 2009
28 janv. 2009 à 19:29
Merci, mais malheureusement ça ne marche tjrs pas et je ne comprends pas
csy
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 48
28 janv. 2009 à 19:39
tu as un message d'erreur? le même que dans ton premier post?
tu utilises le framework 3.5 ?
0
coulibalysy Messages postés 12 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 6 février 2009
29 janv. 2009 à 08:54
oui exactement et VB.Net express 2008
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 48
29 janv. 2009 à 18:24
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 ;)
0
coulibalysy Messages postés 12 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 6 février 2009
30 janv. 2009 à 01:07
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
0
coulibalysy Messages postés 12 Date d'inscription vendredi 30 mai 2008 Statut Membre Dernière intervention 6 février 2009
30 janv. 2009 à 18:28
Merci tout marche bien maintenant

csy
0