"SELECT date1 as [D], " & _ "format(date1, 'dddd dd MMMM YYYY') as [Date], " & _ "format(int(sum(veille)/3600),'00') & ':' & format(int(sum(veille)/60)-60*int(sum(veille)/3600),'00') &':'& format(sum(veille)-60*int(sum(veille)/60),'00') as [Veille], " & _ "format(dateadd('s', -sum(veille), sum(date2-date1)), 'hh:mm:ss') as [Temps Travail], " & _ "format(sum(date2-date1), 'hh:mm:ss') as [Temps Total]" & _ "FROM temps " & _ "GROUP BY date1, format(date1, 'dddd dd MMMM YYYY')" & _ "ORDER BY date1 DESC"
En fait comme la colonne ne se trie pas correctement si je laisse le tri automatique
Option Strict On Public Class Form1 Dim WithEvents dtgv As New DataGridView With {.Parent Me, .Bounds New Rectangle(0, 0, 300, 300)} Dim tri As Integer Dim rd As New Random Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load dtgv.Columns.Add("chiffres", "chiffres") dtgv.Columns.Add("dates", "dates") dtgv.Columns.Add("blabla", "blabla") For y = 1 To 12 Dim row As New DataGridViewRow row.CreateCells(dtgv, {y.ToString, New DateTime(rd.Next(1990, 2014), rd.Next(1, 13), rd.Next(1, 31)).ToShortDateString, rd.Next(0, 50)}) dtgv.Rows.Add(row) Next End Sub Private Sub dtgv_ColumnHeaderMouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dtgv.ColumnHeaderMouseClick If tri 1 Then tri 0 Else tri = 1 Select Case e.ColumnIndex Case 1 dtgv.Sort(New clsSorterDate(tri, e.ColumnIndex)) Case 0 dtgv.Sort(New clsSorter(tri, e.ColumnIndex)) Case 2 dtgv.Sort(New clsSorter(tri, e.ColumnIndex)) End Select End Sub End Class Public Class clsSorter Implements IComparer Dim _dir As System.ComponentModel.ListSortDirection Dim _colonne As Integer Sub New(ByVal dir As Integer, ByVal colonne As Integer) _colonne = colonne Select Case dir Case 0 _dir = System.ComponentModel.ListSortDirection.Ascending Case 1 _dir = System.ComponentModel.ListSortDirection.Descending End Select End Sub Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare Dim vx As Integer = CType(CType(x, DataGridViewRow).Cells(_colonne).Value, Integer) Dim vy As Integer = CType(CType(y, DataGridViewRow).Cells(_colonne).Value, Integer) Select Case _dir Case System.ComponentModel.ListSortDirection.Ascending If vx < vy Then Return 1 ElseIf vx = vy Then Return 0 Else Return -1 End If Case System.ComponentModel.ListSortDirection.Descending If vx < vy Then Return -1 ElseIf vx = vy Then Return 0 Else Return 1 End If End Select Return Nothing End Function End Class Public Class clsSorterDate Implements IComparer Dim _dir As System.ComponentModel.ListSortDirection Dim _colonne As Integer Sub New(ByVal dir As Integer, ByVal colonne As Integer) _colonne = colonne Select Case dir Case 0 _dir = System.ComponentModel.ListSortDirection.Ascending Case 1 _dir = System.ComponentModel.ListSortDirection.Descending End Select End Sub Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare Dim vx As Date = CType(CType(x, DataGridViewRow).Cells(_colonne).Value, Date) Dim vy As Date = CType(CType(y, DataGridViewRow).Cells(_colonne).Value, Date) Select Case _dir Case System.ComponentModel.ListSortDirection.Ascending If vx < vy Then Return 1 ElseIf vx = vy Then Return 0 Else Return -1 End If Case System.ComponentModel.ListSortDirection.Descending If vx < vy Then Return -1 ElseIf vx = vy Then Return 0 Else Return 1 End If End Select Return Nothing End Function End Class
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question