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 :

Comprendre le dataset


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2011
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 255
    Par défaut Comprendre le dataset
    Bonjour à tous,

    Le principe même du dataSet est clair. Mais je n'arrive pas a comprendre comment utiliser un objet au sein d'un parcours ( For each ) d'un dataSet.

    Je m'explique :

    Admettons que je créer une fonction lister que me retourne un dataset charger grace a un SqlAdapter et un sqlCommande ( "Select ....")

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     Public Function lister(ByVal table As String) As DataSet
    myCommande = New SqlCommand("SELECT * FROM " & table, cxString)
               myAdapter.SelectCommand = myCommande
                mydataSet.Clear()
                myAdapter.Fill(mydataSet, table)
                Return mydataSet
     End Function

    Ensuite j' appel cette fonction ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
     Dim listerImage =  lister("image")
    Je boucle dessus pour parcouri l'emsenble du dataset :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     For Each item In listerImage.ToString
                Me.literal_test.Text += item
            Next
    Ok la page m'affiche bien toute les données de ma table.

    mais comment faire pour avoir accès aux propriétés de ma table

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Me.literal_test.Text += item.id
    Me.literal_test.Text += item.titre
    Me.literal_test.Text += item.url
    ' ....... etc etc
    ça fait plusieurs jours que je cherche désespérément, j'ai lu la parti dataSet du tuto http://plasserre.developpez.com/cour...ees2#LXVII-D-5 mais aucune info sur comment faire.

    Par avance merci pour votre aide

    benny.

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Bonsoir,

    Citation Envoyé par benny-blanco Voir le message
    ça fait plusieurs jours que je cherche désespérément, j'ai lu la parti dataSet du tuto http://plasserre.developpez.com/cour...ees2#LXVII-D-5 mais aucune info sur comment faire.
    Heu, juste dans le lien que vous donnez :
    Remplir une Listbox ligne par ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim matable As New DataTable
    matable = ObjetDataSet.Tables("FICHEPATIENT")
    Dim Ligne As DataRow()
    For Each Ligne In Matable.Rows
              List1.Items.Add(ligne.Item(" Nom "))
    Next



    Sinon je pense que vous mélangez dataset et datatable.
    Le dataset contient toutes les tables, leurs contraintes ainsi que leurs liaisons. On peut voir cela dans l'explication du dataset sur la MSDN :


    Votre code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each item In listerImage.ToString
         Me.literal_test.Text += item
    Next
    m'a d'ailleurs surpris, car vous ne faite que reconstitué un string en concaténant tous les caractères du string retourné par toString ce qui revient à écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.literal_test.Text = listerImage.ToString
    Sachez que vous pouvez remplir directement des datatable sans passer par des datasetpar la même méthode.

    Si vous cherchez des info, n'oubliez pas que la MSDN est le meilleurs ami des développeurs .NET, donc je vous conseille de lire la partie ADO.NET sur MSDN

    Il y a aussi toutes les excellantes ressources de DVP.NET dont la FAQ et les TUTO / COURS qui regorge d'exemples sur les bases de données (ADO.NET)

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2011
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 255
    Par défaut
    oui en fait, je suis entrain de m'apercevoir que j'ai pas trop compris le dataset.

    Pour moi le fait qu'il affiche les données était forcement une liste ou collection du résultat de ma requête passer dans SqlAdapter.

    Je vais bien lire le lien que vous m'avez donnée sur MSDN.

    Mais le coup du :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim matable As New DataTable
    matable = ObjetDataSet.Tables("FICHEPATIENT")
    Dim Ligne As DataRow()
    For Each Ligne In Matable.Rows
              List1.Items.Add(ligne.Item(" Nom "))
    Next
    ok ça a l'air intéressant mais comment gérer les lignes dynamiquement ?

    Ou plutôt comment mettre le dataRow en relation direct a ma class pour pouvoir utiliser un objet.

    En tous cas merci pour votre aide.

  4. #4
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Citation Envoyé par benny-blanco Voir le message
    ok ça a l'air intéressant mais comment gérer les lignes dynamiquement ?

    Ou plutôt comment mettre le dataRow en relation direct a ma class pour pouvoir utiliser un objet.
    j'ai du mal à comprendre ce que vous voulez faire...
    si je reprend votre code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Me.literal_test.Text += item.id
    Me.literal_test.Text += item.titre
    Me.literal_test.Text += item.url
    il faudrait déjà que vous définissiez quelle ligne (représentant l'item) vous allez utiliser...
    si on se dit que vous voulez lier la première ligne, ce code fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if maDataTable.rows.count > 0 then
        Dim maRow as datarow = maDataTable.rows(0)
        Me.literal_test.Text += maRow.item("id")
        Me.literal_test.Text += maRow.item("titre")
        Me.literal_test.Text += maRow.item("url")
    end if
    Je vous conseille fortement de lire les ressources disponible sur ADO.NET et vous y verrez plus claire...

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2011
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 255
    Par défaut
    En fait item était la variable de type objet transmisse dans le for each

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each item In listerImage.ToString
         Me.literal_test.Text += item
    Next
    Ce que je voudrai c'est avoir accès a toute les propriété de la table image par exemple.

    J'ai créer une class image avec les fonction get et set + un construct et un tostring.

    Je voudrai que lorsque j'appel la fonction lister, je l'utiles grâce ma classe image.

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    Dim myImg as new image
    Dim listerImage = lister("image")
     
    For each myImg in listerImage
    me.literal_test.text += myImg.titre
    me.literal_test.text += "img src=" & myImg.url & " />"
    Next
    En gros appeler la fonction lister et travail avec mon objet comme bon me semble et ne pas être contraint d'afficher tel ou tel ligne directement dans la fonction.

    Je suis conscient que j'ai du mal a me faire comprendre, mais j'espère que cette fois ci j'aurai était plus clair.

    Merci beaucoup pour votre aide.

Discussions similaires

  1. Réponses: 6
    Dernier message: 18/06/2006, 00h22
  2. Le dataset.bof ne répond plus.
    Par fplanglois dans le forum Bases de données
    Réponses: 6
    Dernier message: 23/03/2004, 09h45
  3. Modifier l'ordre des Fields d'un dataset
    Par teska dans le forum Bases de données
    Réponses: 3
    Dernier message: 22/03/2004, 16h38
  4. [VB.net][PostgreSQL & ODBC] DataSet => NO_DAT
    Par rebolon dans le forum Accès aux données
    Réponses: 2
    Dernier message: 28/01/2004, 09h01
  5. [FLASH MX 2004 pro] DATASET, XML, ASP
    Par kenshi dans le forum Flash
    Réponses: 4
    Dernier message: 27/01/2004, 10h38

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