Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) criar um procedimento localizar


Livio Neiva

Pergunta

estou trabalhando com dois tipos de banco de dados, Firebird MySQL

sempre q eu preciso listar todos os registros de uma tabela o DBGRid eu digito %,e clico em localiza, eu não quero dessa forma. Eu quero q o edit1.text fique vazio, e na hora q eu licar em localiza, todos os registros sejam listados. Isso com titulo selecionado.

enão fiz esses procedimento

procedure TF_Produtos.procura;

Begin

if editProcura.Text <> '' then

begin

if ncol = '' then

Application.MessageBox('Primeiro Selecione uma Coluna para Realizar a Consulta','Clique em um Título',MB_OK + MB_IconError)

else

Begin

F_Dados.Q_Produto.Active := False;

F_Dados.Q_Produto.SQL.Clear;

F_Dados.Q_Produto.SQL.Add('SELECT * FROM PRODUTO WHERE '+nCol+' LIKE ' + #39 + '%' + EditProcura.Text + '%' + #39);

F_Dados.Q_Produto.SQL.Add('order by '+nCol);

F_Dados.Q_Produto.Active := True;

end;

End;

end;

so q não ta dando certo

eu tenho q digitar editprocura.text o caracteres % para q liste todos os registros,

e eu não quero assim.

Eu quero dessa forma, Selecionar a coluna para q ela venha em ordem, e com edit vazio eu clique no botão localizar para listar todos os registros, e tb quero q ao diditar um caracteres ele liste todos os registro q tenha o caracteres digitado no edit.

valeu e obrigado a todos!!!

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Olá amigo, boa tarde.

Tente assim:

procedure TF_dados.procura;
  begin
    if (editProcura.Text <> '') then
      begin
        if (ncol = '') then
          Application.MessageBox('Primeiro Selecione uma Coluna para Realizar a Consulta','Clique em um Título',MB_OK + MB_IconError)
        else
          begin
            F_dados.Q_Produto.Close;
            F_Dados.Q_Produto.SQL.Clear;
            F_Dados.Q_Produto.SQL.Add('select * from produto where '+ QuotedStr(nCol) +' like '+ QuotedStr('%' + editProcura.Text + '%'));
            F_Dados.Q_Produto.SQL.Add('order by '+ nCol);
            F_Dados.Q_Produto.Open;
          end;
      end;
  end;

Outra coisa: o que seria este nCol?

Um Edit? DBEdit?

Abraço!

Link para o comentário
Compartilhar em outros sites

  • 0
procedure TF_Produtos.procura;
Begin
if editProcura.Text <> '' then
begin
if ncol = '' then
Application.MessageBox('Primeiro Selecione uma Coluna para Realizar a Consulta','Clique em um Título',MB_OK + MB_IconError)
else
Begin
F_Dados.Q_Produto.Active := False;
F_Dados.Q_Produto.SQL.Clear;
F_Dados.Q_Produto.SQL.Add('SELECT * FROM PRODUTO WHERE '+nCol+' LIKE ' + #39 + '%' + EditProcura.Text + '%' + #39);
F_Dados.Q_Produto.SQL.Add('order by '+nCol);
F_Dados.Q_Produto.Active := True;
end;
End;
end;
ZueRa, eu acredito que "nCol" seja o nome do campo onde vai ser feita a consulta. Livio Neiva, tenta colocar o comando para inicializar a consulta no local onde estão listados. se você estiver usando um combobox, em items você deve colocar o nome dos campos que contém na tabela a qual será feita a consulta exp : local, idade... ainda no combobox em eventos "OnChanger" de dois click e
procedure TF_Produtos.ComboBox1Change(Sender: TObject);
var
NomCol:String;
begin
editProcura.Text:= ''; //limpando o campo onde será feita a consulta.
NomCol:= Combobox1.text; //colocamos o valor selecionado na variavel.

if NomCol= '' then
Application.MessageBox('Primeiro Selecione uma Coluna para Realizar a Consulta','Clique em um Título',MB_OK + MB_IconError)
else
Begin

with F_Dados.Q_produto do
Begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM PRODUTO WHERE '+ NomCol + );
SQL.Add('order by '+ NomCol);
open;
end;
End;
end
e para o o editProcura.Text de dois click
procedure TF_Produtos.Edit1Change(Sender: TObject);
var
NomCol:String;
begin
editProcura.Text:= ''; //limpando o campo onde será feita a consulta.
if combobox1.text = '' then
Begin
Showmessage('Escolha o loca");
exit;
end;
NomCol:= Combobox1.text; //colocamos o valor selecionado na variavel.

with F_Dados.Q_produto do
Begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM PRODUTO WHERE '+ NomCol + ' like :A');
SQL.Add('order by '+ NomCol);
parameters[0].value:= '%' + editProcura.Text + '%';
open;
end;

end;

Ver ai se é o que você precisa, e posta o resultado.

Link para o comentário
Compartilhar em outros sites

  • 0
procedure TF_Produtos.procura;
Begin
if editProcura.Text <> '' then
begin
if ncol = '' then
Application.MessageBox('Primeiro Selecione uma Coluna para Realizar a Consulta','Clique em um Título',MB_OK + MB_IconError)
else
Begin
F_Dados.Q_Produto.Active := False;
F_Dados.Q_Produto.SQL.Clear;
F_Dados.Q_Produto.SQL.Add('SELECT * FROM PRODUTO WHERE '+nCol+' LIKE ' + #39 + '%' + EditProcura.Text + '%' + #39);
F_Dados.Q_Produto.SQL.Add('order by '+nCol);
F_Dados.Q_Produto.Active := True;
end;
End;
end;
ZueRa, eu acredito que "nCol" seja o nome do campo onde vai ser feita a consulta. Livio Neiva, tenta colocar o comando para inicializar a consulta no local onde estão listados. se você estiver usando um combobox, em items você deve colocar o nome dos campos que contém na tabela a qual será feita a consulta exp : local, idade... ainda no combobox em eventos "OnChanger" de dois click e
procedure TF_Produtos.ComboBox1Change(Sender: TObject);
var
NomCol:String;
begin
editProcura.Text:= ''; //limpando o campo onde será feita a consulta.
NomCol:= Combobox1.text; //colocamos o valor selecionado na variavel.

if NomCol= '' then
Application.MessageBox('Primeiro Selecione uma Coluna para Realizar a Consulta','Clique em um Título',MB_OK + MB_IconError)
else
Begin

with F_Dados.Q_produto do
Begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM PRODUTO WHERE '+ NomCol + );
SQL.Add('order by '+ NomCol);
open;
end;
End;
end
e para o o editProcura.Text de dois click
procedure TF_Produtos.Edit1Change(Sender: TObject);
var
NomCol:String;
begin
editProcura.Text:= ''; //limpando o campo onde será feita a consulta.
if combobox1.text = '' then
Begin
Showmessage('Escolha o loca");
exit;
end;
NomCol:= Combobox1.text; //colocamos o valor selecionado na variavel.

with F_Dados.Q_produto do
Begin
Close;
SQL.Clear;
SQL.Add('SELECT * FROM PRODUTO WHERE '+ NomCol + ' like :A');
SQL.Add('order by '+ NomCol);
parameters[0].value:= '%' + editProcura.Text + '%';
open;
end;

end;

Ver ai se é o que você precisa, e posta o resultado.

Eu vou mandar novamente o pôster, so que agora completo com todos os procedimentos para vocês tentarem me ajudar da forma que estar abaixo;

estou trabalhando com dois tipos de banco de dados, Firebird MySQL

sempre q eu preciso listar todos os registros de uma tabela o DBGRid eu digito %,e clico em localiza, eu não quero dessa forma. Eu quero q o edit1.text fique vazio, e na hora q eu licar em localiza, todos os registros sejam listados. Isso com titulo selecionado.

enão fiz esses procedimento

variável global

private

{ Private declarations }

public

{ Public declarations }

end;

var

F_Produtos: TF_Produtos;

idCol,Confira : Integer;

ncol : String;

implementation

uses U_Dados, U_Menu;

----------------------------------------

procedure TF_Produtos.DBGrid1TitleClick(Column: TColumn);

begin

idCol := Column.ID;

nCol := Column.FieldName;

procura;

end;

-----------------------------------------

procedure TF_Produtos.procura;

Begin

if editProcura.Text <> '' then

begin

if ncol = '' then

Application.MessageBox('Primeiro Selecione uma Coluna para Realizar a Consulta','Clique em um Título',MB_OK + MB_IconError)

else

Begin

F_Dados.Q_Produto.Active := False;

F_Dados.Q_Produto.SQL.Clear;

F_Dados.Q_Produto.SQL.Add('SELECT * FROM PRODUTO WHERE '+nCol+' LIKE ' + #39 + '%' + EditProcura.Text + '%' + #39);

F_Dados.Q_Produto.SQL.Add('order by '+nCol);

F_Dados.Q_Produto.Active := True;

end;

End;

end;

so q não ta dando certo

eu tenho q digitar editprocura.text o caracteres % para q liste todos os registros,

e eu não quero assim.

Eu quero dessa forma, Selecionar a coluna para q ela venha em ordem, e com edit vazio eu clique no botão localizar para listar todos os registros, e tb quero q ao diditar um caracteres ele liste todos os registro q tenha o caracteres digitado no edit.

E por favor gostaria da resposta baseado nos procedimentos que eu fiz acima

valeu e obrigado a todos!!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...