Ir para conteúdo
Fórum Script Brasil
  • 0

não Quer Aparecer Centavos


Guest Talles Henrique

Pergunta

Guest Talles Henrique

Galera eu sou muito mais muito muito iniciante em visual basic mesmo eu estou tentando fazer o seguinte

eu tenho um flexgrid com 3 campos (Aluno,Curso,Valor).

Eu coloquei um SSpanel Para Exebir os resultados do Campo Valor, (O sspanel soma todos os campos do "Valor").

Esta ai o meu problema ele soma tudo certinho atualiza mais na hora não mostra os centavos.

Vou Colocar meu Codigo Para Ver se fica mais facil para me ajudarem

Option Explicit
Private numero_registros As Variant 'contador de registros
Const colindex_lista = 1    'coluna onde será mostrada a lista de itens

Private Sub Command1_Click()
With Data1.Recordset
    .AddNew
    !Aluno = txtaluno
    !Curso = txtcurso
    !Valor = txtvalor
    .Update
End With
Data1.Refresh
txtaluno = ""
txtcurso = ""
txtvalor = ""
End Sub

Private Sub Data1_Reposition() 'ao iniciar

  '-----------------------------atualiza o total no controle SSPanel---------
  If PnlTotal.Caption = "" Then
    Soma_Colunas grid, Data1, "valor", PnlTotal, "#,##0.00" 'chama rotina de soma
  End If
End Sub

Private Sub Data1_Validate(Action As Integer, Save As Integer)
   
   'dependendo da ação incrementa ou decrementa o contador de registros
   Select Case Action
       Case vbDataActionAddNew 'inclusão
          numero_registros = numero_registros + 1
       Case vbDataActionDelete 'exclusão
          numero_registros = numero_registros - 1
   End Select

End Sub

Private Sub Form_Load()
PnlTotal.Caption = ""
End Sub

Public Sub Soma_Colunas(dbg As DBGrid, dados As Data, nomecampo As String, _
pnl As SSPanel, num_formato As String)

Dim soma As Single
Dim rs As Recordset

'so para se previnir
On Error GoTo trata_erro

Set rs = dados.Recordset.Clone

'rotina para somar a coluna escolhida(valor)
Do Until rs.EOF
   soma = soma + Val(rs(nomecampo))
   rs.MoveNext
Loop
pnl = Format(soma, num_formato)
Exit Sub

trata_erro:
  MsgBox "Ocorreu um erro durante o processamento, verifique ! "

End Sub


Private Sub Grid_AfterUpdate() 'atualizar após modificar/inserir dados
    Soma_Colunas grid, Data1, "valor", PnlTotal, "#,##0.00"
End Sub

Desde já Obrigado.

:blink:

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
Guest Visitante

O problema pode estar em usar o Val() nesta linha:

soma = soma + Val(rs(nomecampo))

Experimente usar CSng() no lugar de Val() e veja se dá certo.

Abraços,

Graymalkin

Kara Eu Te Amoo Vllww Eu sendo noob em visual basic numka ia fazer isso nem sabia o que era isso para falar a verdade uuuhuuu Conseguii Te Amo Kara Ti Amo MuitooOOO

vllwwwwwwww :D :D :D :D

Link para o comentário
Compartilhar em outros sites

  • 0

O problema no caso é que Val() só considera o ponto (.) como separador decimal (a vírgula (,), neste sentido, é separador de milhar). Porém, nós, brasileiros, usamos a vírgula (,) como separador decimal (e o ponto (.) como separador de milhar). Você pode fazer o teste aí:

msgbox val("2.33")
Vai mostrar: 2,33
msgbox val("2,33")

Vai mostrar: 2

Já CSng (e CDbl) considera o separador decimal do sistema, que no nosso caso é a vírgula, convertendo corretamente o valor.

Certo? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...