DB não retorna o que for digitado no Edit
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;
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
Curtidas 0
Respostas
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;
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
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'
[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
02/03/2013
Tente assim:
Adicionei "Parameters" antes do ParamByName!
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
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
[DCC Fatal Error] Transfere.dpr(6): F2063 Could not compile used unit 'UTransfere.pas'
ta quase resolvendo
GOSTEI 0
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
[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
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
-----------------------
---------------------------
Transfere
---------------------------
ADOQuery1: Parameter 'Edt_numero' not found.
---------------------------
OK
-----------------------
GOSTEI 0
William
02/03/2013
Esse campo "CODIGO" é de que tipo no banco de dados?
GOSTEI 0
Tiago Santos
02/03/2013
é do int
GOSTEI 0
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
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
02/03/2013
Resolvido
GOSTEI 0
Tiago Santos
02/03/2013
wllfl muito obrigado
GOSTEI 0
Joel Rodrigues
02/03/2013
Obrigado pelo retorno. Estou encerrando o tópico.
GOSTEI 0