SQL com JOIN no Delphi. Onde estou errando?

SQL

Delphi

15/04/2020

Boa tarde.

Estou tendo um certo problema com meu código SQL dentro do Delphi. Estou fazendo o seguinte:

Estou enviando junto os prints das telas pra melhor entendimento do que estou querendo fazer.

tela 01
http://prntscr.com/rzygdl

tela 02
http://prntscr.com/rzygvq

tela 03
Quando eu digito no campo o exemplo: 5514 e clico em [Procurar] da essa mensagem de erro:
ibqConsultaPedAviam: Parameter 'Artigo' not found.
http://prntscr.com/rzyilf

tela 04
Se eu deixo o campo de busca limpo e clico em [Procurar] ele busca tudo, sendo que eu quero
que ele busque apenas o que eu digitar como no exemplo acima 5514:
http://prntscr.com/rzyjuo

Abaixo segue imagem da modelagem do meu banco de dados correspondente as duas Tabelas
>Pedido Aviamentos< e >Artigos<
Obs.: Na tabela >Artigos< o campo Artigos_Codigo (interger) Unik Key.
http://prntscr.com/rzyl3r

No delphi no butao [Procurar] digitei o seguinte codigo:

procedure TfrmConsultaPedidoAviamentos.Botao_procurarClick(Sender: TObject);
begin
  Botao_Retornar.Enabled := False;
  ibqAuxConsultaPedAviam.Close;
  ibqAuxConsultaPedAviam.SQL.Clear;
  ibqAuxConsultaPedAviam.SQL.Add('Select PEDIDO_AVIAMENTOS_CODIGO from Pedido_Aviamentos');
    case RG_OPCOES.ItemIndex of
      3:
      //
      begin //BUSCA POR ARTIGO
        ibqAuxConsultaPedAviam.SQL.Clear;
ibqAuxConsultaPedAviam.SQL.Add('Select PEDIDO_AVIAMENTOS_REFERENCIA as Referencia, PEDIDO_AVIAMENTOS_CODIGO as Artigo');//
        ibqAuxConsultaPedAviam.SQL.Add('FROM pedido_aviamentos ref');
        ibqAuxConsultaPedAviam.SQL.Add('join ARTIGOS art on ref.pedido_aviamentos_codigo = art.artigos_codigo');

          if EditBusca.Text <> '' then
            begin
              ibqAuxConsultaPedAviam.SQL.Add('and ref.pedido_aviamentos_codigo like :pArtigo');//'and ref.PEDIDO_AVIAMENTOS_CODIGO like :pCodigo'
              ibqAuxConsultaPedAviam.ParamByName('Artigo').Value:= EditBusca.Text+'%';
            end;
              ibqAuxConsultaPedAviam.Open;
      end;
end;


Onde estou errando?
Rubens Pena

Rubens Pena

Curtidas 0

Respostas

Rubens Pena

Rubens Pena

15/04/2020

Boa tarde.

Estou tendo um certo problema com meu código SQL dentro do Delphi. Estou fazendo o seguinte:

Estou enviando junto os prints das telas pra melhor entendimento do que estou querendo fazer.

tela 01
http://prntscr.com/rzygdl

tela 02
http://prntscr.com/rzygvq

tela 03
Quando eu digito no campo o exemplo: 5514 e clico em [Procurar] da essa mensagem de erro:
ibqConsultaPedAviam: Parameter 'Artigo' not found.
http://prntscr.com/rzyilf

tela 04
Se eu deixo o campo de busca limpo e clico em [Procurar] ele busca tudo, sendo que eu quero
que ele busque apenas o que eu digitar como no exemplo acima 5514:
http://prntscr.com/rzyjuo

Abaixo segue imagem da modelagem do meu banco de dados correspondente as duas Tabelas
>Pedido Aviamentos< e >Artigos<
Obs.: Na tabela >Artigos< o campo Artigos_Codigo (interger) Unik Key.
http://prntscr.com/rzyl3r

No delphi no butao [Procurar] digitei o seguinte codigo:

procedure TfrmConsultaPedidoAviamentos.Botao_procurarClick(Sender: TObject);
begin
  Botao_Retornar.Enabled := False;
  ibqAuxConsultaPedAviam.Close;
  ibqAuxConsultaPedAviam.SQL.Clear;
  ibqAuxConsultaPedAviam.SQL.Add('Select PEDIDO_AVIAMENTOS_CODIGO from Pedido_Aviamentos');
    case RG_OPCOES.ItemIndex of
      3:
      //
      begin //BUSCA POR ARTIGO
        ibqAuxConsultaPedAviam.SQL.Clear;
ibqAuxConsultaPedAviam.SQL.Add('Select PEDIDO_AVIAMENTOS_REFERENCIA as Referencia, PEDIDO_AVIAMENTOS_CODIGO as Artigo');//
        ibqAuxConsultaPedAviam.SQL.Add('FROM pedido_aviamentos ref');
        ibqAuxConsultaPedAviam.SQL.Add('join ARTIGOS art on ref.pedido_aviamentos_codigo = art.artigos_codigo');

          if EditBusca.Text <> '' then
            begin
              ibqAuxConsultaPedAviam.SQL.Add('and ref.pedido_aviamentos_codigo like :pArtigo');//'and ref.PEDIDO_AVIAMENTOS_CODIGO like :pCodigo'
              ibqAuxConsultaPedAviam.ParamByName('Artigo').Value:= EditBusca.Text+'%';
            end;
              ibqAuxConsultaPedAviam.Open;
      end;
end;


Onde estou errando?


Resolvido..

ibqAuxConsultaPedAviam.ParamByName('pArtigo').Value:= EditBusca.Text+'%';
GOSTEI 0
POSTAR