Fórum Selecionar dados no banco de dados #404856

12/07/2011

0

Preciso selecionar os pedidos cadastrados, porem quero selecionar por codigo, em ordem alfabetica e com os pedidos que apresentem o campo ESTATUS = 0. Estou usando o seguinte codigo no evento onchange de uma edit:
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * from TABELAOC where CODIGO LIKE ''%'+edit1.Text+'%''and ESTATUS = 0''order by CODIGO');
  ADOQuery1.Open;
Porem ele da o seguinte erro:'Erro de sintaxe na sequencia de caracteres na expressao de consulta 'CODIGO LIKE'%4%'and ESTATUS = 0'order by CODIGO''
Daniel

Daniel

Responder

Posts

12/07/2011

Rodrigo Pereira

Me parece falta de espaços entre +'%''and
Responder

Gostei + 0

12/07/2011

Daniel

Me parece falta de espaços entre +'%''and
Dei espaço mais continua dando o mesmo erro
Responder

Gostei + 0

12/07/2011

Ernani Landim

Ai vai uma outra maneira de fazer a query

 ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * from TABELAOC ');
  ADOQuery1.SQL.Add('where CODIGO LIKE %:pCOD%');
  ADOQuery1.SQL.Add('and ESTATUS = 0');
  ADOQuery1.SQL.Add('order by CODIGO');
  ParamByName('pCOD').AsString:= edit1.text ;
  ADOQuery1.Open;
Responder

Gostei + 0

12/07/2011

Daniel

Ai vai uma outra maneira de fazer a query

 ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * from TABELAOC ');
  ADOQuery1.SQL.Add('where CODIGO LIKE %:pCOD%');
  ADOQuery1.SQL.Add('and ESTATUS = 0');
  ADOQuery1.SQL.Add('order by CODIGO');
  ParamByName('pCOD').AsString:= edit1.text ;
  ADOQuery1.Open;
Na linha ParamByName('pCOD').AsString:= edit1.text ;  ele mostra como undeclared identifier: ParamByName. 
Responder

Gostei + 0

12/07/2011

Emerson Nascimento

corrigindo as duas formas....

na 1a. :

  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * from TABELAOC where CODIGO LIKE ''%'+edit1.Text+'%''and ESTATUS = 0''order by CODIGO');
  ADOQuery1.Open;

foi colocada uma aspa a mais depois de ESTATUS = 0. o correto é:

  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * from TABELAOC where CODIGO LIKE ''%'+edit1.Text+'%'' and ESTATUS = 0 order by CODIGO');
  ADOQuery1.Open;



na 2a. :

  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * from TABELAOC ');
  ADOQuery1.SQL.Add('where CODIGO LIKE %:pCOD%');
  ADOQuery1.SQL.Add('and ESTATUS = 0');
  ADOQuery1.SQL.Add('order by CODIGO');
  ParamByName('pCOD').AsString:= edit1.text ;
  ADOQuery1.Open;

não coloque os curingas % na instrução. coloque somente no valor a ser pesquisado. assim:

  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * from TABELAOC ');
  ADOQuery1.SQL.Add('where CODIGO LIKE :pCOD');
  ADOQuery1.SQL.Add('and ESTATUS = 0');
  ADOQuery1.SQL.Add('order by CODIGO');
  ADOQuery1.ParamByName('pCOD').AsString := '%'+edit1.text+'%';
  ADOQuery1.Open;


Responder

Gostei + 0

13/07/2011

Ernani Landim

Valeu Emerson, grande abraço!
Responder

Gostei + 0

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

Aceitar