NAO PERMITIR A DUPLICACAO DE LINHAS
Boa tarde a todos,
Tenho uma dificuldade pois tenho dois forms cada um com seu datagridview e consigo passar os items de um datagrid para outro, so que o grande problema me repete os items cada vez que adiciono, querendo que seja somente um item, ai vai o codigo:
Dim Linha As DataGridViewRow = Me.DataGridItens.CurrentRow
Try
frmFatura.DR = frmFatura.DT.NewRow
frmFatura.DR(frmFatura.DcIDItem) = Linha.Cells(0).Value
frmFatura.DR(frmFatura.DcNome_Item) = Linha.Cells(1).Value
frmFatura.DR(frmFatura.DcIDFornecedor) = Linha.Cells(2).Value
frmFatura.DR(frmFatura.DcNome_Fornecedor) = Linha.Cells(3).Value
frmFatura.DT.Rows.Add(frmFatura.DR)
frmFatura.DataGridFactura.DataSource = frmFactura.DT
Me.Close()
Catch ex As Exception
End Try
Dim Valor As Decimal
For Each coluna As DataGridViewRow In frmFatura.DataGridFatura.Rows
Valor = Valor + coluna.Cells(3).Value
Next
Desde ja agradeco qualquer ajuda
Tenho uma dificuldade pois tenho dois forms cada um com seu datagridview e consigo passar os items de um datagrid para outro, so que o grande problema me repete os items cada vez que adiciono, querendo que seja somente um item, ai vai o codigo:
Dim Linha As DataGridViewRow = Me.DataGridItens.CurrentRow
Try
frmFatura.DR = frmFatura.DT.NewRow
frmFatura.DR(frmFatura.DcIDItem) = Linha.Cells(0).Value
frmFatura.DR(frmFatura.DcNome_Item) = Linha.Cells(1).Value
frmFatura.DR(frmFatura.DcIDFornecedor) = Linha.Cells(2).Value
frmFatura.DR(frmFatura.DcNome_Fornecedor) = Linha.Cells(3).Value
frmFatura.DT.Rows.Add(frmFatura.DR)
frmFatura.DataGridFactura.DataSource = frmFactura.DT
Me.Close()
Catch ex As Exception
End Try
Dim Valor As Decimal
For Each coluna As DataGridViewRow In frmFatura.DataGridFatura.Rows
Valor = Valor + coluna.Cells(3).Value
Next
Desde ja agradeco qualquer ajuda
você pode fazer um laço foreach do datagrid de destino e verificar se id do item já existe lá
obs: só estou te informando a ideia a seguir. O código ai pode não funcionar visto que estou mais familiarizado com a sintaxe C#
Citação:
For Each coluna As DataGridViewRow In frmFatura.DataGridFatura.Rows
if coluna.Cells(0).Value=Linha.Cells(0).Value then
exit sub
end if
Next
obs: só estou te informando a ideia a seguir. O código ai pode não funcionar visto que estou mais familiarizado com a sintaxe C#
Littleboy, pegando na sua dica ficou assim, crieu um botao que addiciona ao seleccionar o item no primeiro Datagridview (DataGridItens), ai vai o codigo para quem possa interessar, obrigado a todos:
Private Sub btnAdicionarItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdicionarItem.Click
Dim Linha As DataGridViewRow = Me.DataGridItens.CurrentRow
Dim Duplicacao As Boolean = True
For i As Integer = 0 To frmFatura.DataGridFatura.Rows.Count - 1
For Each row As DataGridViewRow In frmFatura.DataGridFatura.Rows
If frmFatura.DataGridFatura.Rows(i).Cells(0).Value = Linha.Cells(0).Value Then
Duplicacao = False
Exit For
End If
Next
Next
If Duplicacao Then
frmFatura.DR = frmFatura.DT.NewRow
frmFatura.DR(frmFatura.DcIDItem) = Linha.Cells(0).Value
frmFatura.DR(frmFatura.DcNome_Item) = Linha.Cells(1).Value
frmFatura.DR(frmFatura.DcIDFornecedor) = Linha.Cells(2).Value
frmFatura.DR(frmFatura.DcNome_Fornecedor) = Linha.Cells(3).Value
frmFatura.DT.Rows.Add(frmFatura.DR)
frmFatura.DataGridFatura.DataSource = frmFatura.DT
Me.Close()
Else
MsgBox([Ô]O Item já foi adicionado à fatura[Ô], MsgBoxStyle.Information)
Me.Close()
End If
Dim Valor As Decimal
For Each coluna As DataGridViewRow In frmFatura.DataGridFatura.Rows
Valor = Valor + coluna.Cells(3).Value
Next
frmFatura.LabelTotal.Text = Format(Valor, [Ô]MZM #,##0.00[Ô])
frmFatura.LabelIVA.Text = Format(Valor * 0.17, [Ô]MZM #,##0.00[Ô])
End Sub
Private Sub btnAdicionarItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdicionarItem.Click
Dim Linha As DataGridViewRow = Me.DataGridItens.CurrentRow
Dim Duplicacao As Boolean = True
For i As Integer = 0 To frmFatura.DataGridFatura.Rows.Count - 1
For Each row As DataGridViewRow In frmFatura.DataGridFatura.Rows
If frmFatura.DataGridFatura.Rows(i).Cells(0).Value = Linha.Cells(0).Value Then
Duplicacao = False
Exit For
End If
Next
Next
If Duplicacao Then
frmFatura.DR = frmFatura.DT.NewRow
frmFatura.DR(frmFatura.DcIDItem) = Linha.Cells(0).Value
frmFatura.DR(frmFatura.DcNome_Item) = Linha.Cells(1).Value
frmFatura.DR(frmFatura.DcIDFornecedor) = Linha.Cells(2).Value
frmFatura.DR(frmFatura.DcNome_Fornecedor) = Linha.Cells(3).Value
frmFatura.DT.Rows.Add(frmFatura.DR)
frmFatura.DataGridFatura.DataSource = frmFatura.DT
Me.Close()
Else
MsgBox([Ô]O Item já foi adicionado à fatura[Ô], MsgBoxStyle.Information)
Me.Close()
End If
Dim Valor As Decimal
For Each coluna As DataGridViewRow In frmFatura.DataGridFatura.Rows
Valor = Valor + coluna.Cells(3).Value
Next
frmFatura.LabelTotal.Text = Format(Valor, [Ô]MZM #,##0.00[Ô])
frmFatura.LabelIVA.Text = Format(Valor * 0.17, [Ô]MZM #,##0.00[Ô])
End Sub
Tópico encerrado , respostas não são mais permitidas