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 :

Stocker des données dans un tableau


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 219
    Par défaut Stocker des données dans un tableau
    Bonjour, toujours avec mon application client/serveur j'aimerais savoir comment faire pour pouvoir stocker les données que je reçois...
    Actuellement les données que je reçois sont directement afficher dans un DataGridView et je ne les sauvegarde nulle part

  2. #2
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Stocker ou sauvegarder ? C'est pas pareil...

    Si c'est stocké, elles le sont déjà dans le datagridview (peut être dans une datatable si il s'agit de la datasource de ton datagridview)

    Sauvegarder... comme par exemple dans un fichier ?

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 219
    Par défaut
    désolé pour la confusion...parce que pour moi dans le dataGridView elles n'étaient pas stocker...
    Ben enfait si tu préfere je travail pour une entreprise pour mon stage et je leur développe une application Client en vb.net.
    Le serveur envoi des données au client qui les affiche dans le datagridView.
    ET la ensuite il faudrait qu'il puisse faire une sauvegarde de ces données en les stockant dans l'application, c'est pour cela que je parlais de tableau

  4. #4
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Oui mais si les données son "stocker" dans l'application. Et que l'application ferme. Les données sont perdus.

    Donc il ne s'agit pas réellement de sauvegarde...

    Tu veux que les données restes même en fermant l'application ? Auquel cas utilisation de fichier en local.

    Ou tu veux simplement que les données restes dans l'application le temps de la session sur ton application... Auquel cas tu peux te créer un dataset dédiées, contenant plusieurs datatable... Que tu peux afficher ou masquer. Mais disparaitront a la fermeture.

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 219
    Par défaut
    Oui voila c'est ça que je veux faire...je vaux créer un tableau qui "stock" les données recues pas mon serveur puis les affiche ensuite dans un dataGrid...
    Ce n'est pas grave si à le fermeture elle disparaissent car l'utilisateur aura la possibilité de les sauvegarder à un moment donné

  6. #6
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Et bien créer un dataset.

    Puis tu peux dynamiquement ajouter des datatables à ce dataset ( en les nommants).

    Mais au lieu de charger ton datagridview directement de la base de données, je te conseillerai de charger une datatable... Si tu veux afficher les données tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonDataGridView.datasource=MonDataset.Tables("MaTable1")
    Et si tu veux masquer les données:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonDataGridView.datasource=Nothing
    C'est grâce à sa qu'il est pertinent d'utiliser des datatables pour stockés au lieu du datagridview.
    Parce que dans ton cas, je vois pas comment passer des données du datagridview a la datatable, a part en le faisant a la main. Alors qu'avec une simple requête c'est facile.

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 219
    Par défaut
    Voila ma fonction recevoir avec l'emplacement de la ligne à rajouter:

    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
     
    Function recevoir() As String
     
            Dim returnData As String = Nothing
            Dim inStream(10024) As Byte
            Dim serverStream As NetworkStream
            Dim x As Integer = 0
     
            If clientSocket.Connected Then
                Try
                    serverStream = clientSocket.GetStream()
                    serverStream.Read(inStream, 0, CInt(clientSocket.ReceiveBufferSize))
                    returnData = System.Text.Encoding.ASCII.GetString(inStream)
     
                    Dim len As Integer = returnData.IndexOf("$")
     
                    If len < 0 Then
                        len = 0
                    End If
     
                    If Donnees.ETAT = Donnees.ATTE Or Donnees.ETAT = Donnees.CONN Then
                        MiseEnFormeConn(returnData)
                    Else
                        If Donnees.ETAT = Donnees.AUTH Then
                            x = MiseEnFormeDonnees(returnData)
                            MsgBox(x)
                        End If
                    End If
     
                    returnData = returnData.Substring(0, len)
     
                    'ligne à rajouter
     
     
                Catch ex As Exception
                    'MsgBox(ex.Message)
                    msg(Donnees.ERR_REC)
                End Try
            End If
            Return returnData
     
        End Function
    et voici la ligne que j'ai à rajouter dans la fonction recevoir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.DataSet.Tables("Tab1").rows.add(DicAff.DicEssais.Values, returndata)
    DicAFF est un module qui contient des collection (de type dictionnaire) et des structures.

    DicEssais.Values me permet d'afficher seulement les valeurs du dictionnaires mais dans mon datagrid il m'affiche l'erreur suivante:

    System.Collection.Generic.Dictionnary '2+ValueCollection[System.String,System.string]

  8. #8
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Tout semble bon, a part l'appel au dictionnaire. Et malheureusement, je ne l'ai encore jamais utilisé.

    Mais apparemment:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DicAff.DicEssais.Values
    Ne désigne pas UN élément en particulier.
    Ça devrait, a priori, ressembler a quelque chose comme:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DicAff.DicEssais(12).Values
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DicAff.DicEssais.Item(12).Values
    Il faut que tu regardes aussi ce que te retourne cette fonction, si c'est juste un String ou une Collection de String (un ensemble de 2 string).

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 219
    Par défaut
    Les dictionnaire possède une clé et une valeur.
    Ensuite a toi de voir si tu veux afficher clé ou valeur ou les deux.

    Le souci c'est que moi je veux afficher toutes les valeurs de mon dictionnaires...

  10. #10
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Et bien tu peux toujours:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.DataSet.Tables("Tab1").rows.add(DicAff.DicEssais.Cle.Values & " " & DicAff.DicEssais.Valeur.Values, returndata)
    ou un truc dans le genre...

  11. #11
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 219
    Par défaut
    Dans mon cas dans la premiere colonne je ne veux afficher que les valeur et non pas les clés...

    précédement voila comment je remplissais la premiere colonne de mon DGV avec ma collection:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For Each kvp As KeyValuePair(of string , string) in DicoAff.DicEssais
         if kvp.Value <> Nothing then
               if j > DGV.RowCount - 1 then
                      DGV.Row.Add()
               end if
               DGV.Rows(j).Cells(0).Value = kvp.Value
               j += 1
         end if
    next kvp

  12. #12
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 219
    Par défaut
    Bon alors je me suis penché sur le problème toute la soirée et je n'ai toujours pas la solution.Je vous explique.

    Lorsque je rempli mon dataSet manuellement c'est-a-dire que je tape directement mon texte dedans tous fonctionne corectement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    For i = 0 To Ubound(Tab) - 1
         If i<> Nothing then 
              If i > DataGridView1.rowCount - 1 then
                   Me.DataSet.Tables("Tab1").Rows.Add("blabla",Tab(i))
              End If 
         End If
    Next

    Mais lorsque je lui dis de remplir la table automatiquement il me génére un erreur et je ne comprend pas du tout pourquoi.
    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    For Each kvp As KeyValuePair(Of string,string) In DicoAff.DicEssais 'dicoaff est un module et dicessais une collection (de type dictionnaire
          If Kvp.Value <> Nothing then
                Me.DataSet.Tables("Tab1").Rows.Add(kvp.value,Tab(i))
                i = i + 1
          end if
    Next kvp
    AIDEZ MOI !!!!!!!!

  13. #13
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Il faut Aider les gens qui t'aident!

    Quel est le message d'erreur, quelle ligne ?

  14. #14
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 219
    Par défaut
    C'est bon j'ai résolu TOUT mon problème.Le souci était que le DataSet demandait d'afficher au DGV 2 fois la meme valeur pour une donnée différente du coup impossible d'afficher les données et par conséquent --> exception

    Voici le code qui permet à mon DGV d'afficher les valeurs contenues dans le module et celles du serveur:

    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
     
     
    dim i as integer = 0
    dim j as integer = 0
    dim Tab() as string = Split(data,SEP)
     
    For Each kvp as KeyValuePair (Of String,String) in DicoAff.DicEssais
         If kvp.Value <> Nothing then
               If j > DGV1.RowCount - 1 then 
                      Me.DataSet.Tables("TabEssais").Rows.Add(kvp.Value, Tab(i))
                      Me.DGV1.Refresh()
               End if
               i += 1
               j += 1
         End if
    Next kvp
    Merci à toi mactwist69 pour ton aide si précieuse

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

Discussions similaires

  1. Stocker des moviesclips dans un tableau ?
    Par Paganoni dans le forum Flash
    Réponses: 1
    Dernier message: 13/05/2006, 17h20
  2. [MySQL] Stocker des données dans un tableau
    Par LadyArwen dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/02/2006, 10h40
  3. Réponses: 3
    Dernier message: 05/12/2005, 02h30
  4. Réponses: 2
    Dernier message: 15/06/2005, 17h32
  5. [XML] stocker des données dans un fichier XML
    Par R3iTt0R dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/05/2005, 16h51

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