LISTVIEW - FORMATA?ÃO MOEDA
Bom dia para todos.
A saúde me deixou afastado por muito tempo, mas volto com novo pedido de socorro!
Tenho um formulário que exibe meu Boletim de Caixa numa ListView (VB Net 2012).
Porém, os valores de “Debitos†e de “Creditos†são mostrados na ListView em números inteiros, embora estes campos estejam tipificados no banco de dados como “Unidade Monetária†(Access 2007).
Como faço para colocar as colunas da ListView (Debitos e Creditos) em formato “Moedaâ€, mostrando inclusive o valor dos centavos?
Eis o meu código:
Imports System.Data.OleDb
Public Class frmCaixa
Dim BDCon As New OleDbConnection
Dim ds As New DataSet
Dim dr As DataRow
Dim dt As New DataTable
Private Sub frmCaixa _Load(sender As Object, e As EventArgs) Handles MyBase.Load
BDCon.ConnectionString = [Ô]Provider=Microsoft.ACE.OLEDB.12.0;[Ô] _
& [Ô]Data Source=BDados.accdb;Jet OLEDB:System database=system.mdw;[Ô]
BDCon.Open()
End Sub
Private Sub ExibeValores()
Try
Dim Sql As String = [Ô]Select * from TabCaixa[Ô]
ds.Reset()
Dim adptr As New OleDbDataAdapter(Sql, BDCon)
adptr.Fill(ds)
dt = ds.Tables(0)
ListView1.Items.Clear()
Dim Item As ListViewItem
For Each dr In dt.Rows
Item = ListView1.Items.Add(dr.Item([Ô]Id[Ô]))
Item.SubItems.Add(dr.Item([Ô]Data[Ô]))
Item.SubItems.Add(dr.Item([Ô]Historico[Ô]))
‘
Item.SubItems.Add(dr.Item([Ô]Debitos[Ô]))
Item.SubItems.Add(dr.Item([Ô]Creditos[Ô]))
‘
Next
Catch ex As Exception
MsgBox([Ô]Erro: [Ô] & ex.Message)
End Try
End Sub
A saúde me deixou afastado por muito tempo, mas volto com novo pedido de socorro!
Tenho um formulário que exibe meu Boletim de Caixa numa ListView (VB Net 2012).
Porém, os valores de “Debitos†e de “Creditos†são mostrados na ListView em números inteiros, embora estes campos estejam tipificados no banco de dados como “Unidade Monetária†(Access 2007).
Como faço para colocar as colunas da ListView (Debitos e Creditos) em formato “Moedaâ€, mostrando inclusive o valor dos centavos?
Eis o meu código:
Imports System.Data.OleDb
Public Class frmCaixa
Dim BDCon As New OleDbConnection
Dim ds As New DataSet
Dim dr As DataRow
Dim dt As New DataTable
Private Sub frmCaixa _Load(sender As Object, e As EventArgs) Handles MyBase.Load
BDCon.ConnectionString = [Ô]Provider=Microsoft.ACE.OLEDB.12.0;[Ô] _
& [Ô]Data Source=BDados.accdb;Jet OLEDB:System database=system.mdw;[Ô]
BDCon.Open()
End Sub
Private Sub ExibeValores()
Try
Dim Sql As String = [Ô]Select * from TabCaixa[Ô]
ds.Reset()
Dim adptr As New OleDbDataAdapter(Sql, BDCon)
adptr.Fill(ds)
dt = ds.Tables(0)
ListView1.Items.Clear()
Dim Item As ListViewItem
For Each dr In dt.Rows
Item = ListView1.Items.Add(dr.Item([Ô]Id[Ô]))
Item.SubItems.Add(dr.Item([Ô]Data[Ô]))
Item.SubItems.Add(dr.Item([Ô]Historico[Ô]))
‘
Item.SubItems.Add(dr.Item([Ô]Debitos[Ô]))
Item.SubItems.Add(dr.Item([Ô]Creditos[Ô]))
‘
Next
Catch ex As Exception
MsgBox([Ô]Erro: [Ô] & ex.Message)
End Try
End Sub
Tente algo do tipo:
usando String.Format também dá.
Dim debito as Decimal = Convert.ToDecimal(dr.Item([Ô]Debitos[Ô]))
Item.SubItems.Add(debito.ToString([Ô]R$ 0.00[Ô]))
usando String.Format também dá.
DST2, se o campo da tabela está em formato de moeda não seria mais fácil usar o formatCurrency.
Item.SubItems.Add(FormatCurrency(dr.Item([Ô]Debitos[Ô])))
Item.SubItems.Add(FormatCurrency(dr.Item([Ô]Creditos[Ô])))
Item.SubItems.Add(FormatCurrency(dr.Item([Ô]Debitos[Ô])))
Item.SubItems.Add(FormatCurrency(dr.Item([Ô]Creditos[Ô])))
Opa Omar2011, belezinha cara?
Então, é uma boa pedida também. Mas eu não uso esse método por dois motivos:
O primeiro é por compatibilidade com o .NET Framework. Esse é um método nativo do Visual Basic, que não faz parte do framework. E eu acredito que em versões futuras, essas funções do VB começarão a dar Warning falando que é um método ultrapassado, pra você usar algo nativo do .NET Framework, assim como aquelas Mid, Instr, Len, GetAttr e tantas outras. Pode ser paranoia minha hahahaha Provavelmente é...
O segundo é por causa da flexibilidade. Nesse caso, nem tanto. Porque ele quer o padrão que está configurado no sistema mesmo. Mas até depois pra se ele quiser alguma modificação [Ô]Ahh, agora quero um número inteiro[Ô]. [Ô]ahh, agora quero um número só com uma casa decimal[Ô]... etc.. Vai ser fácil dele resolver isso.
Abração aà cara!
Então, é uma boa pedida também. Mas eu não uso esse método por dois motivos:
O primeiro é por compatibilidade com o .NET Framework. Esse é um método nativo do Visual Basic, que não faz parte do framework. E eu acredito que em versões futuras, essas funções do VB começarão a dar Warning falando que é um método ultrapassado, pra você usar algo nativo do .NET Framework, assim como aquelas Mid, Instr, Len, GetAttr e tantas outras. Pode ser paranoia minha hahahaha Provavelmente é...
O segundo é por causa da flexibilidade. Nesse caso, nem tanto. Porque ele quer o padrão que está configurado no sistema mesmo. Mas até depois pra se ele quiser alguma modificação [Ô]Ahh, agora quero um número inteiro[Ô]. [Ô]ahh, agora quero um número só com uma casa decimal[Ô]... etc.. Vai ser fácil dele resolver isso.
Abração aà cara!
Caro DS2T,
A sua orientação foi de extrema validade. A ListView está rodando perfeitamente.
Modifiquei apenas um detalhe no seu código por uma questão estética e não por questão técnica:
a) Item.SubItems.Add(debito.ToString([Ô]R$ 0.00[Ô])) – Exibe: R$ 10000,00
b) Item.SubItems.Add(debito.ToString([Ô]#,###.00[Ô])) – Exibe: 10.000,00
O problema dos “centavos†é de somenos importância...
Um forte abraço com meus agradecimentos.
A sua orientação foi de extrema validade. A ListView está rodando perfeitamente.
Modifiquei apenas um detalhe no seu código por uma questão estética e não por questão técnica:
a) Item.SubItems.Add(debito.ToString([Ô]R$ 0.00[Ô])) – Exibe: R$ 10000,00
b) Item.SubItems.Add(debito.ToString([Ô]#,###.00[Ô])) – Exibe: 10.000,00
O problema dos “centavos†é de somenos importância...
Um forte abraço com meus agradecimentos.
Caro DS2T,
A questão dos centavos foi mera falta de atenção da minha parte: embora no banco de dados eu tenha tipificado o campo “Debitos†como “Unidade Monetária†(Access 2007), no código de Inclusão eu estava dimensionando a variável como Integer quando devia dimensioná-la como Decimal.
Errado:
Dim debito As Integer
debito = CInt(Me.txtDébito.Text)
Resultado:
Me.txtDébito.Text = R$ 50,78
A ListView exibe R$ 51,00
Correto:
Dim debito As Decimal
debito = CDec(Me.txtDébito.Text)
Resultado:
Me.txtDébito.Text = R$ 50,78
A ListView exibe R$ 50,78
A questão dos centavos foi mera falta de atenção da minha parte: embora no banco de dados eu tenha tipificado o campo “Debitos†como “Unidade Monetária†(Access 2007), no código de Inclusão eu estava dimensionando a variável como Integer quando devia dimensioná-la como Decimal.
Errado:
Dim debito As Integer
debito = CInt(Me.txtDébito.Text)
Resultado:
Me.txtDébito.Text = R$ 50,78
A ListView exibe R$ 51,00
Correto:
Dim debito As Decimal
debito = CDec(Me.txtDébito.Text)
Resultado:
Me.txtDébito.Text = R$ 50,78
A ListView exibe R$ 50,78
Que bom que te ajudei cara!
Se puder, feche o tópico.
Abração!
Fica bem.
Se puder, feche o tópico.
Abração!
Fica bem.
Tópico encerrado , respostas não são mais permitidas