FORMATAR MONEY NO SQL
Galera tenho o seguinte Código :
If TBClientes.State = 1 Then TBClientes.Close
StringSQL = "Select Codigo,Nome,Endereco,VCompra from Clientes"
Set TBClientes = New ADODB.Recordset
TBClientes.Open StringSQL, Cnn, adOpenDynamic
If TBClientes.RecordCount <> 0 Then
Set frmClientes.Grid.DataSource = TBClientes
frmClientes.Label1.Caption = "" & CStr(TBClientes.AbsolutePosition) & " de " & CStr(TBClientes.RecordCount)
frmClientes.Label1.Refresh
Else
frmClientes.Grid.Clear
End If
....com esse código eu preencho um FlexGrid via ADO atraves do DataSource do FlexGrid, mostrando apenas os campos definidos no Select acima... mas eu gostaria de formatar o campo VCompra, com o simbolo monetário(R$)...pois ele esta me mostrando só o q esta gravado no banco(tipo 15,3) eu querio mostra (Tipo R$15,30)...
será q alguem poderia me ajudar ..???
If TBClientes.State = 1 Then TBClientes.Close
StringSQL = "Select Codigo,Nome,Endereco,VCompra from Clientes"
Set TBClientes = New ADODB.Recordset
TBClientes.Open StringSQL, Cnn, adOpenDynamic
If TBClientes.RecordCount <> 0 Then
Set frmClientes.Grid.DataSource = TBClientes
frmClientes.Label1.Caption = "" & CStr(TBClientes.AbsolutePosition) & " de " & CStr(TBClientes.RecordCount)
frmClientes.Label1.Refresh
Else
frmClientes.Grid.Clear
End If
....com esse código eu preencho um FlexGrid via ADO atraves do DataSource do FlexGrid, mostrando apenas os campos definidos no Select acima... mas eu gostaria de formatar o campo VCompra, com o simbolo monetário(R$)...pois ele esta me mostrando só o q esta gravado no banco(tipo 15,3) eu querio mostra (Tipo R$15,30)...
será q alguem poderia me ajudar ..???
Assim dá certo, mas ao concatenar o 'R$ ' com o VCompra, o typo de dado na passará a ser uma String.
Se for só pra visualização, não tem problema pois não vai manipular dados, mas se tiver atualizações, pode dar erro.
Se for só pra visualização, não tem problema pois não vai manipular dados, mas se tiver atualizações, pode dar erro.
Citação:HugoSSouza.. esse forma q vc colocou nao funciona....
StringSQL = "Select Codigo,Nome,Endereco,'R$ ' & format(VCompra,'0.00') from Clientes"
da erro : "Run-timer Error"
"format" is not a recognized function name"
não certo dessa forma não..
Se vc tiver usando ACCESS, tente :
Citação:'R$ ' & Format(VCompra,'#,000.00')
Tenho 2 considerações:
1. No ACCESS funfa bem, não é garantido em outros BD's, vc vai precisar verificar qual a sintaxe correta do Format... e da concatenação de strings/campos pro seu banco.
2. Se continuar dando erro, adicione o as NomeDoCampo após a instrução format para dar um nome de campo válido para a Concatenação. Pois além de mudar o tipo de dado do campo (como postei antes), ao concatenar, o nome do campo tb vai ser alterado e pode gerar um nome inválido.
entao... nao estou usando o ACCESS... é o SQL Server... e mesmo assim continua dando o mesmo erro......
Não manjo de SQL Server... só trampo com MySQl.
Mas é como eu te disse, o problema deve tá na sintaxe do Format no SQL SERVER.
O ACCESS é um caso a parte, tem muita coisa que dá certo nele que não funfa direito em SGBD's de verdade.
Testei seu SQL no mysql e tb não deu certo... vou pesquisar aki e ver se encontro algo que dá certo... se der certo no mysql deve dar tb no server pois a sintaxe sql 2 é mto parecida.
Mas é como eu te disse, o problema deve tá na sintaxe do Format no SQL SERVER.
O ACCESS é um caso a parte, tem muita coisa que dá certo nele que não funfa direito em SGBD's de verdade.
Testei seu SQL no mysql e tb não deu certo... vou pesquisar aki e ver se encontro algo que dá certo... se der certo no mysql deve dar tb no server pois a sintaxe sql 2 é mto parecida.
Cara eu fiz assim...
For i = 0 To TBClientes.RecordCount
frmClientes.Grid.TextMatrix(i, 2) = Format(frmClientes.Grid.TextMatrix(i, 2), "0.00")
Next i
mas tipo..... com o passar do tempo...vai ficar lerdo pra montar isso....
For i = 0 To TBClientes.RecordCount
frmClientes.Grid.TextMatrix(i, 2) = Format(frmClientes.Grid.TextMatrix(i, 2), "0.00")
Next i
mas tipo..... com o passar do tempo...vai ficar lerdo pra montar isso....
No mysql, consegui fazer a concatenação usando a função concat() que concatena 2 strings...
Sintaxe da CONCAT do MySQL:
CONCAT(String1, String2)
primeiro fiz... CONCAT('R$ ', VCompra) as VCompra
O resultado foi : R$ ####,# e não R$ #.###,##
Daà apliquei o format:
Sintaxes do Format:
MySQL: Format(VCompra, Decimais) as VCompra
ACCESS: Format(VCompra, '#,000.00')) as VCompraX
No mysql, aceita renomear o resultado para ter o mesmo nome do Campo, já no access dá um erro de referência circular. Precisei mudar o nome do campo (VCompraX)
O resultado foi : R$ #.###,## -> Formatação OK
Então juntei as 2 assim :
CONCAT('R$ ', format(VCompra, 2))
Verifique na documentação do SQL Server se existe uma função para concatenação de strings e campos... A sintaxe pode variar um pouco mas o conceito é o mesmo.
Crei que deve ser mais parecida com a sintaxe do MySQL que se se basea em muitas caracterÃsticas do SQL Server.
Infelizmante não pude ajudar mais...
Sintaxe da CONCAT do MySQL:
CONCAT(String1, String2)
primeiro fiz... CONCAT('R$ ', VCompra) as VCompra
O resultado foi : R$ ####,# e não R$ #.###,##
Daà apliquei o format:
Sintaxes do Format:
MySQL: Format(VCompra, Decimais) as VCompra
ACCESS: Format(VCompra, '#,000.00')) as VCompraX
No mysql, aceita renomear o resultado para ter o mesmo nome do Campo, já no access dá um erro de referência circular. Precisei mudar o nome do campo (VCompraX)
O resultado foi : R$ #.###,## -> Formatação OK
Então juntei as 2 assim :
CONCAT('R$ ', format(VCompra, 2))
Verifique na documentação do SQL Server se existe uma função para concatenação de strings e campos... A sintaxe pode variar um pouco mas o conceito é o mesmo.
Crei que deve ser mais parecida com a sintaxe do MySQL que se se basea em muitas caracterÃsticas do SQL Server.
Infelizmante não pude ajudar mais...
use esta função que criamos aqui
Public Function PontoMoney(frmt As String) As String
Dim i As Integer
frmt = FormatNumber(frmt, 2)
frmt = Replace(frmt, ".", "")
For i = 1 To Len(frmt)
If Mid(frmt, i, 1) = "," Then
Mid(frmt, i, 1) = "."
End If
Next i
PontoMoney = frmt
End Function
Cara ... valeu a dica.. valeu mesmo....
achei a função no SQL Server q faz isso....
StringSQL = "Select Codigo,Nome,Cast(Cast('R$',VCompra as Money(8)) as Decimal(10,2)) as VCompra from Clientes"
é a função Cast q faz isso.... agora deu certo....
valeus irmão.... abraços....
achei a função no SQL Server q faz isso....
StringSQL = "Select Codigo,Nome,Cast(Cast('R$',VCompra as Money(8)) as Decimal(10,2)) as VCompra from Clientes"
é a função Cast q faz isso.... agora deu certo....
valeus irmão.... abraços....
blz
entao cara.. eu fiz uma parecido com essa sua ae...
mas é o seguinte...se a tabela ficar muito grande.. eu creio q vai ficar lerdo pra montar isso....
mas é o seguinte...se a tabela ficar muito grande.. eu creio q vai ficar lerdo pra montar isso....
Tópico encerrado , respostas não são mais permitidas