GARANTIR DESCONTO

Fórum Erro consulta #410430

12/12/2011

0

Bom dia a todos, estou com um problema em uma consulta que estou fazendo. Na verdade, a consulta até funciona em alguns casos é que dá erro.Ex:
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

Adilson Rumao

Responder

Posts

13/12/2011

Adilson Rumao

UP- E aí galera, alguém já passou por algo pareceido?
Responder

Gostei + 0

14/12/2011

Flavia Santos

Bom dia a todos, estou com um problema em uma consulta que estou fazendo. Na verdade, a consulta até funciona em alguns casos é que dá erro.Ex:
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();

Responder

Gostei + 0

15/12/2011

Adilson Rumao

Olá Flávia, então logo que entro na tela de consulta e digito PAULO já dá o erro, mas como disse antes ao digitar P, PA, PAU, PAUL filtra normalmente.
Responder

Gostei + 0

20/12/2011

Adilson Rumao

E aí galera alguma outra dica?
Responder

Gostei + 0

20/12/2011

Wasley Portes

Rumao, bom dia.
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;
Responder

Gostei + 0

26/08/2014

Cid Maia

Também estou enfrentando o mesmo problema do caro colega Rumao na época desse post. Se alguém tiver alguma luz agradeço.
Responder

Gostei + 0

27/08/2014

Renato Rubinho

Buenos,

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
Responder

Gostei + 0

27/08/2014

Cid Maia

Obrigado pela dica do LIKE rrubinho mas eu só consegui solucionar meu problema,quando abri meu projeto no update 4 do Delphixe2 o erro não ocorreu mais. Acredito que possa ter esse problema em releases anteriores. vlew!!!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar