GRAVAR MOEDA NO MYSQL

CJMCARDOSO 09/08/2010 01:34:06
#349757
Ola galera to fazendo um sistema em vb de estoque estou usando mysql como banco tava indo bem até tentar inserir valor moeda bom andei presquisando e sei que é um pouco difirente mas nao to conseguindo resolver. A tabela se chama produtos o campo que esta dando erro é valorprod esta com decimal 2. Aqui vai minha query



[th][/th]
Gravar produto na tabela mysl

Dim sql As String, sConteudo As String, sCampo As String, sMoeda As Single
sCampo = [Ô]codigoprod,tituloprod,valorprod[Ô]
sConteludo = [Ô][Ô]
sMoeda = Format(txtValor.Text, [Ô]000,000.00[Ô])
Tabela =[Ô]produtos[Ô]
sConteudo = [Ô][ô][Ô] & Replace(txtCodigo.Text, [Ô]'[Ô], [Ô][ô][Ô]) & [Ô][ô],[ô][Ô] & Replace(txtDescricao.Text, [Ô]'[Ô], [Ô][ô][Ô]) & [Ô][ô],[Ô]
sConteudo = sConteudo & [Ô][ô][Ô] & sMoeda & [Ô][ô][Ô]
sql = [Ô]INSERT INTO [Ô] & Tabela & [Ô] ([Ô] & Campos & [Ô]) VALUES ([Ô] & conteudo & [Ô])[Ô]
dbCon.Execute (sql)


O erro que da é

[txt-color=#e80000][Ô]Data truncated fro column [ô]valorprod[ô] at row 1 ao gravar na tabela produtos[Ô][/txt-color]

Alguem pode me ajudar
MOREIRA 09/08/2010 02:53:09
#349758


caro CJMCARDOSO...
eu uso assim..

Sql = [Ô]Insert Into Tbl_Contratos (Vlr_solicitaso, vlr_Liberado)[Ô]
Sql = Sql & [Ô]Values ([Ô]
Sql = Sql & [Ô][ô][Ô] & Replace(CDbl(TxtVlr_Solicitado.Text), [Ô],[Ô], [Ô].[Ô]) & [Ô][ô],[Ô]
Sql = Sql & [Ô][ô][Ô] & Replace(CDbl(TxtVlr_Liberado.Text), [Ô],[Ô], [Ô].[Ô]) & [Ô][ô])[Ô]
Conexao.Execute Sql

veja se te ajuda
CJMCARDOSO 09/08/2010 13:47:19
#349794
E no caso de casa decimal por exemplo ter que colcoar o centavos?
MOREIRA 09/08/2010 14:03:53
#349799

format o campo.. Format(txtVlr_MeuSalario.text,[Ô]###,##0.00[Ô])

ou crie a formatação do campo aqui mesmo no site tem muitos exemplos..
CJMCARDOSO 09/08/2010 20:28:55
#349851
blz vou procurar
CJMCARDOSO 09/08/2010 22:09:38
#349857
Bom galera é segiuinte nao to conseguindo resoltado pesquisei se eu usar o replace e tira o pontok pelo virgula ele grava blz no banco esotu usando campo double mas o problema é que nao gravar o campo decimal grava inteiro e naora de exibir por exemplo.

moeda = [Ô]1547,52[Ô] no qual foi para gravar

ele aparelce

moeda =154752,00
como faço para formartar isso corretamente.
eu
MOREIRA 09/08/2010 22:42:27
#349858
parceiro, qual o tipo de campo que vc esta usando.....

coloque esse no lostfofocus do campo

Private Sub TxtVlr_Parcela_LostFocus()
If (TxtVlr_Parcela.Text = Empty) Then TxtVlr_Parcela.Text = 0
TxtVlr_Parcela.Text = Format(TxtVlr_Parcela.Text, [Ô]###,##0.00[Ô])
End Sub

e assim pra gravar

Sql = [Ô]Insert Into Tbl_Contratos (Vlr_solicitaso, vlr_Liberado)[Ô]
Sql = Sql & [Ô]Values ([Ô]
Sql = Sql & [Ô][ô][Ô] & Replace(CDbl(TxtVlr_Solicitado.Text), [Ô],[Ô], [Ô].[Ô]) & [Ô][ô],[Ô]
Sql = Sql & [Ô][ô][Ô] & Replace(CDbl(TxtVlr_Liberado.Text), [Ô],[Ô], [Ô].[Ô]) & [Ô][ô])[Ô]
Conexao.Execute Sql

não tem segredo,, assim tem que funcionador o tipo de campo que uso é FLOAD

CJMCARDOSO 10/08/2010 19:56:48
#349924
Estou usando double.


estou fanzendo da seguiinte maneira


[th][/th]
Sql


Dim sql As String, sConteudo As String, sCampo As String, sMoeda As double
sCampo = [Ô]codigoprod,tituloprod,valorprod[Ô]
sConteludo = [Ô][Ô]
sMoeda = Format(txtValor.Text, [Ô]###,##0.00[Ô])
sConteudo = [Ô][ô][Ô] & Replace(txtCodigo.Text, [Ô]'[Ô], [Ô][ô][Ô]) & [Ô][ô],[ô][Ô] & Replace(txtDescricao.Text, [Ô]'[Ô], [Ô][ô][Ô]) & [Ô][ô],[Ô]
sConteudo = sConteudo & [Ô][ô][Ô] & sMoeda & [Ô][ô][Ô]
Sql = [Ô]Insert into produtos ([Ô] & sCampos & [Ô]) values ([Ô] & sConteudo & [Ô])[Ô]
dbcon.execute (Sql)



Elee grava ok mas nao grava a centavos
RFTD 11/08/2010 09:04:31
#349953
Resposta escolhida
quando você criou o campo no mysql você colocou as casa decimais ??
Exemplo:

'Preço' DOUBLE(12,2) NULL DEFAULT [ô]0.00[ô],

Note que eu coloquei o tamanho do campo como 12 e disse que 2 números dos doze são decimais.

se você fez como acima na hora de criar o campo na hora de salvar lembre de trocar a virgula dos centavos por ponto.
Se usar ponto para separar a casa do milhar substitui primeiro o ponto da casa do milhar por nada e depois a virgula pelo ponto
CJMCARDOSO 19/08/2010 14:26:21
#350702
Nao fuinciona ainda to quebrando a cabeça alguem pode me ajudar
ALVAROVB2009 19/08/2010 14:49:15
#350709
Public Function FormataValor(ByVal Valor As Double) As String
[ô]Formata o valor para gravar no banco
FormataValor = Replace(Replace(Valor, [Ô].[Ô], [Ô][Ô]), [Ô],[Ô], [Ô].[Ô])
End Function


Tenta utilizar isso, o mysql não grava a vírgula e sim o ponto, como forma para separar as centavos

Coloca isso em um módulo e quando vc for gravar o valor coloca assim:

seucampo = [ô] [Ô] & ccur(formatavalor(seucampo)) & [Ô] [ô] [Ô]

Assim ele entende que vc esta enviando um valor, se vc não colocar mas aspas simples ou o CCUR, ele vai dar erro.

Para voltar ai é só usar o bom e velho format

Espero ter te ajudado
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas