Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

maquinavirtual

[Resolvido] pesquisa ibquery

Recommended Posts

Preciso fazer uma consulta de nomes porem quando digito no edit e mando procurar clicando no botao a ibquery nao seleciona nenhum registro.

Uso delphi 7 e componentes da paleta Interbase, uso banco de dados Firebird.

 

Na propriedade sql da ibquery tenho o codigo:

 

Código: 
Select *
From TABCADASTRO
Where NOMECOMPLETO = :PRMnomecompleto

PRMnomecompleto e o parametro que estou passando.

No botao coloquei este codigo:

 

Código: 
procedure TFormPesquisaCadastro.BTNpesquisacadastroClick(Sender: TObject);
var pesquisa: string;
BEGIN
  begin
    if editPesquisaCadastro.Text = '' then
     begin
       messagebeep(16);
       //messagedlg ('Digite no campo!'#13'O campo deve ser preenchido.',mtInformation,[mbOk],0);
       messagebox(FormPesquisaCadastro.Handle,'Digite no campo!'#13'O campo deve ser preenchido.','AgenTel - Pesquisar Cadastro',mb_Ok+MB_ICONQUESTION);
       editPesquisaCadastro.SetFocus;
     end
    else
     if RadioGroupPesquisaCadastro.ItemIndex = 0 then
      begin
        //pesquisa:= 'SELECT * FROM tabcadastro WHERE nomecompleto like "'+ editPesquisaCadastro.Text+'%"';
        DTM.IBQRYpesqNomeCompleto.Close;
        //DTM.IBQRYpesqNomeCompleto.SQL.Clear;
        //DTM.IBQRYpesqNomeCompleto.SQL.Add(pesquisa);
        //DTM.IBQRYpesqNomeCompleto.SQL.Add('ORDER BY nomecompleto');
        DTM.IBQRYpesqNomeCompleto.ParamByName('PRMnomecompleto').AsString:=EditPesquisaCadastro.Text;
        DTM.IBQRYpesqNomeCompleto.Open;
        editPesquisaCadastro.Clear;
      end;
  end;
END;

 

Possuo dois registros na tabela, porem quando digito uma letra seja de A ate Z ou 0 ate 9 o dbgrid fica fazio, digamos que tenho na tabela os nomes:

JUCA

ALFREDO

 

se digito J no edit e mando pesquisar ele deveria apresentar no dbgrid todos os nomes com a letra J, no caso JUCA, a mesma coisa com a letra A deveria apresentar todos os nomes com a letra A, no caso ALFREDO.

Tenho este codigo mas ele esta em paradox, nao sei se tem alguma diferenca pois estou usando Firebird.

 

Código:
'SELECT * FROM tabcadastro WHERE nomecompleto like "'+ editPesquisaCadastro.Text+'%"';

Como faco esse codigo que postei acima funcionar aqui:

 

Código:   
DTM.IBQRYpesqNomeCompleto.ParamByName('PRMnomecompleto').AsString:=EditPesquisaCadastro.Text;

Aguardo ajuda obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

 

Pelo que entendi seu problema é no SQL.

 

Select *
From TABCADASTRO
Where NOMECOMPLETO = :PRMnomecompleto

Isso só vai te trazer resultados exatos. Se no banco eu tenho "JUCA" e procuro "J", não existe resultado J. Você deve usar o LIKE.

 

Código: 
Select *
From TABCADASTRO
Where NOMECOMPLETO like '%:PRMnomecompleto%'

Imagino que isso resolva o problema. Não mexo com FireBird, dê uma conferida se o like dele funciona dessa maneira mesmo.

 

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde,

 

Pelo que entendi seu problema é no SQL.

 

Select *
From TABCADASTRO
Where NOMECOMPLETO = :PRMnomecompleto

Isso só vai te trazer resultados exatos. Se no banco eu tenho "JUCA" e procuro "J", não existe resultado J. Você deve usar o LIKE.

 

Código: 
Select *
From TABCADASTRO
Where NOMECOMPLETO like '%:PRMnomecompleto%'

Imagino que isso resolva o problema. Não mexo com FireBird, dê uma conferida se o like dele funciona dessa maneira mesmo.

 

Até mais.

 

DONAH!!!!

MUITO OBRIGADO CONSEGUI FAZE FUNCIONA

COM A SUA AJUDA, VALEU MESMO!!!

 

No componente ib query, na propriedade SQL estava desta forma:

 

Select *
From TABCADASTRO
Where NOMECOMPLETO = :PRMnomecompleto

Mudei o codigo para:

(acrescentei o like)

 

Select *
From TABCADASTRO
Where NOMECOMPLETO [u]like[/u]  :PRMnomecompleto

O codigo do botao BTNpesquisar, ficou assim:

procedure TFormPesquisaCadastro.BTNpesquisacadastroClick(Sender: TObject);
BEGIN
  begin
    if editPesquisaCadastro.Text = '' then
     begin
       messagebeep(16);
       messagebox(FormPesquisaCadastro.Handle,'Digite no campo!'#13'O campo deve ser preenchido.','AgenTel - Pesquisar Cadastro',mb_Ok+MB_ICONQUESTION);
       editPesquisaCadastro.SetFocus;
     end
    else
     if RadioGroupPesquisaCadastro.ItemIndex = 0 then
      begin
        DTM.IBQRYpesqNomeCompleto.Close;
        DTM.IBQRYpesqNomeCompleto.ParamByName('PRMnomecompleto').AsString:=''+ EditPesquisaCadastro.Text +'%';
        DTM.IBQRYpesqNomeCompleto.Open;
        editPesquisaCadastro.Clear;
      end;
  end;
END;

Depois que corrigi o codigo os registros pesquisados apareceram no dbgridPesquisaCadastro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.