Niet meer dan 60 dagen weergeven

Status
Niet open voor verdere reacties.

Doofenshmirt

Gebruiker
Lid geworden
3 nov 2011
Berichten
222
Hoi,

Met dit filter ik datum in een datagridview , als het verschil meer als 30 dagen is maakt hij de rows Rood.

Wat moet in nu er tussen zetten dat hij zoekt naar dat verschil van 30 dagen , maar met een max aantal dagen voor die datum.

Dus dat hij ouder als 30 dagen rood maakt en als het ouder is al 60 dagen niet meer weergeeft.

Ik hoop dat ik een beetje duidelijk ben.




Code:
Try
            For Each NRow In Me.Tabel1DataGridView.Rows
                Dim date1, date2
                date1 = CType(NRow.Cells(1).Value(), String) 'dit is de datum in je datagrid
                date2 = Label1.Text 'Dit is de datum vandaag 
                If NRow.Cells(1).Value IsNot DBNull.Value Then
                    If DateDiff(DateInterval.Day, date1, date2) + 1 >= 30 Then  
                        NRow.DefaultCellStyle.ForeColor = Color.Red
                    Else
                        NRow.Visible = False
                    End If
                Else
                End If
            Next
        Catch ex As Exception

        End Try
 
Misschien kan het ook anders.


Als ik kan zoeken tussen 2 datum's en die weergeven is het ook goed.

bv Januari
Code:
Datum nr 1 is 01-01-2012 en datum 2 is 31-01-2012
Per maand dus.
 
Heb dit gevonden op het forum.

Eigenlijk bijna precies de zelfde vraag.

Code:
  Try
            For Each NRow In Tabel1DataGridView.Rows
                Dim date1, date2
                date1 = CType(NRow.Cells(1).Value(), String)  
                date2 = Label1.Text 
                If NRow.Cells(1).Value IsNot DBNull.Value Then
                    If DateDiff(DateInterval.Month, date1, date2) = 0 Then  
                        NRow.DefaultCellStyle.ForeColor = Color.Red
                    Else
                        NRow.Visible = True
                    End If
                Else
                End If
            Next
        Catch ex As Exception


        End Try

Alleen werkt het niet om de rows met zwarte tekst te verbergen ?

Code:
  NRow.DefaultCellStyle.ForeColor = Color.Red
                    Else
                        NRow.Visible = False
Dan doe hij het niet , ook niet rood maken.:confused:

Ik wil alleen de uitkomst zien , in dit geval rood gemaakt.
 
Wordt die code wel uitgevoerd??
Even checkenmet een breakpoint/msgbox...
 
Volgens mij wel.

Als ik dit invoer doet hij het wel

True inplaats van False

Code:
  NRow.DefaultCellStyle.ForeColor = Color.Red
                    Else
                        NRow.Visible = True
Heb al geprobeerd om na dit ,de rows die Color.Black zijn te verbergen kan ik niet voor elkaar krijgen .

Iets in de geest van
Code:
 if NRow.DefaultCellStyle.ForeColor = Color.Black then
                    
                        NRow.Visible = False 
of zoiets zou het moeten worden ?
 
Halo samen je kan het op deze manier proberen

Code:
 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Try
            For Each NRow In Me.DataGridView1.Rows
                Dim date1, date2
                date1 = CType(NRow.Cells(0).Value(), String) 'dit is de datum in je datagrid
                date2 = Label1.Text 'Dit is de datum vandaag 
                If NRow.Cells(0).Value IsNot DBNull.Value Then
                    If DateDiff(DateInterval.Day, date1, date2) + 1 >= 30 Then
                        NRow.DefaultCellStyle.ForeColor = Color.Red
                    Else
                        'NRow.Visible = False
                    End If
                Else
                End If
            Next
        Catch ex As Exception

        End Try
        Try
            For Each NRow In Me.DataGridView1.Rows
                Dim date1, date2
                date1 = CType(NRow.Cells(0).Value(), String) 'dit is de datum in je datagrid
                date2 = Label1.Text 'Dit is de datum vandaag 
                If NRow.Cells(0).Value IsNot DBNull.Value Then
                    If DateDiff(DateInterval.Day, date1, date2) + 1 >= 60 Then
                        NRow.DefaultCellStyle.ForeColor = Color.Black

                        NRow.Visible = True
                    End If
                Else
                End If
            Next
        Catch ex As Exception

        End Try
    End Sub

En de code die je hebt uit voeren voor de afdruk
 
Laatst bewerkt:
Hallo Doofenshmirt

je vraag wat beter bekeken en denk dat dit de oplosing voor je probleem is.
hopelijk ben je hier mee geholpen.
Met de button Filter selecteer je alles wat rood is en kan worden afgedrukt.

Code:
 Private Sub BT_Filter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_Filter.Click
        'Filterd alledagen ouder dan 30 en jonger dan 60 dagen
        Try
            For Each NRow In Me.DataGridView1.Rows
                Dim date1, date2
                date1 = CType(NRow.Cells(0).Value(), String) 'dit is de datum in je datagrid
                date2 = Label1.Text 'Dit is de datum vandaag 
                If NRow.Cells(0).Value IsNot DBNull.Value Then
                    If DateDiff(DateInterval.Day, date1, date2) + 1 >= 30 Then
                        NRow.DefaultCellStyle.ForeColor = Color.Red
                    Else
                        NRow.DefaultCellStyle.ForeColor = Color.Black
                        NRow.Visible = False
                    End If
                    If DateDiff(DateInterval.Day, date1, date2) >= 60 Then
                        NRow.DefaultCellStyle.ForeColor = Color.Black
                        NRow.Visible = False
                    End If
                End If
            Next
        Catch ex As Exception

        End Try
    End Sub

       End Sub

met deze button maak je weer alles zichtbaar.

Code:
 Private Sub BT_refres_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_refres.Click
        Try
            For Each NRow In Me.DataGridView1.Rows
                Dim date1, date2
                date1 = CType(NRow.Cells(0).Value(), String) 'dit is de datum in je datagrid
                date2 = Label1.Text 'Dit is de datum vandaag 
                If NRow.Cells(0).Value IsNot DBNull.Value Then
                    If DateDiff(DateInterval.Day, date1, date2) + 1 >= 30 Then
                        NRow.DefaultCellStyle.ForeColor = Color.Red
                    Else
                        NRow.DefaultCellStyle.ForeColor = Color.Black
                        NRow.Visible = True
                    End If
                    If DateDiff(DateInterval.Day, date1, date2) >= 60 Then
                        NRow.DefaultCellStyle.ForeColor = Color.Black
                        NRow.Visible = True
                    End If
                End If
            Next
        Catch ex As Exception

        End Try
End sub


Groeten Old Hippy
 
Laatst bewerkt:
Oke let wel op hij kijk naar aantal dagen Als je echt per maand wild filteren wijzig dan de code

Voor ouder dan een maand
Code:
 DateDiff(DateInterval.Month, date1, date2) >= 1

en voor ouder dan 2 maanden
Code:
 DateDiff(DateInterval.Month, date1, date2) >= 2
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan