1 pièce(s) jointe(s)
update dataset et adapter
Bonjour. Je fait une application qui affiche, / update des info provennant d'un base ACCESS.
Je dois utiliser la SQL connection string dans plusieur SUB, donc j"ai opter
pour déclarer les variable PUBLIC.
J'affiche une requete dasn un datagrid et je veut que l'usager modifie les valeurs. Je ne comprends pourquoi mon code n'update pas la basse de donné access.
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| Public Class MAIN
Public con As New OleDb.OleDbConnection
Public dbProvider As String
Public dbSource As String
Public ds As New DataSet
Public da As OleDb.OleDbDataAdapter
Public SQL As String
Sub connection()
Dim ip As String
ip = My.Computer.Name
dbProvider = "PROVIDER=Microsoft.ACE.OLEDB.12.0;"
If ip = "COTE-41F9E2EDFD" Then
dbSource = "Data Source = U:\pmg\db\pmg dessin.mdb"
Else
dbSource = "Data Source = y:\daniel cote\db\pmg dessin.mdb"
End If
con.ConnectionString = dbProvider & dbSource
con.Open()
end sub
Sub DataGridView1_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
Dim cb3 As New OleDb.OleDbCommandBuilder(da)
da.Update(ds.Tables(0))
End Sub
Sub FiltreProjet_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FiltreProjet.SelectedIndexChanged
FiltreSection.Text = ""
FiltrePlan.Text = ""
REMPLIR_FILTRE(FiltreProjet.Text, FiltreSection.Text, FiltrePlan.Text)
sql = "SELECT * FROM bom WHERE LIGNE_BOM LIKE '" & FiltreProjet.Text & "-%'"
da = New OleDb.OleDbDataAdapter(SQL, con)
ds.Clear()
ds.Reset()
da.Fill(ds, "data")
countt = ds.Tables.Count
DataGridView1.DataSource = ds.Tables(0)
End Sub
Sub FiltreProjet_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FiltreProjet.SelectedIndexChanged
FiltreSection.Text = ""
FiltrePlan.Text = ""
REMPLIR_FILTRE(FiltreProjet.Text, FiltreSection.Text, FiltrePlan.Text)
sql = "SELECT * FROM bom WHERE LIGNE_BOM LIKE '" & FiltreProjet.Text & "-%'"
da = New OleDb.OleDbDataAdapter(SQL, con)
ds.Clear()
ds.Reset()
da.Fill(ds, "data")
DataGridView1.DataSource = ds.Tables(0)
End Sub |
Pouver vous m'aider SVP
upater access avec dataadapter
je viens de tester, et ca ne marche pas??
C'est bizzard, ca marche la première fois que je roule le programme, ensuite, pas de update.
Utiliser un recordset serait-il plus facile??
modfier une database via un datagridview
SALUT
Je cherche comment faire pour updater une database quand on modifie ses valeurs à l'aide d'un datagridview
En effet, je viens de découvir que le dataset change quand on quitte la ligne de l'enrégistrement. mais que l'évenement DATAGRIDVIEW1_CELLCHANGED est exécuter avant que le curseur change de cellule.
Situation #1
Je modifie une cellule de la ligne 3, l'evenement DATAGRIDVIEW1_CELLVALUECHANGED est exécuté mais le dataset ne change pas. Ensuite, je modifie une cellule de la ligne 5. DATAGRIDVIEW1_CELLVALUECHANGED est exécuter mais le dataset utilise le changement de la ligne 3 seulement
Situation #2
Je modifie la cellule ligne 4 / collonne 2 , l'evenement DATAGRIDVIEW1_CELLVALUECHANGED est exécuté mais le dataset ne change pas. Ensuite, Je modifie la cellule ligne 4 / collonne 4 , l'evenement DATAGRIDVIEW1_CELLVALUECHANGED est exécuter, pas toujours pas de dataset changé.
Situation #3
Si j'utilise un bouton UPDATE, tout fonctionne car le focus QUITTE la ligne pour activer la bouton. Moi je veut me editer/update la database tout en restant dans le datagridview.
Il y a surement un moyen pour updater une la database quand on bouge a l'intérieur d'une datagridview, et non pas ajouter un bouton UPDATE.
merci de votre aide
Voici le code que j'ulitise pour l'évenement DATAGRIDVIEW!_CELLCHANGED
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
Private Sub DataGridView1_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged
Dim ds2 As New DataSet
Dim cb As New OleDb.OleDbCommandBuilder(da)
ds2 = ds.GetChanges ' j'ai mis cette ligne pour m'aider a débugger
If ds.HasChanges Then
da.Update(ds, "DATA")
End If
End Sub |