BUSCA EM CAMPO NUMERICO DOUBLE
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:
Uso como valor de busca os metros da variavel [Ô]var_Num[Ô], que vai mostrar na caixa de mensagem os metros da linha encontrada...
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...
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
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
Já tentei também assim Altair...dessa maneira o retorna o erro: [Ô]Tipo de dados incompatÃvel na expressão de critério.[Ô]...
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.
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.
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 !
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)
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)
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
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
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 !
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