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

cs_JeffC1977 929 Messages postés vendredi 10 novembre 2000Date d'inscription 10 septembre 2010 Dernière intervention - 15 nov. 2009 à 21:04 - Dernière réponse : cs_JeffC1977 929 Messages postés vendredi 10 novembre 2000Date d'inscription 10 septembre 2010 Dernière intervention
- 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 

11 réponses

Répondre au sujet
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 15 nov. 2009 à 21:50
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_casy
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 15 nov. 2009 à 21:15
0
Utile
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
cboulas 2641 Messages postés mercredi 2 juin 2004Date d'inscription 8 janvier 2014 Dernière intervention - 15 nov. 2009 à 21:35
0
Utile
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
cboulas 2641 Messages postés mercredi 2 juin 2004Date d'inscription 8 janvier 2014 Dernière intervention - 15 nov. 2009 à 21:48
0
Utile
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
cs_JeffC1977 929 Messages postés vendredi 10 novembre 2000Date d'inscription 10 septembre 2010 Dernière intervention - 16 nov. 2009 à 01:42
0
Utile
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
cs_JeffC1977 929 Messages postés vendredi 10 novembre 2000Date d'inscription 10 septembre 2010 Dernière intervention - 16 nov. 2009 à 14:35
0
Utile
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
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 16 nov. 2009 à 15:26
0
Utile
        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
cs_JeffC1977 929 Messages postés vendredi 10 novembre 2000Date d'inscription 10 septembre 2010 Dernière intervention - 16 nov. 2009 à 16:03
0
Utile
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
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 16 nov. 2009 à 16:11
0
Utile
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
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 16 nov. 2009 à 16:25
0
Utile
... 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
cs_JeffC1977 929 Messages postés vendredi 10 novembre 2000Date d'inscription 10 septembre 2010 Dernière intervention - 16 nov. 2009 à 19:14
0
Utile
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.