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 :

[VB.NET]Utilisation d'une structure


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Par défaut [VB.NET]Utilisation d'une structure
    Bonjour à tous.
    Pour un de mes projets, je souhaiterais utiliser une structure qui ressemble à ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Public Structure MySQLReadingResult
            Public sNom As String
            Public sAdresse As String
            Public sCP As String
            Public sVille As String
            Public sTel As String
        End Structure
    Je déclare ensuite ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Monresultat() As MySQLReadingResult
    (Vous l'avez compris, j'utilise une base MySQL.)

    J'ai ensuite une fonction qui se connecte à la base MySQL et qui exécute une requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                While objDataReader.Read
                    Monresultat(i).sNom = objDataReader.GetString(0)
                    Monresultat(i).sAdresse = objDataReader.GetString(1)
                    Monresultat(i).sCP = objDataReader.GetString(2)
                    Monresultat(i).sVille = objDataReader.GetString(3)
                    Monresultat(i).sTel = objDataReader.GetString(4)
                    i += 1
                End While
    Et au débogage il me dit :
    La référence d'objet n'est pas définie à une instance d'un objet.
    Je comprends pas pourquoi...
    Et bien entendu, pas possible d'utiliser de "new" car il s'agit de tableau.

    Qqn pourrait-il m'indiquer où je me plante?
    Un petit coup de pousse me conviens également !!

    Merci à vous

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 74
    Par défaut
    la tu déclare "Monresultat" mais tu ne l'instancie pas.

    il manque un new...

    je ne fais pas de vbnet mais du C#, ça donnerai
    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
     
    public List<MySQLReadingResult> Monresultat;
     
    void Mafontion()
    {
        //blabla connection bdd etc
        //probleme on ne sait pas combien il y a de resultat, je ne peux pas faire de tableau
        //j'ai utilisé une liste du coup
     
        Monresultat = new List<MySQLReadingResult>();
     
        MySQLReadingResult maStruct;
        while(objDataReader.Read)
        {
           maStruct = new MySQLReadingResult(); //plus sur si on est oblige pour une structure
     
    //PS : c'est plus rapide d'utiliser une variable temporaire plutot que d'acceder a chaque fois à ton tableau
                    maStruct.sNom = objDataReader.GetString(0)
                    maStruct.sAdresse = objDataReader.GetString(1)
                    maStruct.sCP = objDataReader.GetString(2)
                    maStruct.sVille = objDataReader.GetString(3)
                    maStruct.sTel = objDataReader.GetString(4)
     
           Monresultat.Add(maStruct);
        }
     
    }
    autre chose, la structure va être recopiée à chaque passage de parametre ou d'assignation à une autre variable.
    j'utilise jamais de structure pour cette raison mais des class même pour stocker des données et ça n'engage que moi

  3. #3
    Membre éclairé Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Par défaut
    Citation Envoyé par Yolak Voir le message
    Et bien entendu, pas possible d'utiliser de "new" car il s'agit de tableau
    Visual studio me dit:
    Les tableaux ne peuvent pas être déclarés avec New
    J'ai jamais utilisé les structures en vb donc je souhaite vraiment comprendre...

  4. #4
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Bonjour,

    ça serait bien embêtant de pas pouvoir initialiser un tableau donc au choix selon que tu connaisses d'avance le nombre d'élément que contiendra ton tableau (avec un Count)
    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ' Taille représente le résultat de la requête count ici
    Public Monresultat() As MySQLReadingResult = New MySQLReadingResult(Taille - 1) {}
    ' ou
    Public Monresultat(Taille - 1) As MySQLReadingResult
    Si tu ne sais pas combien d'élément aura ton tableau, il faut passer par quelque chose de plus dynamique comme une List(Of T) comme suggéré par mickyoun, voilà ce que donnerais la déclaration en VB.Net (au cas où ^^)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Monresultat As New List(Of MySQLReadingResult)
    En espérant t'avoir aidé

    Cordialement !

  5. #5
    Membre éclairé Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Par défaut
    Citation Envoyé par Sehnsucht Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Monresultat As New List(Of MySQLReadingResult)
    En espérant t'avoir aidé

    Cordialement !
    Bonjour,
    Oui ça m'aide... Mais ça m'embrouille aussi !!!
    Comment tu remplis la structure avec ça??

    Je peux pas faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Monresultat.Add(objDataReader.GetString(0))
    Enfin.... Ça n'a aucun sens!!
    Je m'éloigne là je crois...

    Comment je remplace ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                While objDataReader.Read
                    Monresultat(i).sNom = objDataReader.GetString(0)
                    Monresultat(i).sAdresse = objDataReader.GetString(1)
                    Monresultat(i).sCP = objDataReader.GetString(2)
                    Monresultat(i).sVille = objDataReader.GetString(3)
                    Monresultat(i).sTel = objDataReader.GetString(4)
                    i += 1
                End While

  6. #6
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Pour remplir, il suffit juste de convertir le code fourni par mickyoun en VB.Net
    Code VB.Net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim tempResult As MySQLReadingResult
     
    While objDataReader.Read
        tempResult = New MySQLReadingResult
     
        tempResult.sNom = objDataReader.GetString(0)
        tempResult.sAdresse = objDataReader.GetString(1)
        tempResult.sCP = objDataReader.GetString(2)
        tempResult.sVille = objDataReader.GetString(3)
        tempResult.sTel = objDataReader.GetString(4)
     
        Monresulat.Add(tempResult)
    End While
    Cordialement !

  7. #7
    Membre éclairé Avatar de Yolak
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    341
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Vosges (Lorraine)

    Informations forums :
    Inscription : Mars 2007
    Messages : 341
    Par défaut
    Ah ouaiiis!
    Là je comprends lol!!

    Merci énormément!
    J'aurais jamais trouvé seul (enfin si mais ça m'aurai pris plus de temps!)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation d'une structure,tableau adéquat
    Par snopims_ dans le forum ASP.NET
    Réponses: 1
    Dernier message: 17/10/2007, 07h59
  2. [VB.NET] Utilisation d'une variable dans une autre form (!)
    Par neuropathie dans le forum Windows Forms
    Réponses: 5
    Dernier message: 08/12/2005, 13h09
  3. [vb.net] utilisation d'une variable dans le code
    Par arnolem dans le forum Windows Forms
    Réponses: 9
    Dernier message: 30/09/2005, 19h22
  4. [VB.NET]Utilisation d'une TextBox
    Par cach dans le forum Windows Forms
    Réponses: 3
    Dernier message: 26/05/2005, 09h54
  5. utilisation d'une structure
    Par charonDZenfer dans le forum C++
    Réponses: 8
    Dernier message: 23/08/2004, 16h21

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