VB.Net Condition pour modifier une valeur si la valeur est BDNull ??? [Résolu]

Messages postés
929
Date d'inscription
vendredi 10 novembre 2000
Dernière intervention
10 septembre 2010
- - Dernière réponse : cs_JeffC1977
Messages postés
929
Date d'inscription
vendredi 10 novembre 2000
Dernière intervention
10 septembre 2010
- 16 nov. 2009 à 19:14
Bonjour

Je veux changer le contenu des certaine cellule de mon datagridview.

J'utilise ce code mais ca me sort toujours un erreur

    Do Until i = Dtt.Rows.Count
                If dtgPaiements.Rows(4).Cells(i).Value "" Then dtgPaiements.Rows(4).Cells(i).Value " "
                If dtgPaiements.Rows(4).Cells(i).Value "O" Then dtgPaiements.Rows(4).Cells(i).Value "MasterCard"
                If dtgPaiements.Rows(4).Cells(i).Value "X" Then dtgPaiements.Rows(4).Cells(i).Value "American Express"
                i = i + 1
            Loop


À ma premiere condition ca me donne cette erreur:

L'opérateur '=' n'est pas défini pour type 'DBNull' et chaîne "".



Comment faire pour régler ce problème de valeur null quand en plus je sais que la valeur n'Est pas null...


merci de votre aide
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
3
Merci
Pour vérifier si un champ de base de donné retourné est null, on ne le compare pas à ""

Soit tu utilise la méthode IsDBNull(TonChamp) qui te renvoie True ou False soit tu compare à la valeur DBNull.value

[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i

Dire « Merci » 3

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

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de cs_casy
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
0
Merci
salut,

teste sur la taille de value et non une comparaison d'une chaine ""

ps : pense au "ELSE", sinon tu vas ensuite re-(re-)comparer bdnull à "o" et "x"

[hr]
Commenter la réponse de PCPT
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
8 janvier 2014
0
Merci
Salut, la propriété Value te renvoi un objet, convertie la en ToString() et tu pourra comparer

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
Commenter la réponse de cboulas
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Dernière intervention
8 janvier 2014
0
Merci
Je pensais à cela, essai également à l'aide de la classe : System.DBNull

Chris...
- La vérité n'est pas ailleurs, elle est sous le nez de chacun, quelques mouvements neuronale permettent de l'entrevoir -
MCPD (webform-winform) / MCSA / MCDST / MCT
Commenter la réponse de cboulas
Messages postés
929
Date d'inscription
vendredi 10 novembre 2000
Dernière intervention
10 septembre 2010
0
Merci
Salut à tous merci pour votre aide....

Effectivement la méthode IsDBNull(TonChamp) semble fonctionner.

Je croyais "avoir tout réglé" mais non j'arrive à l'autre condition et hop... encore une erreur :(

Lorsque j'arrive a cette condition ca dit:
If dtgPaiements.Rows(4).Cells(i).Value "O" Then dtgPaiements.Rows(4).Cells(i).Value "MasterCard"

La conversion de la chaîne "O" en type 'Double' n'est pas valide.

Dans mon fichier Acces la valeur "O" est une lettre et c'est une colonne de type texte.
J'ai bien vérifier et c'est dans la colonne 4 (0, 1,2,3,4, la colonne 4).

Pourquoi ca me sort un bug de Type Double... ???

merci de votre aide
Commenter la réponse de cs_JeffC1977
Messages postés
929
Date d'inscription
vendredi 10 novembre 2000
Dernière intervention
10 septembre 2010
0
Merci
Rebonjour
Bon et bien je ne sais pas tout j'essais des truc et je n'y arrive pas,..

Je ne saisi pas comment faire afin que ma seconde confition soit pris en compte je ne sais pas comment le coder pour régler l'erreur..

Je vous montre mon code qui est loin d'être OK...
Si vous pouvez me donner un exmeple car je m'y perds un peu trop :(

PCPT: Comment régler le bug avec le Else car ma deuxième conditon de "bugé" à cause de cela ?

merci de votre aide c'est très apprécié

Do Until i = Dtt.Rows.Count
  If IsDBNull(dtgPaiements.Rows(4).Cells(i).Value) Then 'Ne fait rien
  ElseIf dtgPaiements.Rows(4).Cells(i).Value = "O" Then
    dtgPaiements.Rows(4).Cells(i).Value = "MasterCard"
  ElseIf dtgPaiements.Rows(4).Cells(i).Value = "X" Then
    dtgPaiements.Rows(4).Cells(i).Value = "American Express"
  End If
i = i + 1
Loop
Commenter la réponse de cs_JeffC1977
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
0
Merci
        Do Until i = Dtt.Rows.Count
            With dtgPaiements.Rows(4).Cells(i)
                If IsDBNull(.Value) Then
                    .Value = " "
                Else
                    Dim sValue As String = .Value.ToString
                    If sValue = "O" Then
                        .Value = "MasterCard"
                    ElseIf sValue = "X" Then
                        .Value = "American Express"
                    End If
                End If
                i = i + 1
            End With
        Loop


à tester
Commenter la réponse de PCPT
Messages postés
929
Date d'inscription
vendredi 10 novembre 2000
Dernière intervention
10 septembre 2010
0
Merci
Salut merci pour le code..

ca fonctionne jusqu'à ce que i = 7

J'ai cette erreur:
L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.
Nom du paramètre : index

Le bug est que Dtt.Rows.Count vaut 14

Donc à mes yeux cela ne devrait pas créer un erreur ???

merci encore
Commenter la réponse de cs_JeffC1977
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
0
Merci
Do Until i = Dtt.Rows.Count
With dtgPaiements.Rows(4).Cells(i)

ya pas un bug là !!!!
pour chaque ligne de ton dataset, tu parcours toujours les colonnes de la même ligne, la 4.


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
0
Merci
... autre bizarrerie
count sur Dtt, action sur dtgPaiements

mais "hors limite" est de toute façon un autre problème sans rapport à dbnull, tu sauras trouver sans mal selon le reste de ton projet que nous ne connaissons pas (nombre et nom des grids, nom défini par paramètres de procédure ou vrai nom des contrôles, etc)

++
Commenter la réponse de PCPT
Messages postés
929
Date d'inscription
vendredi 10 novembre 2000
Dernière intervention
10 septembre 2010
0
Merci
J'ai trouvé

merci à tous

c'est très apprécié
Commenter la réponse de cs_JeffC1977

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.