Bonjour,

Je débute dans l'apprentissage de vb.net et je tourne en rond pour la mise à jour de mon DGV vers la base de donnée (Access). Je développe sur VS2012.

Mon DGV est alimenté par une requête paramétrée avec un OUTER JOIN après sélection d'une valeur dans le form.

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
Private Sub T_HUIBindingSource_PositionChanged(sender As Object, e As EventArgs) Handles T_HUIBindingSource.PositionChanged, T_HUIBindingSource.BindingComplete
        Dim objDataview As New DataView
        Dim strCon As String
        Dim objCon As OleDb.OleDbConnection
        Dim objCommand As OleDb.OleDbCommand
        Dim objParameter As OleDb.OleDbParameter
        Dim objAdapter As OleDb.OleDbDataAdapter
        Dim objDataset As DataSet
        Dim strSQL As String
 
        strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= C:\Users\Utilisateur1\Documents\Visual Studio 2012\Projects\Project01\Base022.accdb"
        objCon = New OleDb.OleDbConnection(strCon)
 
        If IsDBNull(NHUI) Or NHUI.Text = "" Then
            Exit Sub
            strSQL = "SELECT C_HCT_NHCT, C_HCT_NHUI, C_HCT_NCRT, C_HCT_CRT FROM T_HCT WHERE C_HCT_NHUI = 1"
            objCommand = New OleDb.OleDbCommand(strSQL)
        Else
            strSQL = "SELECT * FROM T_CRT t1 LEFT OUTER JOIN (SELECT * FROM T_HCT WHERE C_HCT_NHUI = @NHUI) t2 ON t1.C_CRT_NCRT=t2.C_HCT_NCRT"
            objCommand = New OleDb.OleDbCommand(strSQL)
            objParameter = New OleDb.OleDbParameter
            objParameter.ParameterName = "@NHUI"
            objParameter.Value = NHUI.Text
            objCommand.Parameters.Add(objParameter)
        End If
 
        objCommand.Connection = objCon
        objAdapter = New OleDb.OleDbDataAdapter(objCommand)
        objDataset = New DataSet
        objAdapter.Fill(objDataset)
        T_HCTDataGridView.DataSource = objDataset
        T_HCTDataGridView.DataMember = objDataset.Tables(0).TableName
 
    End Sub
La visualisation fonctionne tant bien que mal mais je n'arrive pas à gérer l'enregistrement des modifications dans la BdD.( UPDATE, INSERT et DELETE)
J'ai bien compris que le DataAdapter n'impliquait qu'une DataTable à la fois.
Je suis prêt à "creuser" de mon côté pour trouver mais pourriez-vous m'orienter pour mes recherches.
Je ne sais pas si il faut modifier (et si oui comment ?) les requêtes de mises à jour du DataAdapter ou faut-il traiter le problème autrement ?

Ce cas de figure est relativement courant (Un DataGridView alimenté par une requête avec plusieurs tables) et je suis coincé pour poursuivre mon apprentissage.

Merci d'avance pour vos coups de pouce.
Cordialement,