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

Windows Forms Discussion :

remplir dataset à partir base propriétaire


Sujet :

Windows Forms

  1. #1
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2002
    Messages : 264
    Par défaut remplir dataset à partir base propriétaire
    Bonjour,

    En VB, Je souhaite remplir manuellement 1 Dataset (ma base est propriétaire et ne possède pas de fournisseur).
    - J'ai créé mon dataset depuis "Projet", "ajouter nouvel element", "dataset".
    - j'ai défini ma table "Client" qui contient "Num", "Nom", "prenom".

    dans mo code VB je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            Dim myTable As DataTable = New DataTable("client", "DataSet1")
            Dim myDataRow As DataRow
            Do
                ' je lis tous les enreg.de ma base
                if not Lit_MaBase then exit do
     
                myDataRow = myTable.NewRow()
                myDataRow(0) = MaBase.Num
                myDataRow(1) = MaBase.NOM
                myDataRow(2) = MaBase.PRENOM
                myTable.Rows.Add(myDataRow)
            LOOP
    ...et il plante sur "myDataRow(0) = MaBase.Num" en disant qu'il ne trouve pas la colonne 0.

    qq pourrait-il m'aider...
    merci par avance.

  2. #2
    Membre éclairé Avatar de hellspawn_ludo
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 257
    Par défaut
    Bonjour,

    Je n'ai jamais utilisé de datarow mais en fonction du message d'erreur je dirais que tu as oublié de déclarer des datacolumn.

  3. #3
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2002
    Messages : 264
    Par défaut
    J'ai bien défini mes champs "Num", "Nom", "prenom" dans la table comme indiqué dans mon message, en passant par l'éditeur.

    Faut-il que je les redéfinisse dans le programme ?

  4. #4
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Oui, il faut aussi définir les DataColumns dans le DataTable.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  5. #5
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2002
    Messages : 264
    Par défaut
    désolé, j'ai du mal à comprendre ...

    c'est bien ce que j'ai fait dans l'éditeur : j'ai créé ma DataTable et j'y ai défini les colonnes "Num", "Nom", "Prenom"

    VB a alors rajouté DataSetClient.xsd à mon projet.

  6. #6
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Ceci est extrait de la documentation SDK .NET concernant les dataset typés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    CustomerDataSet customers = new CustomerDataSet();
    SqlDataAdapter adapter = new SqlDataAdapter(
      "SELECT * FROM dbo.Customers;",
      "Data Source=(local);Integrated " +
      "Security=SSPI;Initial Catalog=Northwind");
     
    adapter.Fill(customers, "Customers");
     
    foreach(CustomerDataSet.CustomersRow customerRow in customers.Customers)
      Console.WriteLine(customerRow.CustomerID);
    ça devrait résoudre ton problème.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  7. #7
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2002
    Messages : 264
    Par défaut
    désolé mais je ne comprends pas la réponse (je suis débutant en VB et en .NET)...

    Il me semble comprendre que cet exemple remplit automatiquement le Dataset nommé CustomerDataSet à partir de données Sql contenues dans la base Nortwind.
    ...ce qui est sans rapport avec ce que je souhaite faire.

    Je veut remplir manuellement mon dataset en initialisant mes colonnes et en faisant .add ensuite.

    Mon problème semble plutot 1 problème d'ouverture ou d'instanciation du Dataset créé depuis l'éditeur. VB semble ne pas trouver la déclaration de ce Dataset et donc pas de colonnes...il me semble. Il faudrait donc peut-être juste déclarer qq chose avant mais quoi ???

    en tout cas merci pour ton aide

  8. #8
    Membre éclairé Avatar de hellspawn_ludo
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 257
    Par défaut
    Va faire un tour ici si tu es débutant :

    Et plus précisément au niveau du titre qui se trouve en bas de la page :

    Etudions en détails un DataSet:

  9. #9
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2002
    Messages : 264
    Par défaut
    débutant, mais j'ai passé des journées à lire tout ce qui parle des Datasets...on y décrit trés en détail les Dataset remplis automatiquement en utilisant ADO (comme dans le lien passé ici) ...ce qui n'est pas mon cas, ou alors créés complètement à la main sans utiliser l'éditeur VB.
    Je n'ai trouvé aucune info pour remplir manuellement 1 dataset créé dans l'éditeur VB.

    Je suis certain que mon pb est trés simple...mais il manque 1 petit qq chose...

  10. #10
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Ce que je ne comprends pas, c'est que tu dis avoir créé un DataSet avec le designer, mais dans le code que tu as posté, tu ne t'en sers pas... Je me demande pourquoi tu en as créé un si ensuite tu crées une autre DataTable à part.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  11. #11
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2002
    Messages : 264
    Par défaut
    ...développe 1 peu car le pb doit être là...je croyais que mon code l'ouvrait alors que je suis en train d'en creer 1 autre si je comprends bien ?

    Pourtant j'utilise le nom du dataset et de la datatable que j'ai défini avec le designer...

  12. #12
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Justement, dans l'exemple que je t'ai donné (extrait de la doc), ça montre comment instancier un DataSet typé (ce que tu as créé dans le designer), et comment accéder à une table définie dedans : c'est la ligne DataSet.Fill(...).

    A mon avis tu dois instancier ton DataSet typé et ensuite obtenir une référence vers la table que tu as définie dedans, pour pouvoir ensuite ajouter des DataRow dans cette table.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  13. #13
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2002
    Messages : 264
    Par défaut
    j'ai du mal à comprendre car 1 dataAdapter c'est normalement pour établir 1 lien avec 1 base ADO comme l'indique la requête fournie dans l'exemple cité.

  14. #14
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2002
    Messages : 264
    Par défaut
    j'ai finallement trouvé 2 méthodes pour écrire dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim MesEnfants As New DataSet1.DT_EnfantDataTable
    DO
       '...init mes variables
       Dim NewEnfant As DataRow = MesEnfants.NewRow
       NewEnfant(0) = enfant.Num_dos
       ...
       MesEnfants.Rows.Add(NewEnfant)
    LOOP
    mais qd j'affiche le DGView (Datasource=DTEnfantBindingSource) qui pointe vers ce Dataset il n'y a aucune ligne. Pour que les données s'affichent, je dois réaffecter la datasource :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.DataGridView1.DataSource = MesEnfants
    J'ai trouvé 1 autre méthode qui ne necessite pas de réafecter DataSource, mais elle est moins rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    DataSet1.DT_Enfant.BeginLoadData()
    Do
       ' init data ...
       dim NewEnfant as datarow = DataSet1.DT_Enfant.NewRow()
       NewEnfant(0) = enfant.Num_dos
       ...
       DataSet1.DT_Enfant.Rows.Add(NewEnfant)
    Loop
    DataSet1.DT_Enfant.EndLoadData()
    je crois comprendre qu'avec cette méthode je remplis la datatable créé avec le designer, alors qu'avec la 1ère, j'en crée 1 nouvelle.

    ...pq la 2ème méthode est + rapide :n'existerait-il pas 1 mix des 2 pour avoir la vitesse de la 1ère sans créer 1 nvelle table, genre 1ère méthode avec copie du tableau généré dans la base à la fin.

    SVP aidez-moi, je me sentirai moins bête et j'aurai l'illusion dêtre encore un peu agile moi aussi ...

Discussions similaires

  1. Réponses: 12
    Dernier message: 14/03/2009, 22h32
  2. DAAB:Remplir un DataSet à partir PS Oracle 9g
    Par MALAGASY dans le forum Accès aux données
    Réponses: 4
    Dernier message: 28/03/2008, 22h10
  3. Remplir un dataset à partir d'un csv
    Par lutecefalco dans le forum ASP.NET
    Réponses: 6
    Dernier message: 11/07/2007, 08h23
  4. Remplir un Dataset à partir d'un Treeview
    Par Sinistre_Ecorcheur dans le forum VB.NET
    Réponses: 1
    Dernier message: 11/05/2007, 09h35
  5. Remplir une dataset à partir du textbox
    Par andres007 dans le forum Accès aux données
    Réponses: 4
    Dernier message: 26/02/2007, 22h53

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