Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

Antonio2307

[Resolvido] contar campos em um DataGridViewgrid

Mensagens Recomendadas

Antonio2307    0
Antonio2307

Amigos,

Estou tentando fazer uma rotina para calcular a soma de campos selecionados em um DataGridView usando VB 2008

Seleciono varias células em uma coluna, quando a coluna tem valores numéricos o calculo sai correto, mas se eu selecionar uma célula com um texto (string) vai dar erro, como posso saber que o usuário selecionou campos string e não numéricos. vejam a rotina abaixo.

Private Sub SomaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SomaToolStripMenuItem.Click

Dim FSoma As Double = 0


Try
Clipboard.SetDataObject(DataGridView.GetClipboardContent())
VetorClipboard = Split(Clipboard.GetText, vbCrLf)

For i = 0 To DataGridView.GetCellCount(DataGridViewElementStates.Selected) - 1

If VetorClipboard(i) <> "" Then
FSoma = FSoma + VetorClipboard(i)

End If

Next
MsgBox(
"Somatria = " & Format(FSoma, "###,###,###,###.##"))

Catch ex As System.Runtime.InteropServices.ExternalException
MsgBox(
"Falha coletando dados Tente novamente. " & ex.Message, MsgBoxStyle.Information)

End Try


End Sub

Agradeço antecipado,

Antonio

Editado por apocsantos
tag code + geshi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vikcch    15
vikcch

Olá,

em vez de comparares:

If VetorClipboard(i) <> "" Then

podes usar o metodo tryParse para converteres para double.

ficaria qualquer coisa como isto:

Dim number As Double
If Double.TryParse(VetorClipboard(i), number) Then
  FSoma = FSoma + number
End If

se tiveres problemas com o separador decimal / valores decimais tem a ver com as definições regionais, podes especificar lá nos argumentos do metodo TryParse... vê o link

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Antonio2307    0
Antonio2307

Obrigado amigão

Aprendi mais uma.

Mas se o usuário selecionar campos de uma coluna que sejam alfanuméricos (string ) vai dar erro.

gostaria de saber , como reconhecer que o usuário selecionou campos string e não numéricos.

Agradeço antecipado

Antonio

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Antonio2307    0
Antonio2307

Consegui fazer graças a dica do colega.

ficou assim:

Private Sub SomaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SomaToolStripMenuItem.Click

Dim FSoma As Double = 0

Dim Number As Double

Try
Clipboard.SetDataObject(DataGridView.GetClipboardContent())
VetorClipboard = Split(Clipboard.GetText, vbCrLf)

For i = 0 To DataGridView.GetCellCount(DataGridViewElementStates.Selected) - 1

If Double.TryParse(VetorClipboard(i), Number) Then
FSoma = FSoma + Number

Else
MsgBox(
"No posso somar campos alfanumericos. Selecione uma coluna com valores.", Number)

Exit For

End If

Next

If FSoma <> 0 Then
MsgBox(
"Somatria = " & Format(FSoma, "###,###,###,###.##"))

End If

Catch ex As System.Runtime.InteropServices.ExternalException
MsgBox(
"Falha coletando dados Tente novamente. " & ex.Message, MsgBoxStyle.Information)

End Try

End Sub

Editado por apocsantos
tag code + geshi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.