Problème IsDBNull, len et trim [Résolu]

Signaler
Messages postés
58
Date d'inscription
mardi 21 juillet 2009
Statut
Membre
Dernière intervention
25 décembre 2014
-
Messages postés
58
Date d'inscription
mardi 21 juillet 2009
Statut
Membre
Dernière intervention
25 décembre 2014
-
Bonjour,
Après désactivation Microsoft.VisualBasic dans les propriétés du projet ?

Les erreurs sont en rouge barrées

Do While IsDBNull(ds.Tables("Liste_Amis").Rows.Count - 1 <> i) = False

MaskedTextBox2.Text = Trim(TB_PrgCentralises.Text) + " " & Trim(TB_PrgDecentralises.Text)

If Len(APs.Text) > 18 Or Not IsNumeric(Me.APs.Text) Then
APs.Select()
cmd.Parameters.AddWithValue("", APs.Text.Trim())
Exit Sub
Else
cmd.Parameters.AddWithValue("APs.Trim()", APs.Text.Trim())
End If

Remarque : Trim est mentionné comme erreur mais pas celui en dessus ?

cmd.Parameters.AddWithValue("?.Trim()", Trim(txt_PrgCentralise.Text.ToUpper) + " " & Trim(txt_PrgDecentralise.Text.ToUpper)

Merci de votre aide.

6 réponses

Messages postés
14685
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
6 août 2020
144
Bonjour,

Ta boucle ne s'arrête que par ce qu'il y a le Exit Do
Do While True est tout aussi efficace que ta condition actuelle.

If IsDBNull(ds.Tables("Decision").Rows(i).Item(0)).ToString Then
If typeof ds.Tables("Decision").Rows(i).Item(0) is dbnull Then

Dans ton cas, je mettrais plutôt un For Each sur le Rows plutôt qu'un Do/Loop
For Each lRow As ... in ds.Tables("Decision").Rows(i)
If TypeOf lRow.Item(0) Is DBNull Then
Cela évite une erreur si toute la colonne est NULL.

Mon site
Messages postés
14685
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
6 août 2020
144
Bonjour,

Do While IsDBNull(ds.Tables("Liste_Amis").Rows.Count - 1 <> i) = False
Typeof Mavaleur Is DBNull

Trim(MaChaine)
Machaine.Trim

Len(MaChaine)
Machaine.Length

IsNumeric(*)
Integer/Double/Single/Long/... .TryParse

"APs.Trim()"
Est une chaine, si tu veux le trim de APs, il faut retirer les "

Si tu veux une saisie uniquement numérique, regardes du coté du contrôle NumericUpDown.

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Messages postés
58
Date d'inscription
mardi 21 juillet 2009
Statut
Membre
Dernière intervention
25 décembre 2014

Excise moi, mais j'ai pas trouvé la bonne écriture de ma boucle avec ton exemple : Typeof Mavaleur Is DBNull

Do While IsDBNull(ds.Tables("Liste_Amis").Rows.Count - 1 <> i) = False

je ne te remercie jamais assez NHenry.
Messages postés
14685
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
6 août 2020
144
Bonjour,

IsDBNull(ds.Tables("Liste_Amis").Rows.Count - 1 <> i) = False
L'expression :
IsDBNull(ds.Tables("Liste_Amis").Rows.Count - 1 <> i)
Renvoi toujours False, car
ds.Tables("Liste_Amis").Rows.Count - 1 <> i
Retourne un booléen.

Donc, ta boucle est infinie.

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site
Messages postés
58
Date d'inscription
mardi 21 juillet 2009
Statut
Membre
Dernière intervention
25 décembre 2014

Bonjour, mais ma boucle fait bien son rôle sauf que je ne trouve pas comment remplacer IsDBNull par "Typeof Mavaleur Is DBNull" Après désactivation Microsoft.VisualBasic

Dim i As Integer
        Dim j As Integer
        i = 0
        Do While IsDBNull(ds.Tables("Decision").Rows.Count - 1 <> i) = False
            If IsDBNull(ds.Tables("Decision").Rows(i).Item(0)).ToString Then
                Me.txtRub1Detail.Text = ""
                Me.txtRub12Detail.Text = ""
                Me.txtRub13Detail.Text = ""
            Else
                Me.txtRub1Detail.Text = (ds.Tables("Decision").Rows(Place_Enregistrement).Item(16)).ToString
                Me.txtRub12Detail.Text = (ds.Tables("Decision").Rows(Place_Enregistrement).Item(17)).ToString
                Me.txtRub13Detail.Text = (ds.Tables("Decision").Rows(Place_Enregistrement).Item(18)).ToString
                Exit Do
            End If
            i = i + 1
            Loop




-----------------------------------------------
time alone time will tell
Messages postés
58
Date d'inscription
mardi 21 juillet 2009
Statut
Membre
Dernière intervention
25 décembre 2014

"Cela évite une erreur si toute la colonne est NULL".

Ouiiii!!! je n'y avais pas pensé

merci encore pour le "For Each sur le Rows"

je vais m'y mettre au travail.









-----------------------------------------------
time alone time will tell