Fórum Erro consulta #410430
12/12/2011
0
Quando consulto minha tabela de Cidades por SAO, aparecem os resultados normalmente.Na consulta por P, PA, PAU, PAUL também filtra sem erro, agora quando consulto por: PAULO dá o erro.
Erro: Access violation at address 4DB2DCFD in module midas.dll. Read of address 76FC053C.
Fazendo outro teste rápido agora, ao consultar: RIO DE, também dá Access violation. Não sei se tem alguma coisa a ver com espaços.
Segue meu código.
Se alguém puder ajudar, agradeço.
procedure TfrmCadModelo.btnOkClick(Sender: TObject);
begin
if (cbxCampo.Text = EmptyStr) or (edtValorCampo.Text = EmptyStr) then
begin
DS.DataSet.Close;
exit;
end;
DS.DataSet.Filtered:= False;
case rbFiltros.ItemIndex of
0: DS.DataSet.Filter:= UpperCase(cbxCampo.Items[cbxCampo.ItemIndex]) +
LIKE + UpperCase(Trim(QuotedStr(edtValorCampo.Text + %)));
1: DS.DataSet.Filter:= UpperCase(cbxCampo.Items[cbxCampo.ItemIndex]) +
LIKE + UpperCase(Trim(QuotedStr(% + edtValorCampo.Text + %)));
end;
DS.DataSet.Close;
DS.DataSet.Filtered:= True;
DS.DataSet.Open;
stsMensagens.Panels[0].Text:= Total de Registros: + IntToStr(DS.DataSet.RecordCount);
end;
Adilson Rumao
Curtir tópico
+ 0Posts
13/12/2011
Adilson Rumao
Gostei + 0
14/12/2011
Flavia Santos
Quando consulto minha tabela de Cidades por SAO, aparecem os resultados normalmente.Na consulta por P, PA, PAU, PAUL também filtra sem erro, agora quando consulto por: PAULO dá o erro.
Erro: Access violation at address 4DB2DCFD in module midas.dll. Read of address 76FC053C.
Fazendo outro teste rápido agora, ao consultar: RIO DE, também dá Access violation. Não sei se tem alguma coisa a ver com espaços.
Segue meu código.
Se alguém puder ajudar, agradeço.
procedure TfrmCadModelo.btnOkClick(Sender: TObject);
begin
if (cbxCampo.Text = EmptyStr) or (edtValorCampo.Text = EmptyStr) then
begin
DS.DataSet.Close;
exit;
end;
DS.DataSet.Filtered:= False;
case rbFiltros.ItemIndex of
0: DS.DataSet.Filter:= UpperCase(cbxCampo.Items[cbxCampo.ItemIndex]) +
LIKE + UpperCase(Trim(QuotedStr(edtValorCampo.Text + %)));
1: DS.DataSet.Filter:= UpperCase(cbxCampo.Items[cbxCampo.ItemIndex]) +
LIKE + UpperCase(Trim(QuotedStr(% + edtValorCampo.Text + %)));
end;
DS.DataSet.Close;
DS.DataSet.Filtered:= True;
DS.DataSet.Open;
stsMensagens.Panels[0].Text:= Total de Registros: + IntToStr(DS.DataSet.RecordCount);
end;
Você fecha seu dataset, porém em momento nenhum você o limpa para começar uma nova busca.
Tente algo assim:
DS.DataSet.Close;
DS.DataSet.Clear();
Gostei + 0
15/12/2011
Adilson Rumao
Gostei + 0
20/12/2011
Adilson Rumao
Gostei + 0
20/12/2011
Wasley Portes
Particularmente evito muito trabalhar com Filter, normalmente tenho problemas quando uso.
Prefiso fazer uso de Query com a instrução e funciona muito bem.
CdsConsPadrao.Active := False;
QrConsPadrao.SQL.Clear;
case cbpesquisa.ItemIndex of
0 :
begin
QrConsPadrao.SQL.Add(SELECT * FROM +Tabela);
QrConsPadrao.SQL.Add(WHERE +Campo1+ like + quotedstr(edpesquisar.Text+%) + ORDER BY +Campo1);
end;
1 :
begin
QrConsPadrao.SQL.Add(SELECT * FROM +Tabela);
QrConsPadrao.SQL.Add(WHERE +Campo2+ like + quotedstr(edpesquisar.Text+%) + ORDER BY +Campo2);
end;
end;
QrConsPadrao.ExecSQL;
CdsConsPadrao.Open;
CdsConsPadrao.Active := True;
Gostei + 0
26/08/2014
Cid Maia
Gostei + 0
27/08/2014
Renato Rubinho
No exemplo do post antigo, o LIKE que ele passou está sem aspas então não tem como saber como ele utilizou exatamente, pois nem compilaria deste jeito.
Uma coisa que pode estar faltando são espaços antes e depois do LIKE para não concatenar o nome do campo e o valor a pesquisar com o LIKE
Posta seu código para podermos ver.
case rbFiltros.ItemIndex of
0: DS.DataSet.Filter:= UpperCase(cbxCampo.Items[cbxCampo.ItemIndex]) + ' LIKE ' + UpperCase(Trim(QuotedStr(edtValorCampo.Text + %)));
1: DS.DataSet.Filter:= UpperCase(cbxCampo.Items[cbxCampo.ItemIndex]) + ' LIKE ' + UpperCase(Trim(QuotedStr(% + edtValorCampo.Text + %)));
end;
Abraççç,
Renato
Gostei + 0
27/08/2014
Cid Maia
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)