PESQUISA SQL COM MOEDA

FGSANTOS 08/04/2004 16:48:06
#19509
Caros,

Neste exato instante bateu um branco.
Pesquisa por data usa o #
Caracter usa aspas simples '
numero nada
e Moeda???
No BD gravo com o format "R$ 125,24"
como faz a SQL para ler campo moeda mesmo????

Abraço,

Flávio.
USUARIO.EXCLUIDOS 08/04/2004 16:52:14
#19511
Resposta escolhida
Moeda usa o mesmo que número, pois na verdade, ao gravar com o formato de "moeda", você está gravando é um duplo, que é tratado de forma diferente apenas na visualização (DataFormat).
Portanto, para selecionar algum valor monetário, utilize apenas o valor em questão, sem aspas, sustenidos ou outros.
Um detalhe muito importante: Moeda apresenta visualmente apenas dois dígitos, normalmente. Mas armazena, internamente, mais do que isso, pois trata-se de um duplo, como falei. Desta forma, se trabalha com cà¢mbio, onde divisões e multiplicações (conversões) são constantes, prefira sempre utilizar um intervalo de valores á utilizar um valor inteiro, redondo e sabido.
Valew?
USUARIO.EXCLUIDOS 08/04/2004 17:43:05
#19530
Vamos lá: Na base de dados, o formato que o campo está utilizando é o currency, certo? E na hora de montar a seleção de dados, a string, como fica?
Com um valor de 3.58 no TextBox Text1, por exemplo, a montagem do SQL seria algo como:
...
If IsNumeric(Format(Text1.Text, "#######0.##" )) = True Then
sSQL = "Select Produto from Estoque Where Preço = " & Format(Text1.Text, "#######0.##" ) & ";"
End If
....
E resultaria na String:
sSQL = "Select Produto from Estoque Where Preço = 3.58;"

O que pode estar ocorrendo é que o valor que você está levando ao SQL reflete o conteúdo de um textbox formatado de forma errada (O sistema de formatação dos números de sua máquina também acarreta isto, por exemplo, se utiliza a vírgula como separador decimal). Aí dá erro. Para este caso, você pode usar as funções Format e FormatNumber, além de se certificar, com o IsNumeric, de que o valor é, de fato, numérico, antes de realizar a montagem da string SQL.

Se preferir, poste o trecho de código onde monta a string, ok?
USUARIO.EXCLUIDOS 08/04/2004 19:01:27
#19537
O formato da variável? Não, o formato que deve ser Currency é o do campo. A variável pode ser double, mesmo.
Mas vamos lá, again. Se está aparecendo 10,00, é porque a formatação da sua máquina está colocando virgulas no decimal, o que não ocorre internamente na base de dados. Assim, dá type mismatch. Para sanar, faça:

private sub cmdpesquisa_click()
if txtentrada.text = "" or isnumeric(txtentrada.text) = false then exit sub
strpesquisa = replace(format(txtentrada.text, "currency") ,",",".")
adodados.recordsource = "Select * from Dados where Total = " & strPesquisa & ""
(...)
endsub

O que ele faz: Substitui a virgula por ponto, que é o separador decimal interno.
Isso deve (finalmente, hehe) aliviar a sua dor de cabeça. E desculpe não ter pensado logo no formato do textbox, ok?
Tópico encerrado , respostas não são mais permitidas