INTRODUCAO DE VALORES MONETARIOS
Estou fazendo um softer que precisa fazer operações monetárias,
o problema é o seguinte, quando eu cadastro os dados,a conexão
com o banco é realizada normalmente e os dados são salvos no banco,
mas quando eu vou ver o valor que eu digitei assim: 37,89 é salvo
assim: 37,00. Não tem jeito, ele não salva os números após a virgula.
Uso o Visual Basic 6.
Microsoft access 2003, no access, meu campo chama-se valor, tipo de
dados: número, tamanho do campo: decimal, e formato: unidade monetária.
Meu módulo no banco está do seguinte jeito:
Option Explicit
Public cnn As ADODB.Connection
Public con As New ADODB.Connection
Public rsdados As ADODB.Recordset
Public sql As String
Public sql2 As String
Public Function abrebanco()
Set cnn = New ADODB.Connection
cnn.Open [Ô]Driver={Microsoft Access Driver (*.mdb)};DBQ=[Ô] & App.Path & [Ô]\banco.mdb[Ô]
End Function
Será que existe algum complemento ou referência que está faltando?
Por favor, me ajudem, preciso disso urgente.
Fico no aguardo, valeuuu!
Você pega o valor direto ou joga em uma variavel primeiro?
Então, eu jogo o valor num textbox. Então, uma variavel.
Dim cValor as currency
cValor = cCur(textobx.text)
E passa o cValor para o banco access.
Lembrando que o banco do access tem que ser do tipo Unidade Monetaria.
cValor = cCur(textobx.text)
E passa o cValor para o banco access.
Lembrando que o banco do access tem que ser do tipo Unidade Monetaria.
Agora o campo no access é:
Nome: valor
Tamanho do Campo: decimal
Formato: unidade monetária.
E meu código ficou assim:
Private Sub cmdsalvar_Click()
Dim cValor As Currency
cValor = CCur(txtvalor.Text)
abrebanco
Dim strsql As String
strsql = [Ô]insert into cadastronip (nip,setor,item,descricao,valor)[Ô] & [Ô]values ([ô][Ô] & masknip.Text & [Ô][ô], [ô][Ô] & cbosetor.Text & [Ô][ô] , [ô][Ô] & txtitem.Text & [Ô][ô] , [ô][Ô] & txtdescricao.Text & [Ô][ô] , [Ô] & cValor & [Ô] )[Ô]
cnn.Execute strsql
---
Quando eu coloco o valor: 78, ele salva normalmente, e no banco mostra 78,00.
Já quando eu coloco o valor 78,89 ele me mostra o erro na linha cnn.execute strsql, o erro é:
Run time error [ô]-2147217900 (80040e14)[ô]:
[Microsoft][Driver OBDC para Microsoft Access] Número de valores da consulta e campos de destino não coincidem.
--
Ou seja, o problema da virgula continuo rs.
Nome: valor
Tamanho do Campo: decimal
Formato: unidade monetária.
E meu código ficou assim:
Private Sub cmdsalvar_Click()
Dim cValor As Currency
cValor = CCur(txtvalor.Text)
abrebanco
Dim strsql As String
strsql = [Ô]insert into cadastronip (nip,setor,item,descricao,valor)[Ô] & [Ô]values ([ô][Ô] & masknip.Text & [Ô][ô], [ô][Ô] & cbosetor.Text & [Ô][ô] , [ô][Ô] & txtitem.Text & [Ô][ô] , [ô][Ô] & txtdescricao.Text & [Ô][ô] , [Ô] & cValor & [Ô] )[Ô]
cnn.Execute strsql
---
Quando eu coloco o valor: 78, ele salva normalmente, e no banco mostra 78,00.
Já quando eu coloco o valor 78,89 ele me mostra o erro na linha cnn.execute strsql, o erro é:
Run time error [ô]-2147217900 (80040e14)[ô]:
[Microsoft][Driver OBDC para Microsoft Access] Número de valores da consulta e campos de destino não coincidem.
--
Ou seja, o problema da virgula continuo rs.
substitua a vÃrgula por ponto.
strsql = [Ô]insert into cadastronip (nip,setor,item,descricao,valor)[Ô] & [Ô]values ([ô][Ô] & masknip.Text & [Ô][ô], [ô][Ô] & cbosetor.Text & [Ô][ô] , [ô][Ô] & txtitem.Text & [Ô][ô] , [ô][Ô] & txtdescricao.Text & [Ô][ô] , [Ô] & [txt-color=#e80000]Replace(cValor, [Ô],[Ô], [Ô].[Ô])[/txt-color] & [Ô] )[Ô]
Isso mesmo, só fazer o replace como o amigo LLAIA falou que da certo.
Continua não dando certo.
Se eu digito no Textobox 12,65 -> No banco: 12,00
Se eu digito no textobox 12.65 -> No banco: 1.265,00
Se eu digito no textobox 12 -> No banco: 12
Ou seja, nada mudou!
Se eu digito no Textobox 12,65 -> No banco: 12,00
Se eu digito no textobox 12.65 -> No banco: 1.265,00
Se eu digito no textobox 12 -> No banco: 12
Ou seja, nada mudou!
Cara , seu banco o campo valor está como a imagem em anexo?
AGORA SIMMM! haha
O meu erro, e o de MUITAS PESSOAS pelo tanto que li fórum hoje é:
estamos colocando no banco o TIPO DE DADO: NÚMERO, e no formato é que colocamos UNIDADE MONETÃRIA.
Agora coloquei o TIPO DE DADO como UNIDADE MONETÃRIO e deu certo...
Brigadão gente!
Tópico encerrado, now!
O meu erro, e o de MUITAS PESSOAS pelo tanto que li fórum hoje é:
estamos colocando no banco o TIPO DE DADO: NÚMERO, e no formato é que colocamos UNIDADE MONETÃRIA.
Agora coloquei o TIPO DE DADO como UNIDADE MONETÃRIO e deu certo...
Brigadão gente!
Tópico encerrado, now!
Tópico encerrado , respostas não são mais permitidas