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 :

IHM : création Dataset typé


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut IHM : création Dataset typé
    Comment coder manuellement un dataset typé sans laisser le soin à VB de générer automatiquement l'interface utilisateur et les liens (Binding) entre l'interface et les données ?

    merci

  2. #2
    Membre actif
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Points : 252
    Points
    252
    Par défaut
    Bonjour,

    pourrais-tu être un peu plus clair ?
    Je ne comprends pas bien ce que tu souhaites faire.

    Merci.
    bye.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    bonjour

    Alors pour développer une application 3/3 avec : 1/3 la base de données, 2/3 la couche métier et 3/3 l'interface utilisateur (IHM)

    j'aimerai utiliser dans les datagrid de mon interface des objets que j'aurai codé :un dataset contenant maTableDeTravail constitué de maColonne1,maColonne2.

    Avec un dataAdapter j'indique avec les procedures fill(),getData() que maTableDeTravail récupère les infos d'une table de la BDD appelé Table1 par le biais du sql "select champA,champB from Table1"

    dataAdapter récupère bien les infos de ma table1

    mais il ne fait pas le lien maColonne1 = champA et maColonne2 = champB

    je retrouve par conséquent 4 colonnes dans le DataGridView affichant
    maColonne1\maColonne2\champA\champB

    Voilà.

    Quand on utilise les composants graphiques datagridview,dataset, dataadapter, VB génère automatiquement un BindingSource qui fait le lien maColonne1 = champA et maColonne2 = champB permettant ainsi d'afficher correctement les informations.

    Comment faire ce lien en programmation ? (programmer le binding source ?, c'est lors de la création de maColonne1, lui dire que maColonne1 = champA?)

    encore merci

  4. #4
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Je pense que tu a le même probléme que ricil78.

    Cf. ma réponse :

    https://www.developpez.net/forums/showthread.php?t=270181

    Par contre, comme je le disais, il semble que l'ordre des colonnes soit complément aléatoire. A toi donc de jouer avec le displayindex.

    Cdt
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci pour ce lien, mais ce n'est pas exactement la même chose.

    Dans mon cas j'aimerai affecter les données de Table1 dans matableDeTravail en étant sûr que champA récupère les données de maColonne1 et champB celles de maColonne2.

    après pour l'affichage j'affiche dans dataGridView je devrai afficher les données de ma dataTable matableDeTravail facilement.

    Salut.

  6. #6
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Oups désolé ! Effectivement, j'avais mal compris.

    Ce que tu veux faire c'est charger correctement un table existante.

    Pour que cela soit possible, il faut que ta table de travail ait des colonnes qui portent le même nom que les colonnes récupérées par la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            Dim dt As New DataTable
            dt.TableName = "maTable"
            dt.Columns.Add("A")
            dt.Columns.Add("B")
            Dim ds As New DataSet
            ds.Tables.Add(dt)
            Dim da As New OleDb.OleDbDataAdapter(New OleDbCommand("SELECT A, B FROM TABLE1", Cnn))
            da.Fill(ds, "maTable")
    Par contre comme ça m'intéresse, quel est l'intérêt de créer par avance la table ?
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Si je donne le même nom ca fonctionne c'est vrai

    Mais je veux que les noms des colonnes soient différents pour tavailler vraiment en architecture 3/3.

    Car si la personne de la BDD modifie un champ Colonne1 en Col1,la structure de la table est modifiée.

    j'ai pas envie que la personne qui s'occupe de l'interface doit également renommer le nom de ses colonnes.

    Voilà

    et en utilisant les composants graphiques ca passe mais en codant je sais pas faire.

    tu penses qu'avec vb.net c'est possible ?

  8. #8
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Je n'ai pas bien suivi la discussion mais peut-être que l'utilisation de la propriété TableMapping du DataAdapter peut vous aider...
    (\ _ /)
    (='.'=)
    (")-(")

  9. #9
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour

    Trés bon Fred ! Ca a l'air d'être la bonne piste.

    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 dt2, dt1 As New DataTable
            dt2.TableName = "maTable"
            dt2.Columns.Add("Col1")
            dt2.Columns.Add("Col2")
            Dim dss As New DataSet
            dss.Tables.Add(dt2)
            Dim da1 As New OleDb.OleDbDataAdapter(New OleDb.OleDbCommand("SELECT A, B FROM TABLE1", Cnn))
            da1.FillSchema(dt1, SchemaType.Source)
            da1.TableMappings.Add(dt1.TableName, dt2.TableName)
            With da1.TableMappings(0).ColumnMappings
                .Add(dt1.Columns(0).ColumnName, dt2.Columns(0).ColumnName)
                .Add(dt1.Columns(1).ColumnName, dt2.Columns(1).ColumnName)
            End With
     
            da1.Fill(dt2)
    Avec ça on a réellement plus besoin de connaître le nom des colonnes en base (sauf dans le select bien sur ! ;-))
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    OK, je vai réussir à me débrouiller avec ce code

    encore merci

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 17/11/2008, 17h53
  2. [VS2005][C#] Delete sur un Dataset typé
    Par Xno dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/09/2005, 18h13
  3. [C#] Récup champ IMAGE SQLServer avec un DataSet Typé
    Par SoaB dans le forum Windows Forms
    Réponses: 3
    Dernier message: 27/07/2005, 14h53

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