INTRODUCAO DE VALORES MONETARIOS

SAMUKAF13 14/07/2011 15:39:59
#379168

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!
PARREIRA 14/07/2011 15:47:41
#379170
Resposta escolhida
Você pega o valor direto ou joga em uma variavel primeiro?
SAMUKAF13 14/07/2011 16:01:29
#379172
Então, eu jogo o valor num textbox. Então, uma variavel.
PARREIRA 14/07/2011 16:07:51
#379174
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.
SAMUKAF13 14/07/2011 16:26:40
#379178
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.


LLAIA 14/07/2011 16:32:16
#379181
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] & [Ô] )[Ô]
PARREIRA 14/07/2011 16:34:02
#379182
Isso mesmo, só fazer o replace como o amigo LLAIA falou que da certo.
SAMUKAF13 14/07/2011 16:41:45
#379185
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!
PARREIRA 14/07/2011 16:50:58
#379186
Cara , seu banco o campo valor está como a imagem em anexo?
SAMUKAF13 14/07/2011 17:03:29
#379191
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!
Tópico encerrado , respostas não são mais permitidas