Inconvénient VB.Net

kammegg Messages postés 73 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 7 août 2006 - 5 juin 2006 à 02:36
cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 - 6 juin 2006 à 09:37
salut tout le monde

j'essaye d'afficher des données de ma BD access dans des TextBox.
le problème c'est que quand j'essaye de  le faire et quand il y a des données manquantes dans certains enregistrement mon système plante lors de la manipulation des données (premier, précédent, suivant, dernier). j'ai utilisé le Try Catch, mais quand je passe à un enregistrement où il y a des données manquantes j'ai les données de l'enregistrement où il y avait pas des données manquantes.

j'espere que j'étais bien clair.  et merci d'avance

9 réponses

cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 6
5 juin 2006 à 11:19
attention en .Net une donnée nulle n'est pas une variable avec Nothing mais un objet de type system.data.DBNull.
il faut en fait que lorsque tu remplies ta textbox tu testes si c'est du type DBNull et dans ce cas ne rien faire (ou mettre chaine vide ou une chaine prédéfinie du type "no data")
0
Nicoxs Messages postés 11 Date d'inscription mardi 25 octobre 2005 Statut Membre Dernière intervention 16 janvier 2007
5 juin 2006 à 15:56
Comme le dit cpoyo, il va falloir que tu mettes quelques choses du genre

If Not MaVariable is Nothing Then
    TextBox.text = MaVariable
Else
    TextBox.text = ""
0
cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 6
5 juin 2006 à 16:14
heu nan j'ai pas dit ca justement cette ligne va provoqué la même erreur
il ne faut pas tester si la variable est différent de nothing mais plutôt que le type de la variable est différent de DBNull
0
Nicoxs Messages postés 11 Date d'inscription mardi 25 octobre 2005 Statut Membre Dernière intervention 16 janvier 2007
5 juin 2006 à 16:17
Si la variable ne contient aucune valeur, elle sera bien égale à Nothing.
0

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

Posez votre question
cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 6
5 juin 2006 à 16:39
pour certain têtu : http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpref/html/frlrfsystemdbnullclasstopic.asp

dont voici un extrait :

Notes
Cette classe est utilisée pour indiquer l'absence de valeur connue, généralement dans une application de base de données.

Dans les applications de base de données, un objet null est une valeur de champ valide. Cette classe distingue une valeur null (un objet null) et une valeur non initialisée (l'instance DBNull.Value). Par exemple, un tableau peut avoir des enregistrements avec des champs non initialisés. Par défaut, ces champs non initialisés ont la valeur DBNull.

Cette classe est également utilisée dans COM Interop pour distinguer une variante VT_NULL associée à un objet null et une variante VT_EMPTY associée à l'instance DBNull.Value.
0
kammegg Messages postés 73 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 7 août 2006 1
5 juin 2006 à 16:49
Pour être bien claire, je vous propose le code qui est le suivant :







conn "provider microsoft.jet.oledb.4.0 ; data source = 'C:\bovin.mdb'"cnx =


New
OleDbConnectioncnx.ConnectionString = conn

cnx.Open()



sql = "select * from santé"


cmd =




New
OleDbCommand(sql)dta =


New
OleDbDataAdapter(cmd)cmd.Connection() = cnx


dta.Fill(dts, "santé")


dtt = dts.Tables("santé")









If
rownum > dtt.Rows.Count - 1

Then






















Me
.Show()


Me
.tbCodemaladie.Focus()


Else






Me
.tbCodemaladie.Text = dtt.Rows(rownum).Item("code_maladie")


Me
.cmbTypeMaladie.Text = dtt.Rows(rownum).Item("type_maladie")


Me
.cmbNomMaladie.Text = dtt.Rows(rownum).Item("nom_maladie")


Me
.tbCause.Text = dtt.Rows(rownum).Item("cause_maladie")


Me
.tbTraitement.Text = dtt.Rows(rownum).Item("traitement")


DataGrid1.SetDataBinding(dts, "santé")bnValider.Enabled =


False






End



If
0
cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 6
5 juin 2006 à 17:01
Pour être bien clair je te propose de relire mes réponses et de regarder aussi le lien précédement donné !!!.tu y verras une référence à une méthode Convert.IsDBNull
0
kammegg Messages postés 73 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 7 août 2006 1
5 juin 2006 à 21:33
bon j'ai essayé d'utiliser le code suivant :











If



Not
dtt.Rows(rownum).Item("type_maladie")

Is
DBNull

Then






Me
.cmbTypeMaladie.Text = dtt.Rows(rownum).Item("type_maladie")


Else






Me
.cmbTypeMaladie.Text = ""


End



If

Mais ça marche pas toujours. je ne sais si c'est pas correct ou bien il manque quelque chose.
0
cs_vpoyo Messages postés 363 Date d'inscription vendredi 14 février 2003 Statut Membre Dernière intervention 20 avril 2010 6
6 juin 2006 à 09:37
et 
If Not Convert.IsDBNull(dtt.Rows(rownum).Item("type_maladie")) Then
                blablabla
Else
                blablabla
EndIf

?
0
Rejoignez-nous