Stocker une table de requête SQL dans une variable

Résolu
Maelhia Messages postés 21 Date d'inscription vendredi 25 mars 2022 Statut Membre Dernière intervention 15 février 2023 - 5 janv. 2023 à 11:02
Whismeril Messages postés 18939 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 février 2024 - 5 janv. 2023 à 14:28

Salut à tous et à toutes ! 

J'ai cherché un peu sur google, mais je n'arrive pas à trouver une solution qui s'adapte bien à mon problème donc me voici ! 

L'idée est assez simple : via mon code j'interroge une base Access (via un SELECT) et cette requête retourne une table à deux colonnes et plusieurs lignes. J'aimerai tout simplement passer cette table dans une variable (de type tableau à deux colonnes) de mon code.

J'arrive à stocker dans une variable tableau quand il n'y a qu'une seule colonne, mais avec deux colonnes ça ne fonctionne pas et je ne vois pas comment faire. 

Je vous mets ci-dessous un bout de code, en espérant que vous pourrez m'aider :) Si vous avez besoin d'informations complémentaires n'hésitez pas à demander.

--------------------------------------------------------------------------------------------------

Voici le code pour récupérer les informations quand il n'y a qu'une seule colonne : 

Function RecupererInfosBDD(ByVal SQLCommand As OdbcCommand) As Array

        Dim Lecteur As OdbcDataReader
        Dim Info As String
        Dim listeInfos(0) As String
        Dim indice As Integer

        Info = ""
        indice = connaitreTailleInfosBDD(SQLCommand) 'fonction qui permet de déterminer le nombre de lignes/enregistrements que va renvoyer la requête
        ReDim listeInfos(indice)

        Lecteur = SQLCommand.ExecuteReader
        indice = 0

        Do While Lecteur.Read

            If IsDBNull(Lecteur.GetValue(0)) Then
                Info = Convert.ToString(Lecteur.GetValue(0))

            Else
                Info = Lecteur.GetValue(0)

            End If


            listeInfos(indice) = Info
            indice = indice + 1

        Loop
        Lecteur.Close()
        Return listeInfos

    End Function

3 réponses

Whismeril Messages postés 18939 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 février 2024 650
5 janv. 2023 à 12:30

Bonjour 

la logique en vb.net serait que tu écrives une classe métier qui correspond à tes enregistrements et que tu les charges dans une collection implémentant le concept de liste chainée (List(of ) en étant la plus simple).

Et si tu ne sais pas de quoi je parle, alors ça signifie que tu dois lire ceci 

https://codes-sources.commentcamarche.net/forum/affich-10107769-message-a-tous-les-debutants-souvent-autodidactes#p10107769


Quand j'étais petit, la mer Morte n'était que malade.
George Burns

1
Whismeril Messages postés 18939 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 février 2024 650
5 janv. 2023 à 14:28

Du coup ta méthode pour compter les items retourner par le requête ne sert plus à rien, puisqu'avec une liste chainée tu ajoutes des items à loisir 


Quand j'étais petit, la mer Morte n'était que malade.
George Burns

1
Maelhia Messages postés 21 Date d'inscription vendredi 25 mars 2022 Statut Membre Dernière intervention 15 février 2023 1
5 janv. 2023 à 13:34

Merci pour ton aide ! :)

0
Rejoignez-nous