none
Evitar conflito duplo em datagridview vb.net? (Tabela horarios) RRS feed

  • Pergunta

  • Tenho uma tabela com varias colunas, mas as principais são Funcionario e Dia. Funcionário é o Y e o Dia é o X da questão.

    Vamos lá; tenho um botão que adiciona uma linha de horário de entrada e saida de funcionários. Mas o que eu gostaria de fazer é que quando clicasse esse botão, ele fizesse uma verificação pra ver se eu já não adicionei a linha do dia daquele funcionário antes.

    Esclareci pouco?

    Vou tirar um print do q eu não quero q aconteça.

    Não quero que isso aconteça


    terça-feira, 28 de junho de 2016 14:00

Respostas

  • Boa tarde Smart Tech Softwares,

    horaIni1 e horaFin1 são do tipo "ShortTimeString". Ao invés de usar "+" tente usar "&".

    Atenciosamente.


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Thales F Quintas quinta-feira, 30 de junho de 2016 20:33
    quarta-feira, 29 de junho de 2016 19:33
    Moderador

Todas as Respostas

  • Bom dia Smart Tech Softwares,

    Aqui há um exemplo completo de uma classe para evitar duplicidade em DGV.

    Por gentileza, verifique se este exemplo se aplica ao seu caso.

    Atenciosamente.


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 28 de junho de 2016 14:38
    Moderador
  • Não resolveu amigo, e está em C# OU WEB, não entendo essas linguagens
    terça-feira, 28 de junho de 2016 14:57
  • Olá Smart Tech Softwares,

    Segue dois exemplos em VB.NET

    Tente adapta-los ao seu caso, por gentileza.

        Private Sub DataGridView1_CellValidating(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating
    
            If DataGridView1.Columns(e.ColumnIndex).DataPropertyName = "DistinctCol" AndAlso e.FormattedValue.ToString() <> DataGridView1(e.ColumnIndex, e.RowIndex).Value.ToString() Then
    
                Dim dt As DataTable = CType(DataGridView1.DataSource, DataTable)
    
                Dim rows As DataRow() = dt.Select("Funcionario = " & e.FormattedValue)
    
                If rows.Length > 0 Then
    
                    MessageBox.Show("This value is already used.")
    
                    e.Cancel = True
    
                End If
    
            End If
    
        End Sub

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
            Dim dt As DataTable = CType(DataGridView1.DataSource, DataTable)
    
            Dim dv As New DataView(dt)
    
            Dim distinct As DataTable = dv.ToTable(True, New String() {"Funcionario"})
    
            If distinct.Rows.Count <> dt.Rows.Count Then
    
                MessageBox.Show("There are duplicate values.")
    
            End If
    
        End Sub

    Atenciosamente.


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 28 de junho de 2016 15:28
    Moderador
  • Tentei o seguinte código:

     Private Function Total() As Double
            For Each linhas As DataGridViewRow In dglista.Rows
                Dim horaIni1 As New TimeSpan(Date.Parse(linhas.Cells(4).Value).ToShortTimeString)
                Dim horaFin1 As New TimeSpan(Date.Parse(linhas.Cells(4).Value).ToShortTimeString)
                linhas.Cells(9).Value = horaIni1 + horaFin1
            Next
        End Function
        Private Sub btnsomar_Click(sender As Object, e As EventArgs) Handles btnsomar.Click
            Total()
        End Sub

    Porém me dá o seguinte erro:

    Conversion from string "00:00" to type 'Long' is not valid.

    Como converter o valor da cell que é 00:00 para "Long" nesse código?

    terça-feira, 28 de junho de 2016 16:15
  • Boa tarde Smart Tech Softwares,

    horaIni1 e horaFin1 são do tipo "ShortTimeString". Ao invés de usar "+" tente usar "&".

    Atenciosamente.


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    • Marcado como Resposta Thales F Quintas quinta-feira, 30 de junho de 2016 20:33
    quarta-feira, 29 de junho de 2016 19:33
    Moderador