DB não retorna o que for digitado no Edit

02/03/2013

1

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;
Responder

Posts

02/03/2013

William

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".
Responder

02/03/2013

Tiago Santos

[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'
Responder

02/03/2013

William

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!
Responder

02/03/2013

Tiago Santos

[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
Responder
[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!
Responder

02/03/2013

Tiago Santos

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
-----------------------
Responder

02/03/2013

William

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

Responder

02/03/2013

Tiago Santos

é do int
Responder

02/03/2013

Tiago Santos

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
Responder

02/03/2013

William

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; 

Responder

02/03/2013

Tiago Santos

Resolvido
Responder

02/03/2013

Tiago Santos

wllfl muito obrigado
Responder

02/03/2013

Joel Rodrigues

Obrigado pelo retorno. Estou encerrando o tópico.
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira