DB não retorna o que for digitado no Edit

Delphi

02/03/2013

procedure TFrmtransfere.BntPesquisaClick(Sender: TObject);
begin
DMTransfere.ADOQuery1.SQL.Clear;
DMTransfere.ADOQuery1.SQL.Add(''select CODIGO,referencia,descricao,quantidade,unitario_real,total_liq from ITENS_PED_ORCAMENTO'');
DMTransfere.ADOQuery1.SQL.Add(''where CODIGO=:Edt_numero'');
DMTransfere.ADOQuery1.Open;
end;
Tiago Santos

Tiago Santos

Curtidas 0

Respostas

William

William

02/03/2013

procedure TFrmtransfere.BntPesquisaClick(Sender: TObject);
begin
DMTransfere.ADOQuery1.SQL.Clear;
DMTransfere.ADOQuery1.SQL.Add(''select CODIGO,referencia,descricao,quantidade,unitario_real,total_liq from ITENS_PED_ORCAMENTO'');
DMTransfere.ADOQuery1.SQL.Add(''where CODIGO=:Edt_numero'');
DMTransfere.ADOQuery1.Open;
end;


Colega aparentemente vc não está passando o valor do parâmetro para instrução SQL.

procedure TFrmtransfere.BntPesquisaClick(Sender: TObject);
begin
 DMTransfere.ADOQuery1.SQL.Clear;
 DMTransfere.ADOQuery1.SQL.Add(''select CODIGO,referencia,descricao,quantidade,unitario_real,total_liq from ITENS_PED_ORCAMENTO'');
 DMTransfere.ADOQuery1.SQL.Add(''where CODIGO=:Edt_numero'');
 DMTransfere.ADOQuery1.ParamByName('Edt_numero').AsInteger := StrToInt(Edt_numero.text);
 DMTransfere.ADOQuery1.Open;
end;


OBS.: Supondo que o seu parâmetro seja do tipo Integer e o nome do Edit seja "Edt_numero".
GOSTEI 0
Tiago Santos

Tiago Santos

02/03/2013

[DCC Error] UTransfere.pas(42): E2003 Undeclared identifier: 'ParamByName'
[DCC Error] UTransfere.pas(42): E2066 Missing operator or semicolon
[DCC Fatal Error] Transfere.dpr(6): F2063 Could not compile used unit 'UTransfere.pas'
GOSTEI 0
William

William

02/03/2013

Tente assim:

procedure TFrmtransfere.BntPesquisaClick(Sender: TObject);
begin
DMTransfere.ADOQuery1.SQL.Clear;
DMTransfere.ADOQuery1.SQL.Add('select CODIGO,referencia,descricao,quantidade,unitario_real,total_liq from ITENS_PED_ORCAMENTO');
DMTransfere.ADOQuery1.SQL.Add('where CODIGO = :Edt_numero');
DMTransfere.ADOQuery1.Parameters.ParamByName('Edt_numero').AsInteger := StrToInt(Edt_numero.text);
DMTransfere.ADOQuery1.Open;
end; 


Adicionei "Parameters" antes do ParamByName!
GOSTEI 0
Tiago Santos

Tiago Santos

02/03/2013

[DCC Error] UTransfere.pas(42): E2003 Undeclared identifier: 'AsInteger'
[DCC Fatal Error] Transfere.dpr(6): F2063 Could not compile used unit 'UTransfere.pas'

ta quase resolvendo
GOSTEI 0
Perivaldo Martins

Perivaldo Martins

02/03/2013

[DCC Error] UTransfere.pas(42): E2003 Undeclared identifier: 'AsInteger'
[DCC Fatal Error] Transfere.dpr(6): F2063 Could not compile used unit 'UTransfere.pas'

ta quase resolvendo



Tente modificar para ficar assim:

procedure TFrmtransfere.BntPesquisaClick(Sender: TObject);
begin
DMTransfere.ADOQuery1.SQL.Clear;
DMTransfere.ADOQuery1.SQL.Add('select CODIGO,referencia,descricao,quantidade,unitario_real,total_liq from ITENS_PED_ORCAMENTO');
DMTransfere.ADOQuery1.SQL.Add('where CODIGO = :Edt_numero');
DMTransfere.ADOQuery1.Parameters.ParamByName('Edt_numero').Value := StrToInt(Edt_numero.text);
DMTransfere.ADOQuery1.Open;
end;


ou

procedure TFrmtransfere.BntPesquisaClick(Sender: TObject);
begin
DMTransfere.ADOQuery1.SQL.Clear;
DMTransfere.ADOQuery1.SQL.Add('select CODIGO,referencia,descricao,quantidade,unitario_real,total_liq from ITENS_PED_ORCAMENTO');
DMTransfere.ADOQuery1.SQL.Add('where CODIGO = :Edt_numero');
DMTransfere.ADOQuery1.Parameters[0].Value := StrToInt(Edt_numero.text);
DMTransfere.ADOQuery1.Open;
end;


Boa sorte e bons códigos!
GOSTEI 0
Tiago Santos

Tiago Santos

02/03/2013

compilou tanto com um como o outro exemplo que você deixou, mas na hora q vou colocar o codigo pra filtrar o where no sql

---------------------------
Transfere
---------------------------
ADOQuery1: Parameter 'Edt_numero' not found.
---------------------------
OK
-----------------------
GOSTEI 0
William

William

02/03/2013

Esse campo "CODIGO" é de que tipo no banco de dados?

GOSTEI 0
Tiago Santos

Tiago Santos

02/03/2013

é do int
GOSTEI 0
Tiago Santos

Tiago Santos

02/03/2013

Resolvido, o problema era o codigo que eu estava colocando pra testar,como nao encontrava o codigo nao me retornava nada no DB, o que posso fazer pra caso o codigo q eu coloque não seja encontrado, me retornar uma mensagem atravez de ShowMessage
GOSTEI 0
William

William

02/03/2013

A forma mais simples seria verificando se ADOQuery1 está vazio:

procedure TFrmtransfere.BntPesquisaClick(Sender: TObject);
begin
DMTransfere.ADOQuery1.SQL.Clear;
DMTransfere.ADOQuery1.SQL.Add('select CODIGO,referencia,descricao,quantidade,unitario_real,total_liq from ITENS_PED_ORCAMENTO');
DMTransfere.ADOQuery1.SQL.Add('where CODIGO = :Edt_numero');
DMTransfere.ADOQuery1.Parameters.ParamByName('Edt_numero').AsInteger := StrToInt(Edt_numero.text);
DMTransfere.ADOQuery1.Open;

if DMTransfere.ADOQuery1.IsEmpty then
begin
  ShowMessage('Nenhum registro encontrado!');
end; 

end; 

GOSTEI 0
Tiago Santos

Tiago Santos

02/03/2013

Resolvido
GOSTEI 0
Tiago Santos

Tiago Santos

02/03/2013

wllfl muito obrigado
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

02/03/2013

Obrigado pelo retorno. Estou encerrando o tópico.
GOSTEI 0
POSTAR