Hop,

Aller je me lance car je trouve ça aberrant de ne pas avoir de solution en 5 heures de recherche.

Je développe une nouvelle appli VB.net qui contient un datagridview , j'ai mappé ma source de données (une base Access), créé le databindingsource, le sqladapter et tout et tout jusqu'ici tout vas bien .

Si via le SQL builder je fais une requête mono table, là aussi tout va bien j'ai mon dgv qui m'affiche mes données.

Par contre si j'écrit une requête un peux plus élaborée, avec un left join par exemple, je ne vois pas comment dans la logique du truc je peux dire à mon dgv que sont datasource = tbl_databindingsource correspondant à ma table Data alors que je veux afficher une colonne supllémentaire d'une autre table (La table pointage) du coup je n'ai aucune erreur mais je ne vois pas comment afficher cette colonne heure dans mon dgv...

J'ai bien essayé de créer une colonne supplémentaire via le designer "Heure" dans le dgv mais elle ne m'affiche rien non plus et franchement je vois pas trop niveau code comment l'alimenter.

Alors j'ai bien pensé avoir trouvé la solution sur le net mais après plusieurs tests Nada :-(

Certains parlent de transposer le sqladapter sur un sqlreader d'autre de fill sur une datatable, breff il y a à manger et à boire mais sans résultat probant de mon coté, en tous cas j'ai pas réussi à adapter de solution.

La requete Left Join :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
SELECT        Tbl_Data.ID, Tbl_Data.Reference, Tbl_Data.Designation
FROM            (Tbl_Data LEFT OUTER JOIN
                     (SELECT ID_Affaire_Pointage, SUM(Nb_Heure) AS Heure
                      FROM   Tbl_Pointage
                     GROUP BY ID_Affaire_Pointage) Tbl_Pointage ON Tbl_Data.ID = Tbl_Pointage.ID_Affaire_Pointage)

Le code d'appel :



Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
            Try
            Tbl_DataTableAdapter.ClearBeforeFill = False
            Tbl_DataTableAdapter.See_ALL(Me.MydatabaseDataSet.Tbl_Data)
            Catch ex As System.Exception
            System.Windows.Forms.MessageBox.Show(ex.Message)
            End Try
            dgv.DataSource = "TblDATABindingSource"
Ca me rappel la galère il y a quelques mois pour une autre requête élaborée intégrant fonction sql IN() où j'avais galérer à trouver la solution de contournement...

Bref, j'aurais éventuellement la solution de faire une requête mono table + une requête sur la table pointage puis créer un dico puis boucler sur toutes les lignes du DGV pour alimenter ma colonne "Heure" avec ce même dico, mais bon franchement je trouve ça dommage niveau temps d'exécution du code et la syntaxe à me frapper.

Si quelqu'un à la solution je suis preneur.

@MicroSoft : Prochaine étape prévoir des DataSet qui gèrent des requêtes "complexes" !

Merci d'avance !

Peall13