Filtro não funciona no sqlServer 2008
10/09/2014
0
segue o código:
begin
if ds.DataSet.FieldByName(CampoFiltro) is TWideStringField then
begin
ds.DataSet.Filter := CampoFiltro + ' like ' + QuotedStr( '*' + edtFiltro.Text + '*');
end
else
begin
ds.DataSet.Filter := CampoFiltro +'='+ edtFiltro.Text;
end;
ds.DataSet.Filtered := True;
end;
ele retorna o seguinte erro:
os argumentos sao incorretos, estão fora do intervalo aceitável ou estão em conflito
se eu pesquipo pelo codigo a pesquisa corre tudo bem, mas quando poe letras, numa pesquisa por nome por exemplo dá esse erro. O que estou errando?
Renato Sanches
Posts
10/09/2014
Alisson Santos
Pelo que pude entender está fazendo um like em um campo int e passando string para ele.
11/09/2014
Renato Sanches
11/09/2014
Marcos P
Se for o Sql Server, você poderia colocar um exemplo de uma query final, passada ao banco, quando o erro ocorre ?
12/09/2014
William
begin if ds.DataSet.FieldByName(CampoFiltro) is TWideStringField then begin ds.DataSet.Filter := CampoFiltro + ' like ' + QuotedStr( '%' + edtFiltro.Text + '%'); end else begin ds.DataSet.Filter := CampoFiltro +'='+ edtFiltro.Text; end; ds.DataSet.Filtered := True; end;
12/09/2014
Marcos P
Coloca aqui um exemplo de uma query final, passada ao banco, quando o erro ocorre ?
16/09/2014
Renato Sanches
procedure TfrmModelodados.btnPesquisarClick(Sender: TObject);
begin
if ds.DataSet.FieldByName(CampoFiltro) is TStringField then
begin
ds.DataSet.Filter := CampoFiltro+' like '+ QuotedStr('*'+edtFiltro.Text+'*');
end
else begin
ds.DataSet.Filter := CampoFiltro+'='+edtFiltro.Text;
end;
ds.DataSet.Filtered := True;
end;
antes estava usando TWideStringField mudei para TSTringField assim o Filtro funcionou como era esperado.
obrigado pelas dicas.
Clique aqui para fazer login e interagir na Comunidade :)