IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Problème dans mon TABLEAU


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 44
    Par défaut Problème dans mon TABLEAU
    Bonjour
    je suis entrains de faire un petit programme pour me faciliter la Vie au travail, et je bloque dans les tableaux .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
      Dim a As Integer = 0
            Dim tablIP(20) As String
     
            Try
                Dim sConnString As String = req_sql
                connection = New OleDbConnection(sConnString)
                req = "SELECT chifrement,adrip FROM Table_Ping1 ;"
                command = New OleDbCommand(req, connection)
                connection.Open()
                Dim dr As OleDbDataReader = command.ExecuteReader
                a = 0
                While dr.Read
                    a = a + 1
                    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
                    tablIP(a) = dr(1)
                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
                End While
                dr.Close()
                connection.Close()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
        End Sub
    je me connecte, tout va bien j'ai une erreur : La conversion du type "DBNULL'" en types "String'" n'est pas valide.
    l'erreur viendrait de là ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
                    tablIP(a) = dr(1)
                    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Si je commente mon tableau, il y a plu l'erreur .
    Mon but est de récupérer le contenue de ma base de données dans un tableau pour le récupéré par la suite dans mon programme.

    Merci d'avance
    Cordialement
    L.Fabien

    FAB

  2. #2
    Membre Expert Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Par défaut
    Une des lignes (ou toutes ?) que te retourne ta requête est nul. (Dans le sens objet vide/Nothing)

    Si tu forces en dr(1).ToString tu auras une chaîne vide, mais au moins tu auras une chaîne plutôt que juste un objet vide.

    EDIT: Oui, j'ai écris ça, j'ai pris une tasse de café, j'ai relu ça, je me suis rendu compte de ma boulette ... Il faut que tu testes que le retour de chaque Rows ne soit pas DBnull.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If dr(1) isNot DBnull Then tablIP(a) = dr(1) else tablIP(a) = String.Empty End if
    Si tu veux des conseils pour améliorer ton code, n'hésite pas ... Je ne suis pas très friand de ta méthode de tableau de string à 20, alors qu'il sera fourni par ta Bdd, qu'arrivera-t-il le jour où tu auras plus de 20 rows retournées ?
    Egalement, que fais-tu de la colonne chiffrement que tu récupères via ton select ? Actuellement elle part aux oubliettes et tu ne sauvegardes que la colonne adresseIp...

    Ps: N'oublie pas de .Dispose() ton oleDbCommand

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 44
    Par défaut
    Merci de votre réponse très rapide .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Private Sub BD_Recup1()
            Try
                Dim sConnString As String = req_sql
                connection = New OleDbConnection(sConnString)
                req = "SELECT chifrement,adrip,namepc FROM Table_Ping1 ;"
                command = New OleDbCommand(req, connection)
                connection.Open()
                Dim dr As OleDbDataReader = command.ExecuteReader
                a = 0
                While dr.Read
                    a = a + 1
                    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
                    If dr(1) IsNot DBNull Then
                        tablIP1(a) = dr(1)
                    Else
                        tablIP1(a) = String.Empty
                    End If
     
     
                    '  tablIP1(a) = dr(1)
                    ' namepc1(a) = dr(2)
     
     
                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
                End While
                dr.Close()
                connection.Close()
            Catch ex As Exception
                MsgBox(ex.Message)
                TextBox1.Text = ex.Message
            End Try
    j'ai rajouter cella :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
                    If dr(1) IsNot DBNull Then
                        tablIP1(a) = dr(1)
                    Else
                        tablIP1(a) = String.Empty
                    End If
     
     
                    '  tablIP1(a) = dr(1)
                    ' namepc1(a) = dr(2)
     
     
                    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    et j'ai ce message :
    La conversion du type 'DBNull' en type 'String' n'est pas valide.

  4. #4
    Membre très actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If dr(1) IsNot DBNull.Value Then
                        tablIP1(a) = dr(1)
                    Else
                        tablIP1(a) = String.Empty
                    End If

    ca devrai marcher

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 44
    Par défaut
    Re

    j'avez déjà testé avec DBNull.Value
    il me sort ce message d'erreur avec :

    Variable objet ou variable d'un bloc With non définie.
    je suis novice en programmation.
    je suis ouvert à tout type de conseils .

    Cordialement

  6. #6
    Membre très actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Par défaut
    Variable objet ou variable d'un bloc With non définie
    ce message ce ne devrai pas venir de l'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If dr(1) IsNot DBNull.Value Then

    peut être le pb est ailleurs

    essaye d'executer cette patie pas à pas pour voir de quelle instruction venait
    cette erreur

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 44
    Par défaut
    Bonjour
    Je ne comprend pas .
    je vais commenter ce que je fait pour mieux vous expliquer



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    '  
    Imports System.Data
    Imports System.Data.OleDb
    Imports System.IO
    Imports System
    Public Class A_Depart
        Private connection As OleDbConnection
        Private reqentree, reqsortie, reqid As String
        Private command As OleDbCommand
        Private dr As OleDbDataReader
        Private num_unik As Integer
        Private dataAdapter As OleDbDataAdapter
        Private MonDR As OleDbDataReader
        Private req As String
        Private sConnString As String
        Private heure As Date = Date.Now
     
    Private Sub A_Depart_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
     
     
    je creer mon tableau tablIP4 
            Dim tablIP4(100) As String
     
            ' je creer une variable a qui va etre incrémenter 
            Dim a As String
     
            'je me connecte sur ma base de donnée 
            Try
                Dim sConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Documents and Settings\Administrateur\Mes documents\VB.Net\BD_PING.mdb ; Jet OLEDB:Database Password=azerty;;"
                connection = New OleDbConnection(sConnString)
                req = "SELECT chifrement,adrip,namepc FROM Table_Ping4 ;"
                command = New OleDbCommand(req, connection)
                connection.Open()
                Dim dr As OleDbDataReader = command.ExecuteReader
                a = 0
                While dr.Read
                    a = a + 1
                    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
                    ' je orend mon tableau , que j'incrémente de 1 en y entant ce qui ce trouve sur ma table de ma base de donnée 
                    tablIP4(a) = dr(1)
     
                    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
                End While
                dr.Close()
                connection.Close()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
    end sub

  8. #8
    Membre très actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 175
    Par défaut
    je crois que le pb est dans :

    tu devrai le declarer Integer

  9. #9
    Membre émérite

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Par défaut
    Salut

    d'abord au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim tablIP(20) As String
    tu as toujours 21 enrgistrements dans Table_Ping1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim tablIP as new list (of string)
    aussi pas besoin de la variable a
    et dans la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     While dr.Read
            If dr(1) IsNot DBNull Then
                         tablIP.add(dr(1))
                  End If
         End while
    tiens tu as deux requetes ?
    req = "SELECT chifrement,adrip FROM Table_Ping1 ;"
    req = "SELECT chifrement,adrip,namepc FROM Table_Ping4 ;"

    mais tu te sers seulement de adrip et comme dit _Ez3kiel le reste est parti au
    oubliette

    dans ta table table_Ping1 as tu des enregistrements où le champ adrip est
    vide ?
    si oui pourquoi ? pas logique

  10. #10
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour Fabdunet13

    Plusieurs loupes sur les tableaux dans vb.net ...versatile tableau à revoir.

    PRIMO: un tableau doit etre toujours initialise meme si tu ne connais ses dimensions comme c'est ton cas...
    SECUNDO : le 1er indice du tableau est "zeroe" en vb.net ...et l'incrementation se fait à la fin du While....

    TERTIO: tu peux toujours le redimensionner lors de l'incrementation avec Redim Preserve Array(new dimension).....Preserve :preserve son contenu sans quoi il est perdu....

    QUATRO: il y a un loupe dans le test sur DBNull ,car DBNull est un type ( un class) pas une valeur....

    ton code revu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
     
    '  
    Imports System.Data
    Imports System.Data.OleDb
    Imports System.IO
    Imports System
    Public Class A_Depart
        Private connection As OleDbConnection
        Private reqentree, reqsortie, reqid As String
        Private command As OleDbCommand
        Private dr As OleDbDataReader
        Private num_unik As Integer
        Private dataAdapter As OleDbDataAdapter
        Private MonDR As OleDbDataReader
        Private req As String
        Private sConnString As String
        Private heure As Date = Date.Now
     
    Private Sub A_Depart_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
     
     
            je creer mon tableau tablIP4 
     
            ' --------------------PRIMO----------------
            Dim tablIP4() As String = New String() {}
     
            '-----------------Counter :integer s.v.p---------------- 
     
             Dim inc As integer
     
            'je me connecte sur ma base de donnée 
            Try
                Dim sConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Documents and Settings\Administrateur\Mes documents\VB.Net\BD_PING.mdb ; Jet OLEDB:Database Password=azerty;;"
                connection = New OleDbConnection(sConnString)
                req = "SELECT chifrement,adrip,namepc FROM Table_Ping4 ;"
                command = New OleDbCommand(req, connection)
                connection.Open()
                Dim dr As OleDbDataReader = command.ExecuteReader
                inc = 0
                While dr.Read
                    ' ------------------TERTIO ----------- 
                    ReDim Preserve tablIP4(inc)
     
     
                   ' ------------------QUATRO----------- 
                   If TypeOf (dr(1)) Is DBNull Then
                        tablIP4(inc) = "nothing"
                    Else
                        tablIP4(inc) = dr(1)
                    End If
     
                    ' ------------------SECUNDO----------- 
                   inc += 1
      End While
                dr.Close()
                connection.Close()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
    end sub
     
     Me.ListBox1.DataSource = tablIP4
    bon code.....

Discussions similaires

  1. [WD-2010] Problème dans mon tableau.
    Par starsat4200 dans le forum Word
    Réponses: 1
    Dernier message: 14/08/2014, 23h35
  2. Réponses: 7
    Dernier message: 13/08/2014, 22h58
  3. Problème de tri dans mon tableau croisé
    Par had4789 dans le forum Excel
    Réponses: 2
    Dernier message: 02/07/2014, 11h41
  4. Réponses: 2
    Dernier message: 26/12/2006, 12h49
  5. J'ai un TH dans mon tableau et j'aimerais faire en sorte qu'
    Par hstlaurent dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 12/09/2005, 17h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo