GRAVAR MOEDA NO MYSQL
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]
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
Gravar produto na tabela mysl | [/th]
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
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
E no caso de casa decimal por exemplo ter que colcoar o centavos?
format o campo.. Format(txtVlr_MeuSalario.text,[Ô]###,##0.00[Ô])
ou crie a formatação do campo aqui mesmo no site tem muitos exemplos..
blz vou procurar
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
moeda = [Ô]1547,52[Ô] no qual foi para gravar
ele aparelce
moeda =154752,00
como faço para formartar isso corretamente.
eu
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
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
Estou usando double.
estou fanzendo da seguiinte maneira
[th]
Elee grava ok mas nao grava a centavos
estou fanzendo da seguiinte maneira
Sql | [/th]
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
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
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
Nao fuinciona ainda to quebrando a cabeça alguem pode me ajudar
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
[ô]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
Tópico encerrado , respostas não são mais permitidas