Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fkarol

diferença entre valores sql

Recommended Posts

Boa tarde

Estou executando a seguinte query:

SELECT produtos_precos.codigo, produtos_precos.precovenda, produtos_estoque.quantidade FROM produtos_precos, produtos_estoque where produtos_precos.codigo = " & codigo_produto_loja & " and " & "produtos_estoque.codigo = " & codigo_produto_loja & " and produtos_precos.loja = 547

 

funciona não da nehum tipo de erro, mas fui verificar e percebi que alguns dados devolvidos por essa consulta esta diferente do sistema, o que eu quero dizer e que aqui na empresa temos 1 sistema e eu estou criando um outro programinha pra puxa uns preços e fazer umas modificações.

 

so que alguns preço fica diferente, a principio achei que o site estava fazendo algum arredondamento, mas verifiquei o banco de dados usando o IB Expert 2.0 e o valor esta igual a o do sistema so meu programinha que aparece esta diferença, em media e de 1 centavo, por exemplo no sistema e o IB Expert esta 1,99, no meu programinha 1,98.

 

alguem saberia me dizer porque poderia esta dando esse tipo de diferença?

o banco de dados e Firebird 1.5

 

desde ja agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual tipo da variavel que está usando ? como está mostrando para o usuário?

 

Pode ser sim arredondamento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia

na verdade eu não chego exibir em algum formulario ou nada parecido, gero uma string com varios UPDATE e gravo em um arquivo txt para depois esporta para um banco mysql e atualizar os preço

 

string de exemplo:

sqlUPDATE = "UPDATE `banco`.`Produtos` SET `preco_base` = '" & Replace(firebirdrs.fields(1).Value, ",", ".") & "',`preco_unitario` = '" & Replace(firebirdrs.fields(1).Value, ",", ".") & "',`quantidade_produto` = '" & firebirdrs.fields(2).Value & "' WHERE `Produtos`.`codigo_produto_loja` =" & firebirdrs.fields(0).Value & ";"

 

a unica função que uso e: Replace(), para substituir a virgula por ponto, pois no banco mysql o campo preco_base e preco_base e do tipo: float

e no banco firebirdrse: NUMERIC(15,2)

 

ah a uso vb6 para execultar a consulta e gerar o arquivo txt

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas e mais ou menos assim:

Set firebirdConexao = New ADODB.Connection
firebirdConexao.Open "DRIVER=Firebird/InterBase(r) driver; UID=" & frmconfiguracoes.txtusuario & ";PWD= " & frmconfiguracoes.txtsenha & "; DBNAME=" & frmconfiguracoes.txtServidor & frmconfiguracoes.txtBanco

sql = "SELECT produtos_precos.codigo, produtos_precos.precovenda, produtos_estoque.quantidade FROM produtos_precos, produtos_estoque where produtos_precos.codigo = " & codigo_produto_loja & " and " & "produtos_estoque.codigo = " & codigo_produto_loja & " and produtos_precos.loja = 17"
Set firebirdrs = New ADODB.Recordset
firebirdrs.Open sql, firebirdConexao, adOpenKeyset, adLockPessimistic

sqlUPDATE = "UPDATE `supermecadovis`.`Produtos` SET `preco_base` = '" & Replace(firebirdrs.fields(1).Value, ",", ".") & "',`preco_unitario` = '" & Replace(firebirdrs.fields(1).Value, ",", ".") & "',`quantidade_produto` = '" & firebirdrs.fields(2).Value & "' WHERE `Produtos`.`codigo_produto_loja` =" & firebirdrs.fields(0).Value & ";"

a seguir eu uso:

Set fs = New Scripting.FileSystemObject
Set texto = fs.OpenTextFile(frmPrincipal.txtcaminho.Text, ForWriting, True)
texto.Write sqlUPDATE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fkarol,

 

Depois faça o seguinte, em vez de trazer o valor sendo numérico, traga como texto(converta no select). Assim podemos saber onde está acontecendo a diferença.

 

Poste o resultado como o Cláudio pediu também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola bom dia

desculpa-me pela demora

segue a solicitação:

MSGBOX E IGUAL:

UPDATE 'banco'.'tabela' SET 'preco_base' = '1.38', 'preco_unitario' = '1.38','quantidade_produtos'= '23'

WHERE 'tabela'. 'codigo' = '124';

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.