none
Datagrid conferir data e hora vb.net RRS feed

  • Pergunta

  • To com um problema aqui em conferir data e hora no grid e já faz um tempão e tentei de tudo e não tive sucesso, se alguém ai puder me dar uma luz. afinal, este datagrid é animal, to demorando mais para aprender sobre o grid do q levei para aprencer vb.net.

    Veja que estou tentando fazer e minhas tentativas quase deu certo, mais sempre falta algo e não sei mais o que fazer.

    tenho duas colunas preenchidas no grid assim:

    Coluna "Data"

    Mar 8 15:00

    Mar 9 15:00 etc...

    Coluna "Inscrições"

    Aberto

    Fechado

    Em andamento

    Finalizado etc...

    Eu preciso que faça uma pesquisa automática na coluna "Data" e se encontrar uma data ou horário vencido a coluna "Inscrições" made a string para algo com "Fechado" "Em andamento" e assim por diante.

    Por exemplo:

    Se a data não venceu a cell da coluna "Inscrições" fica assim 'Aberto' e...

    Se faltar 2min. para vencer a data da coluna "Data" a coluna "Inscrições" fica assim 'Encerrado" e...

    Se a data venceu a cell da coluna "Inscrições" fica assim 'Fechado' e...

    A pesquisa tem de ser automática...dai gostaria de sebar se tenho que colocar o código da pesquisa num evento do grid ou num timer.

    Se alguém ai puder me dar uma luz fico agradecido.

    sexta-feira, 8 de março de 2013 15:48

Todas as Respostas

  • amigo, depende da necessidade 

    pode ser melhor por em um evento Load caso queria exibir caso carregado, você preenche o grid, e depois valida no método e já traz o grid formatado após o load,

    ou no botão salvar para processar tudo e já validar... (para evitar ficar lento se você colocar item a item no grid ) 

    um timer ? talvez seja melhor colocar em uma thread nesse caso e pegar o grid e processa-lo para não travar a tela...

    se for preciso validar na hora da digitação, recomendo um cellvalidating..

    são as sugestões que tenho pra vc, dependendo da sua necessidade cada 1 se encaixa melhor...

    Abraços !


    Att, Afonso Fernandes.

    sexta-feira, 8 de março de 2013 16:22
  • Obrigado Afonso, olha, o grid é preenchido a todo momento de outro lugar (de outro form) e esta mudando a data e horário constantemente, só que não to conseguindo fazer a pesquisa no grid pela data e horário corretamente como falei acima. Já tentei aqui de todas as maneiras para conferir a data e horário mais não estou obtendo sucesso. Você ai não pode me dar uma idéia sobre a pesquisa?

    sexta-feira, 8 de março de 2013 16:45
  • Não foi fácil mais consegui assim...

        Private Sub DataGrid1_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles _
        DataGrid1.CellEnter, DataGrid1.RowLeave

    ' como a data e hora aparece assim na coluna(0) do grid "Mar 9 20:30 eu separo ela e mudo a hordem da data apenas "Mar 9" para "9 Mar"

              Dim vTexto As Object
                        vTexto = Split(DataGrid1.Rows(e.RowIndex).Cells("Data").Value, " ")
                        REM vTexto(0)  pega data
                        REM vTexto(1)  pega dia
                        REM vTexto(2)  pega horas

      For i = 0 To DataGrid1.Rows.Count - 1

                        If DataGrid1.Rows(i).Cells("Data").Value <= vTexto(0) & " " & vTexto(1) & " " & h1.Text Then
                            DataGrid1.Rows(i).Cells("Estado").Value = "fechado"
                            'Me.DataGrid1.Rows(i).DefaultCellStyle.ForeColor = Color.Green
                            'Me.DataGrid1.Rows(i).DefaultCellStyle.Font = New Font(Me.DataGrid1.DefaultCellStyle.Font, FontStyle.Bold)
                            Me.DataGrid1.Rows(i).Cells("Estado").Style.ForeColor = Color.Red
                            Me.DataGrid1.Columns("Estado").DefaultCellStyle.Font = New Font(DataGridView.DefaultFont, FontStyle.Bold)
                            REM tamanho e estilo font
                            'Me.DataGrid1.Columns("Estado").DefaultCellStyle = New DataGridViewCellStyle With {.Font = New Drawing.Font("BoomBox", 7.0!, FontStyle.Bold)}
                            'Me.DataGrid1.Rows(i).DefaultCellStyle = New DataGridViewCellStyle With {.Font = New Drawing.Font("BoomBox", 8.0!, FontStyle.Bold)}

                            'Me.DataGrid1.Columns("Estado").DefaultCellStyle.Font = New Font(DataGridView.DefaultFont, FontStyle.Bold)        
                            'DataGrid1.Rows(i).Cells("Estado").Value = New Font(DataGridView.DefaultFont, FontStyle.Bold)
                        Else
                            DataGrid1.Rows(i).Cells("Estado").Value = "aberto"
                            'Me.DataGrid1.Rows(i).DefaultCellStyle.ForeColor = Color.Black
                            'Me.DataGrid1.Rows(i).DefaultCellStyle.Font = New Font(DataGrid1.DefaultCellStyle.Font, FontStyle.Regular)
                            'Me.DataGrid1.Columns("Estado").DefaultCellStyle.Font = New Font(DataGridView.DefaultFont, FontStyle.Regular)
                            Me.DataGrid1.Rows(i).Cells("Estado").Style.ForeColor = Color.Green
                        End If
                    Next

        End Sub

    'No código acima tem mais umas coisas para formatar tipo, style font e bold

    ESTE DATAGRID É O BICHO, MAIS EU GOSTO!!!

    domingo, 10 de março de 2013 00:30