BUSCA EM CAMPO NUMERICO DOUBLE

DANLEONHART 12/11/2011 22:40:37
#389059
Pessoal...

Estou quebrando a cabeça com um campo no Access 2007...
esse campo esta configurado como Tipo [Ô]Numérico Duplo[Ô]... é usado para armazenar valores com [Ô]quebrados[Ô] (1.680,25)...
quando faço uma busca com comparação, sempre dá erro: [Ô][txt-color=#0000f0]Erro de sintaxe (vírgula) na expressão de consulta....[/txt-color][Ô]...

o script é este:

Dim var_Num As Double
Dim Fil_Codigo As String = [Ô]SELECT * FROM Valores WHERE Valor=[Ô] & var_Num

Using Con As New OleDbConnection(Scon)
Con.Open()
Using Cmd As New OleDbCommand(Fil_Codigo, Con)
Using Dr As OleDbDataReader = Cmd.ExecuteReader
While Dr.Read
MsgBox(FormatNumber(Dr.Item([Ô]Metros[Ô]), 2))
End While
End Using
End Using
End Using
End Sub


Uso como valor de busca os metros da variavel [Ô]var_Num[Ô], que vai mostrar na caixa de mensagem os metros da linha encontrada...
ALTAIR148 12/11/2011 23:03:59
#389060
Amigo tenta assim.

Dim var_Num As Double
Dim Fil_Codigo As String = [Ô]SELECT * FROM Valores WHERE Valor=[ô][Ô] & var_Num & [Ô][ô][Ô]

Using Con As New OleDbConnection(Scon)
Con.Open()
Using Cmd As New OleDbCommand(Fil_Codigo, Con)
Using Dr As OleDbDataReader = Cmd.ExecuteReader
While Dr.Read
MsgBox(FormatNumber(Dr.Item([Ô]Metros[Ô]), 2))
End While
End Using
End Using
End Using
End Sub
DANLEONHART 12/11/2011 23:32:47
#389061
Já tentei também assim Altair...dessa maneira o retorna o erro: [Ô]Tipo de dados incompatível na expressão de critério.[Ô]...
RICART 13/11/2011 14:23:02
#389072
O que está acontecendo é que a sua consulta está recebendo um parâmetro, possivelmene de um textbox, onde está formatado com pontos nos milhares e vírgula nos decimais. Assim, vc precisa corrigir esse formato para o americano, retirando a vírgula e deixando somente o ponto para separar os decimais.

Tente assim. Se não der certo, faça a formatação de outra forma que vc conseguirá.

Dim Fil_Codigo As String = [Ô]SELECT * FROM Valores WHERE Valor=[Ô] & Cdbl( var_Num )

Na dúvida, crie um breakpoint e veja qual o valor está sendo passado para o critério, pois não poderá conter vírgula, e sim ponto.
DANLEONHART 13/11/2011 16:29:00
#389079
Acredite Ricart, verifiquei isso também...o que tá pegando é que o Access salva com virgula...e não com ponto ...então mesmo eu configurando, na hora de comparar com o valor do campo, o valor de entrada vai estar configurado (Ex: 1700.37), mas o valor do campo do Access está com virgula (1700,37)...e agora !
OMAR2011 13/11/2011 17:07:34
#389080
Resposta escolhida
Dim var_Num As Double
Dim Fil_Codigo As String = [Ô]SELECT * FROM Valores WHERE Valor Like [Ô] & CDbl(var_Num)

Using Con As New OleDbConnection(Scon)
Con.Open()
Using Cmd As New OleDbCommand(Fil_Codigo, Con)
Using Dr As OleDbDataReader = Cmd.ExecuteReader
While Dr.Read
MsgBox(FormatNumber(Dr.Item([Ô]Metros[Ô]), 2))
End While
End Using
End Using
End Using
End Sub

Fiz um teste deste jeito.
DaCons = New OleDbDataAdapter([Ô]Select codigo,Nome,valor From Pecas Where valor like [ô][Ô] & CDbl(txtValor.Text) & [Ô][ô] [Ô], Cn)

OMAR2011 13/11/2011 18:16:16
#389081
Não coloque as aspas corretas.

Dim var_Num As Double
Dim Fil_Codigo As String = [Ô]SELECT * FROM Valores WHERE Valor[txt-color=#e80000] Like [ô][Ô] & CDbl(var_Num) &[Ô][ô][Ô][/txt-color]
Using Con As New OleDbConnection(Scon)
Con.Open()
Using Cmd As New OleDbCommand(Fil_Codigo, Con)
Using Dr As OleDbDataReader = Cmd.ExecuteReader
While Dr.Read
MsgBox(FormatNumber(Dr.Item([Ô]Metros[Ô]), 2))
End While
End Using
End Using
End Using
End Sub
DANLEONHART 13/11/2011 20:14:58
#389084
OMAR2011: Pense...não pensei de funcionar mas foi de boa cara !
Obrigado pela ajuda amigo ! já estava me estressando...

VB.NET é muito diferente do VB-6...isso eu fazia de boa nele...mas não vou desistir !
Tópico encerrado , respostas não são mais permitidas