Synchroniser avec ma datagrid (vb.net 2010)

curvi Messages postés 5 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 17 juin 2012 - 28 oct. 2010 à 03:06
curvi Messages postés 5 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 17 juin 2012 - 29 oct. 2010 à 10:56
Bonjour, dans mon programme j'ai une datagrid j'utilise une base access , quand je clique sur précèdent ou suivant ou debut ou dernier je veux que les valeurs des colonnes seront dans leurs textbox respectifs et que le curseur de la datagrid se déplace en même temps selon le bouton que l'on a active, comment faire pour ecrire de tel code ?
merci .

4 réponses

NSUADI Messages postés 540 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 1 février 2013 2
28 oct. 2010 à 03:21
utilise les bindingsource et bindingnavigator...par exemple

Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...

Visual Basic .Net is the best
and vb6.0
0
curvi Messages postés 5 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 17 juin 2012
28 oct. 2010 à 10:21
Bonjour,
merci pour ton aide , je suis encore débutant je vous envoie mon code
si vous pouvez les corriger je comprendrai beaucoup mieux merci


Public Class form1
Dim inc As Integer
Dim con As New OleDb.OleDbConnection
Dim dbProvider As String
Dim dbSource As String
Dim ds As New DataSet
Dim da As OleDb.OleDbDataAdapter
Dim sql As String
Dim maxRows As Integer
Private Sub form1_Load_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.BASECARTETableAdapter.Fill(Me.Basecarte2003DataSet.BASECARTE)
dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
dbSource "Data Source C:\vbnet\cartevisa\cartevisa\basecarte2003.mdb"
con.ConnectionString = dbProvider & dbSource
con.Open()

sql = "select * from BASECARTE"
da = New OleDb.OleDbDataAdapter(sql, con)
da.Fill(ds, "basecarte2003")
con.Close()
maxRows = ds.Tables("basecarte2003").Rows.Count
inc = -1
txtDatBanque.Visible = False
End Sub
Private Sub NavigateRecords()
lblRef.Text = ds.Tables("basecarte2003").Rows(inc).Item(1)
DTPicker2.Value = ds.Tables("basecarte2003").Rows(inc).Item(2)
txtNumCarte.Text = ds.Tables("basecarte2003").Rows(inc).Item(3)
txtAutorisation.Text = ds.Tables("basecarte2003").Rows(inc).Item(4)
txtMontant.Text = ds.Tables("basecarte2003").Rows(inc).Item(5)
DTPicker1.Value = ds.Tables("basecarte2003").Rows(inc).Item(6)
End Sub
Private Sub BtnArriere_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnArriere.Click
If inc > 0 Then
inc = inc - 1
NavigateRecords()

ElseIf inc = -1 Then
MsgBox("No Records Yet")
ElseIf inc = 0 Then

End If
End Sub
Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
If inc <> maxRows - 1 Then
inc = inc + 1
NavigateRecords()
Else

End If
End Sub
Private Sub btnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLast.Click
If inc <> maxRows - 1 Then
inc = maxRows - 1
NavigateRecords()
End If
End Sub
Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click
If inc <> 0 Then
inc = 0
NavigateRecords()
End If
End Sub
Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click
Dim cb As New OleDb.OleDbCommandBuilder(da)

If txtNumVente.Text "" Or txtMontant.Text "" Then
MsgBox("remplir les cases vides")
Else
ds.Tables("basecarte2003").Rows(inc).Item(0) = lblRef.Text
ds.Tables("basecarte2003").Rows(inc).Item(1) = txtNumVente.Text
ds.Tables("basecarte2003").Rows(inc).Item(2) = DTPicker2.Value
ds.Tables("basecarte2003").Rows(inc).Item(3) = txtNumCarte.Text
ds.Tables("basecarte2003").Rows(inc).Item(4) = txtAutorisation.Text
ds.Tables("basecarte2003").Rows(inc).Item(5) = txtMontant.Text
ds.Tables("basecarte2003").Rows(inc).Item(6) = DTPicker1.Value

da.Update(ds, "basecarte2003")
MsgBox("Data updated")
End If
End Sub
Private Sub btnAddNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddNew.Click
btnAddNew.Enabled = False
btnUpdate.Enabled = False
btnDelete.Enabled = False

txtNumVente.Clear()
txtMontant.Clear()
End Sub
Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click
' btnCommit.Enabled = False
btnAddNew.Enabled = True
btnUpdate.Enabled = True
btnDelete.Enabled = True

inc = 0
NavigateRecords()
End Sub
Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click

If MessageBox.Show("Do you really want to Delete this Record?", _
"Delete", MessageBoxButtons.YesNo, _
MessageBoxIcon.Warning) = DialogResult.No Then
MsgBox("Operation Cancelled")
Exit Sub
End If
Dim cb As New OleDb.OleDbCommandBuilder(da)

ds.Tables("basecarte2003").Rows(inc).Delete()
maxRows = maxRows - 1

inc = 0
NavigateRecords()
da.Update(ds, "basecarte2003")
End Sub

Private Sub DataGrid1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGrid1.SelectionChanged
Me.lblRef.Text = Me.DataGrid1.Item(0, Me.DataGrid1.CurrentRow.Index).Value
Me.txtNumVente.Text = Me.DataGrid1.Item(1, Me.DataGrid1.CurrentRow.Index).Value
DTPicker2.Value = Me.DataGrid1.Item(2, Me.DataGrid1.CurrentRow.Index).Value
Me.txtNumCarte.Text = Me.DataGrid1.Item(3, Me.DataGrid1.CurrentRow.Index).Value
Me.txtAutorisation.Text = Me.DataGrid1.Item(4, Me.DataGrid1.CurrentRow.Index).Value
Me.txtMontant.Text = FormatNumber(Me.DataGrid1.Item(5, Me.DataGrid1.CurrentRow.Index).Value, 3)
DTPicker1.Value = Me.DataGrid1.Item(6, Me.DataGrid1.CurrentRow.Index).Value
End Sub

End Class
*******************************
0
cs_ELMABROUK Messages postés 4 Date d'inscription vendredi 3 mars 2006 Statut Membre Dernière intervention 29 octobre 2010
29 oct. 2010 à 04:50
mabrouki,salut curvi
voici ton code avec les corrections.bon code.
----------------------------------------------
Imports System
Imports System.Windows.Forms
Imports System.Windows.Forms.DataGrid
Imports System.Data.OleDb
Public Class form1
Dim inc As Integer
Dim con As OleDbConnection = New OleDbConnection
Dim dbProvider As String
Dim dbSource As String
Dim ds As DataSet = New DataSet
Dim da As OleDbDataAdapter = New OleDbDataAdapter
Dim sql As String
Dim maxRows As Integer
Public Sub New()

' Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()

' Ajoutez une initialisation quelconque après l'appel InitializeComponent().

End Sub
Private Sub form1_Load_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'cette ligne ne sert à rien car tu as choisi de travailler par code
'tu as declare un dataset "ds" et "da" ils se chargent de tout
'de plus tu as code en dur dbProvider

'Me.BASECARTETableAdapter.Fill(Me.Basecarte2003DataSet.BASECARTE)
'----------------------------------------------------------------

dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
'dbSource "Data Source C:\Documents and Settings\MOMO\Bureau\FORUM\WinProjetsClientsDB.vb\WinDBForum\basecarte2003.mdb"
dbSource "Data Source C:\vbnet\cartevisa\cartevisa\basecarte2003.mdb"

con.ConnectionString = dbProvider & dbSource
con.Open()
'ici fais gaffe c'est le nom de la table dans la BD
sql = "select * from BASECARTE;"
da = New OleDb.OleDbDataAdapter(sql, con)
'ici le nom n'est qu'un alias facultatif
'pour la copie en memoire de la table
da.Fill(ds, "aliasBaseCarte2003")

con.Close()
maxRows = ds.Tables("aliasBaseCarte2003").Rows.Count
inc = -1
txtDatBanque.Visible = False

DataGrid1.DataSource = ds
DataGrid1.DataMember = ds.Tables("aliasBaseCarte2003").TableName

End Sub
Private Sub NavigateRecords()
lblRef.Text = ds.Tables("aliasBaseCarte2003").Rows(inc).Item(1)
DTPicker2.Value = ds.Tables("aliasBaseCarte2003").Rows(inc).Item(2)
txtNumCarte.Text = ds.Tables("aliasBaseCarte2003").Rows(inc).Item(3)
txtAutorisation.Text = ds.Tables("aliasBaseCarte2003").Rows(inc).Item(4)
txtMontant.Text = ds.Tables("aliasBaseCarte2003").Rows(inc).Item(5)
DTPicker1.Value = ds.Tables("aliasBaseCarte2003").Rows(inc).Item(6)
End Sub
Private Sub btnFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFirst.Click

inc = 0
'met à jour datagrid1 pour suivre inc
Me.DataGrid1.CurrentRowIndex = inc
NavigateRecords()

End Sub
Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
If inc < maxRows - 1 Then
inc = inc + 1
'met à jour datagrid1 pour suivre inc
Me.DataGrid1.CurrentRowIndex = inc
NavigateRecords()
End If
End Sub
Private Sub BtnArriere_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnArriere.Click

If inc > 0 Then
inc = inc - 1
NavigateRecords()
'met à jour datagrid1 pour suivre inc
Me.DataGrid1.CurrentRowIndex = inc
ElseIf inc = -1 Then
MsgBox("No Records Yet")
End If
End Sub
Private Sub btnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLast.Click
inc = maxRows - 1
'met à jour datagrid1 pour suivre inc
Me.DataGrid1.CurrentRowIndex = inc
NavigateRecords()
End Sub

Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click
Dim cb As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(da)

If txtNumVente.Text "" Or txtMontant.Text "" Then
MsgBox("remplir les cases vides")
Else
ds.Tables("aliasBaseCarte2003").Rows(inc).Item(0) = lblRef.Text
ds.Tables("aliasBaseCarte2003").Rows(inc).Item(1) = DTPicker2.Text
ds.Tables("aliasBaseCarte2003").Rows(inc).Item(2) = DTPicker2.Value
ds.Tables("aliasBaseCarte2003").Rows(inc).Item(3) = txtNumCarte.Text
ds.Tables("aliasBaseCarte2003").Rows(inc).Item(4) = txtAutorisation.Text
ds.Tables("aliasBaseCarte2003").Rows(inc).Item(5) = txtMontant.Text
ds.Tables("aliasBaseCarte2003").Rows(inc).Item(6) = DTPicker1.Value

da.Update(ds, "aliasBaseCarte2003")
MsgBox("Data updated")
End If
End Sub
Private Sub btnAddNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddNew.Click
btnAddNew.Enabled = False
btnUpdate.Enabled = False
btnDelete.Enabled = False

DTPicker2.ResetText()
txtMontant.Clear()
End Sub
Private Sub btnClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClear.Click
' btnCommit.Enabled = False
btnAddNew.Enabled = True
btnUpdate.Enabled = True
btnDelete.Enabled = True

inc = 0
'met à jour datagrid1 pour suivre inc
Me.DataGrid1.CurrentRowIndex = inc
NavigateRecords()
End Sub
Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click

If MessageBox.Show("Do you really want to Delete this Record?", _
"Delete", MessageBoxButtons.YesNo, _
MessageBoxIcon.Warning) = DialogResult.No Then
MsgBox("Operation Cancelled")
Exit Sub
End If
Dim cb As OleDb.OleDbCommandBuilder = New OleDb.OleDbCommandBuilder(da)
'verifie si tu n'est en EOF
If inc <> -1 Then
ds.Tables("aliasBaseCarte2003").Rows(inc).Delete()
da.Update(ds, "aliasBaseCarte2003")
'met à jour maxRows apres update
maxRows = ds.Tables("aliasBaseCarte2003").Rows.Count
inc = 0
'met à jour datagrid1 pour suivre linc
Me.DataGrid1.CurrentRowIndex = inc
NavigateRecords()
End If
End Sub
'on utilise l'evenement MouseDown & HitTestInfo pour recuperer la ligne en cours
'il faut importer en plus System.Windows.Forms.DataGrid
Private Sub DataGrid1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGrid1.MouseDown

Dim xHitTestInfo As HitTestInfo
xHitTestInfo = Me.DataGrid1.HitTest(e.X, e.Y)
Dim lig As Integer = xHitTestInfo.Row

'corrige moi ca -> Me.DataGrid1.CurrentRow.Index
'enleve value
'attention ordre des indices ->rowindex,columindex
Me.lblRef.Text = Me.DataGrid1.Item(lig, 0).ToString
Me.txtNumVente.Text = Me.DataGrid1.Item(lig, 1).ToString
DTPicker2.Value = CType(Me.DataGrid1.Item(lig, 2), Date)
Me.txtNumCarte.Text = Me.DataGrid1.Item(lig, 3).ToString
Me.txtAutorisation.Text = Me.DataGrid1.Item(lig, 4).ToString
Me.txtMontant.Text = FormatNumber(Me.DataGrid1.Item(lig, 5), 3).ToString
DTPicker1.Value = CType(Me.DataGrid1.Item(lig, 6), Date)

End Sub
End Class
0
curvi Messages postés 5 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 17 juin 2012
29 oct. 2010 à 10:56
Bonjour,
merci EL MABROUK pour cette aide précieuse , j'ai eu quelques erreurs secondaires dans ce code envoyé

1* Me.DataGrid1.CurrentRow.Index = inc
l'erreur est : property 'index' is 'readonly'

2* xHitTestInfo = Me.DataGrid1.HitTest(e.X, e.Y)
l'erreur est : Value of type 'System.Windows.Forms.DataGridView.HitTestInfo' cannot be converted to 'System.Windows.Forms.DataGrid.HitTestInfo'.

3* DTPicker1.Value = CType(Me.DataGrid1.Item(lig, 6), Date)
l'erreur est : Value of type 'System.Windows.Forms.DataGridViewCell' cannot be converted to 'Date'.

A part ces trois erreurs tout est bon. J'apprecie beaucoup ton aide.
0
Rejoignez-nous