Grid.DataSource = CDSet
Imports System.ComponentModel Public Class DataColby Implements INotifyPropertyChanged Public Sub New(ByVal Ident As Integer, ByVal CodeArt As String, ByVal Prix_U As Double) MyBase.New ide = Ident code = CodeArt prixU = Prix_U IsChanged = False End Sub Private ide As Integer ''' <summary> ''' Propriété correspondant au champ ID de la BDD ''' </summary> Public Property ID As Integer Get Return Me.ide End Get Set If (Me.ide = Value) Then Return End If Me.ide = Value Me.GenerePropertyChanged("ID") End Set End Property Private code As String ''' <summary> ''' Propriété correspondant au champ Prix(U) de la BDD ''' </summary> Public Property CodeArticle As String Get Return Me.code End Get Set If (Me.code = Value) Then Return End If Me.code = Value Me.GenerePropertyChanged("CodeArticle") End Set End Property Private prixU As Double ''' <summary> ''' Propriété correspondant au champ ID de la BDD ''' </summary> Public Property PrixUnitaire As Double Get Return Me.prixU End Get Set If (Me.prixU = Value) Then Return End If Me.prixU = Value Me.GenerePropertyChanged("CodeArticle") End Set End Property 'etc ''' <summary> ''' Propriété qui stockera si un changement a eu lieu ''' </summary> Public Property IsChanged As Boolean Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged Private Sub GenerePropertyChanged(ByVal Propriete As String) RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(Propriete)) Me.IsChanged = True End Sub End Class
Dim lesData As List(Of DataColby) = New List(Of DataColby) Private Sub ChargeBDD() Dim Mag As Integer = 1 Dim PrixU As Integer = 0 Dim Sql As String = String.Format("SELECT ID, CodeArt, Stock, Sortie, [PrixG] AS[Prix(U)], Qté, Montant FROM Gros WHERE [Stock] >= '{0}' AND [PrixG] NOT LIKE '{1}' ORDER BY [ID] ASC", Mag, PrixU) 'c'est mieux avec string format qu'avec des + Dim GP As OleDbConnection = New OleDbConnection Dim Cmd As OleDbCommand = New OleDbCommand(Sql) Dim GrTA As OleDbDataAdapter = New OleDbDataAdapter(Cmd) Cmd.Connection = GP Dim CDSet As DataSet = New DataSet GrTA.Fill(CDSet, "Gros") Dim GrT As DataTable = CDSet.Tables("Gros") Dim i As Integer = 0 Do While (i < GrT.Rows.Count) lesData.Add(New DataColby(GrT.Rows(i).Field(Of Integer)("ID"), GrT.Rows(i).Field(Of String)("CodeArt"), GrT.Rows(i).Field(Of Double)("PrixG"))) i = (i + 1) Loop 'là on ne fait pas Grid.DataSource = lesData car on verrait la colonne IsChanged 'Il faut ajouter un contrôle binding source comme expliqué dans le tuto, et modifier les colonnes à sa guise DataColbyBindingSource.DataSource = lesData End Sub
Private Sub EnregistrerModifs() Dim modifs As List(Of DataColby) = lesData.Where(Function(x) x.IsChanged).ToList 'liste des enregistrements modifiés For Each item As DataColby In modifs 'ici le code pour ajouter dans la BDD Next End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPrivate Sub ChargerGros() Try Connection() Dim PrixU As Integer = 0 Dim Mag As Integer = 1 Sql = "SELECT ID, CodeArt, Stock, Sortie, [PrixG] AS [Prix(U)], Qté, Montant " _ + " FROM Gros WHERE [Stock] >= '" & Mag & "'" _ + " AND [PrixG] NOT LIKE '" & PrixU & "' ORDER BY [ID] ASC" Cmd = New OleDb.OleDbCommand(Sql) : GrTA = New OleDb.OleDbDataAdapter(Cmd) Cmd.Connection() = GP : CDSet = New DataSet : GrTA.Fill(CDSet, "Gros") GrT = CDSet.Tables("Gros") : Grid.DataSource = CDSet Grid.DataMember = "Gros" : GridStockStyles() Catch ex As Exception Finally GP.Close() End Try End Sub