SQL com JOIN no Delphi. Onde estou errando?

15/04/2020

0

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

Responder

Posts

15/04/2020

Rubens Pena

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+'%';
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar