Erro consulta
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.
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
Curtidas 0
Respostas
Adilson Rumao
12/12/2011
UP- E aí galera, alguém já passou por algo pareceido?
GOSTEI 0
Flavia Santos
12/12/2011
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.
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
Adilson Rumao
12/12/2011
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.
GOSTEI 0
Adilson Rumao
12/12/2011
E aí galera alguma outra dica?
GOSTEI 0
Wasley Portes
12/12/2011
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;
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
Cid Maia
12/12/2011
Também estou enfrentando o mesmo problema do caro colega Rumao na época desse post. Se alguém tiver alguma luz agradeço.
GOSTEI 0
Renato Rubinho
12/12/2011
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.
Abraççç,
Renato
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
Cid Maia
12/12/2011
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!!!
GOSTEI 0