USANDO LIKE EM CONSULTA POR PARAMETRO

DANLEONHART 27/11/2011 17:22:49
#390121
Pessoal...

Estou Tentando fazer uma busca com LIKE utilizando a forma de SQL com parâmetros...então, como não sei, me digam onde está o erro :

Private Sub Relatorio_Fabricante()
Dim Consulta As String = [Ô]SELECT * FROM Dados WHERE Fabricante LIKE %@Fab%[Ô]
Dim Rpt As New Relatorio1
Using Con As New OleDbConnection(Scon)
Con.Open()

Using Cmd As New OleDbCommand(Consulta, Con)
With Cmd.Parameters
.Add(New OleDbParameter([Ô]@Fab[Ô], txtCod.Text))
End With
Using Da As New OleDbDataAdapter
Using Ds As New DataSet
Da.SelectCommand = Cmd
Da.Fill(Ds, [Ô]Dados[Ô])
Rpt.SetDataSource(Ds)
CrV.ReportSource = Rpt
End Using
End Using
End Using
End Using
Rpt = Nothing
End Sub


Bem, fui pelo instinto...por isso coloquei dessa maneira no script da consulta
TECLA 27/11/2011 17:32:20
#390122
Experimente alterar a consulta e a linha do parametro conforme abaixo:

Dim Consulta As String = [Ô]SELECT * FROM Dados WHERE Fabricante LIKE @Fab[Ô]
...
.Add(New OleDbParameter([Ô]@Fab[Ô], [Ô]%[Ô] + txtCod.Text + [Ô]%[Ô]))


Não testei, pois não tenho VS no momento.
DANLEONHART 27/11/2011 17:33:04
#390123
Pessoal, agora funcionou...mas gostaria de saber se está correto... :

Private Sub Relatorio_Fabricante()
Dim Consulta As String = [Ô]SELECT * FROM Dados WHERE Fabricante LIKE @Fab[Ô]
Dim Filtro As String = [Ô]%[Ô] & txtCod.Text & [Ô]%[Ô]
Dim Rpt As New Relatorio1
Using Con As New OleDbConnection(Scon)
Con.Open()

Using Cmd As New OleDbCommand(Consulta, Con)
With Cmd.Parameters
.Add(New OleDbParameter([Ô]@Fab[Ô], Filtro))
End With
Using Da As New OleDbDataAdapter
Using Ds As New DataSet
Da.SelectCommand = Cmd
Da.Fill(Ds, [Ô]Dados[Ô])
Rpt.SetDataSource(Ds)
CrV.ReportSource = Rpt
End Using
End Using
End Using
End Using
Rpt = Nothing
End Sub


Como vêem, coloquei o filtro em uma variável...antecedendo e predecedendo com o curinga [Ô]%[Ô]...no meu caso, pois o BD é Access...
KERPLUNK 28/11/2011 10:34:15
#390160
Resposta escolhida
Sintaticamente está correto. Mas pelo que vejo, vc está simplesmente fazendo um relatório. Seria muito mais aconselhável o uso do DataReader e não do DataSet
DANLEONHART 28/11/2011 20:53:33
#390201
é sim...um relatório
Vou tentar passar para DataReader...já que é mais prático e rápido
DANLEONHART 29/11/2011 06:41:01
#390213
Cara, como passo este código do DataSet para o DataReader e alimento o Relatório ???
Tópico encerrado , respostas não são mais permitidas