VB.Net ADO.Net Bug avec DBNull (cellule vide)

cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 - 30 avril 2008 à 13:59
cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 - 30 avril 2008 à 18:09
Salut...
J'ai encore mon problème avec le DBNull avec ADO.Net


Je ne saisi pas pourquoi ca fais cela comme problème.
J'ai un DataGrid et j'affiche ma BD dans ce datagrid.
Je peux modifier la BD à partir du DataGrid.
Dans ma BD j'ai une dizaine de colonne avec plusieurs lignes (1500) et certaines cellules contiennent de l'information et d'autre pas.
Pour une raison que j'ignore, j'ai une problème avec ma huitième colonne. Si elle je veux faire une modification sur une ligne et
que la cellule de ma huitième colonne est vide alors j'ai ce message d'erreur:
InvalidCastException was unhandled
La conversion du type 'DBNull' en type 'String' n'est pas valide.


Comment je peux coder ma requête SQL si j'ai une cellule vide.
Dans ma BD j'ai mis toutes les colonne à Chaînes vider autorisé à True


Mes colonnes sont tous du texte
Je suis avec Access 2002


J'ai vraiment besoin de votre aide


merci

3 réponses

cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 1
30 avril 2008 à 16:29
Allo


 


Bon je sais que je doit utiliser le fonction Is Nothing

Ma question  Qu'est ce que je doit écrire dans la condition pour ne plus qu'il trouve d'erreur dans ma requête SQL qui suit ce code??????








If
DtgRec.CurrentRow.Cells(7).Value

Is



Nothing



Then







End



If

RequeteSQl..........

SVP je suis pris et je ne sais plus quoi faire

merci
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
30 avril 2008 à 17:14
Salut

reader("col8").toString() --> ne pose pas de probleme avec DbNull.Value() il me semble

Sinon il faut utiliser par exemple
reader("datecreation").Equals(DBNull.Value)  ? new DateTime() : DirectCast(reader("datecreation"),DateTime)

Je ne sais pas si ca fonctionne l'operateur ? : en vb.net c'est une traduction a la louche du c#
sinon il faut utiliser la forme verbeuse

if reader("datecreation").Equals(DBNull.Value) then
monobjet.date = new DateTime()
else
monobjet.date = DirectCast(reader("datecreation"),DateTime)
end if

Bon coding
0
cs_MagDix Messages postés 531 Date d'inscription lundi 5 juin 2006 Statut Membre Dernière intervention 6 octobre 2012 1
30 avril 2008 à 18:09
Salut...merci pour ton aide...

Premiere chose c'est n'est pas une date que je gère mais seulement du texte...

Secondes chose le Reader n'est pas pris en compte, ca me sort un message d'erreur.

Je viens tout juste de trouver un truc qui fonctionne mais que je ne saisi vraiment pas pourquoi ca fonctionne.

If DtgRec.CurrentRow.Cells(7).Value
Is
Nothing
Then
   DtgRec.CurrentRow.Cells(7).Value =
"Vide"
End
If

Ce que je ne saisi pas c'est que je n'ai plus d'erreur et que dans la cellule(7) j'ai une cellule toujours sans texte.

Es-tu en mesure de m'expliquet pourquoi ca fonctionne héhéhé
bisare comme question mais je veux saisir

Merci
0
Rejoignez-nous