UPDATE à partir d'un DatagridView alimenté par une requête OUTER JOIN paramétrée
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:
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,