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
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
Bonjour,
pourrais-tu être un peu plus clair ?
Je ne comprends pas bien ce que tu souhaites faire.
Merci.
bye.
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
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.
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.
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 :
Par contre comme ça m'intéresse, quel est l'intérêt de créer par avance la table ?
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")
Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.
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 ?
Je n'ai pas bien suivi la discussion mais peut-être que l'utilisation de la propriété TableMapping du DataAdapter peut vous aider...
(\ _ /)
(='.'=)
(")-(")
Bonjour
Trés bon Fred ! Ca a l'air d'être la bonne piste.
Avec ça on a réellement plus besoin de connaître le nom des colonnes en base (sauf dans le select bien sur ! ;-))
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)
Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.
OK, je vai réussir à me débrouiller avec ce code
encore merci
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager