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 :

Assignation avec With


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Points : 86
    Points
    86
    Par défaut Assignation avec With
    Bonjour,
    j'ai u petit problème. Je souhaite assigner à une collection (class) des valeurs.
    Ma class (simple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Class Tdata
        Public RegionId As String
    End Class
    J'ai commencé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        <WebMethod()> _
        Public Function Resultats() As Tdata()
            Dim emps As Tdata() = New Tdata() _
                                      {New Tdata() With _
                                       {.RegionId = "region_1"}, _
                                       New Tdata() With _
                                       {.RegionId = "region_2"}}
            Return emps
    Le code ci-dessus fonctionne et me renvoi bien ce que je soihaite.
    Mais avec une simple boucle for/next, cela ne fonctionne plus, il me renvoie que la valeur du dernier passage dans la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        <WebMethod()> _
        Public Function Resultats() As Tdata()
            Dim emps As Tdata() = Nothing
            For x = 1 To 2
                emps = New Tdata() {New Tdata() With {.RegionId = "region_" & CStr(x)}}
            Next
            Return emps
    là, je suis un peu perdu.
    Avez-vous une idée pour qu'à la sortie de la bouccle je puisse faire un "Return" avec l'ensemble de la collection TData().
    Merci
    Patrick

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

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    C'est normal à chaque tour de boucle tu remplace la valeur courante de emps par un nouveau tableau du coup celle d'avant est perdue (et ça n'a rien à voir avec l'utilisation de With)

    Il te faut donc soit initialiser le tableau à la bonne taille avant la boucle et à chaque tour de celle-ci assigner à un indice de cet tableau la valeur correspondante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim emps(1) As Tdata
    For x = 0 To emps.Length - 1
        emps(x) = New Tdata() With {.RegionId = "region_" & CStr(x+1)}
    Next
    Return emps
    Mais il serait probablement plus simple d'utiliser un List(Of Tdata) et d'ajouter (via sa méthode Add) un nouveau Tdata à chaque itération de boucle
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Points : 86
    Points
    86
    Par défaut
    Bonjour Sehnsucht,
    Merci de ton info, j'avais déjà imaginé avec une List(Of), mais hier soir, mes idées n'étaient pas claires.
    Ci-dessous le code complet avec une fonction qui renvoie une List(Of) dans la WebMethod, qui, elle renvoie cette liste (avec traitement d'une variable venant de la requete Web) :
    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
        <WebMethod()> _
        Public Function Resultats(ByVal RegId As Integer) As List(Of TData)
            Return mList(RegId)
        End Function
     
        Private Function mList(ByVal RegId As Integer) As List(Of TData)
            Dim tdat As TData
            Dim ListTdata As New List(Of TData)
            Dim x As Integer
     
            For x = 1 To 2
                tdat = New TData With { _
                    .RegionId = CStr(RegId) & " - region_" & CStr(x), _
                    .Nom = "Patrick_ " & CStr(x) _
                }
                ListTdata.Add(tdat)
            Next
            Return ListTdata
        End Function
     
    End Class
     
    Public Class TData
        Public RegionId As String
        Public Nom As String
    End Class
    Voila le résultat (réponse du web service) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="utf-8"?>
    <ArrayOfTData xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://Patrick.fr/">
      <TData>
        <RegionId>4 - region_1</RegionId>
        <Nom>Patrick_ 1</Nom>
      </TData>
      <TData>
        <RegionId>4 - region_2</RegionId>
        <Nom>Patrick_ 2</Nom>
      </TData>
    </ArrayOfTData>
    J'espère que ce code sera utile à d'autres "débutants" comme moi
    Patrick.

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

Discussions similaires

  1. problème d'assignation avec une ArrayList
    Par Steph1904 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 10/06/2009, 22h37
  2. Set @variable = sous-requete avec with
    Par famjerom dans le forum Développement
    Réponses: 4
    Dernier message: 07/06/2009, 10h10
  3. [E-03] - Objet avec with
    Par Pierre845 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/02/2009, 23h14
  4. [2005] syntaxe avec WITH(CTE), DECLARE, RETURNS
    Par weejungle dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 19/05/2008, 13h00
  5. Requete recursive avec WITH
    Par Kuroro dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 06/09/2007, 23h05

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