VB.Net Condition pour modifier une valeur si la valeur est BDNull ???

Résolu
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 - 15 nov. 2009 à 21:04
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 - 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

11 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
15 nov. 2009 à 21:50
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
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
15 nov. 2009 à 21:15
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]
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
15 nov. 2009 à 21:35
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
0
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
15 nov. 2009 à 21:48
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
0

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

Posez votre question
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 4
16 nov. 2009 à 01:42
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
0
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 4
16 nov. 2009 à 14:35
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
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 nov. 2009 à 15:26
        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
0
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 4
16 nov. 2009 à 16:03
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
16 nov. 2009 à 16:11
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
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
16 nov. 2009 à 16:25
... 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)

++
0
cs_JeffC1977 Messages postés 928 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 23 septembre 2023 4
16 nov. 2009 à 19:14
J'ai trouvé

merci à tous

c'est très apprécié
0
Rejoignez-nous