Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Mostrando resultados


Guest --Vagner --

Question

Guest --Vagner --

Ola pessoal, meu form tem um edit para colocar vamos dizer o ID, então quando clico no botao ele procura isso no DB e mostra o resultado da consulta pelo id da pessoa.

Obrigado.

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0
Ola pessoal, meu form tem um edit para colocar vamos dizer o ID, então quando clico no botao ele procura isso no DB e mostra o resultado da consulta pelo id da pessoa.
Vagner, supostamente você já tem o resto da tela pronta, certo?!

Voce não informou nada sobre sua aplicação (nome do banco, componentes de acesso que usa, componentes que mostrará os dados), então, apenas explicando o procedimento, você deverá filtrar na sua tabela a informação baseada no tal ID. Se for via query filtra na cláusula WHERE ou se for direto em um table, você pode usar a propriedade Filter, ou o método Locate, ou (se tiver indice pelo campo) FindKey, ...

Como alguém poderá lhe dar uma resposta clara e útil sem informação... :huh:

Link to comment
Share on other sites

  • 0
Guest Vagnerf

Olá Micheus, realmente fiz minha pergunta com um pouco de pressa...Desculpe.

Então, uso o componente Zeos Access (ZConnection, ZQuery) Data Access (DataSource) para me conectar ao banco, e digamos que o nome do banco seja cadastro e a tabela clientes com os seguintes campos:

id

nome

endereco

cidade

então tenho no meu form o edit para colocar o id da pessoa, e outros edits para mostrar o resultado quando clicado no botao.

creio que ficou mais claro :blush:

Link to comment
Share on other sites

  • 0

Vagner, vou tentar explicar melhor agora. ;)

Se você utilizar um componente TZQuery para fazer todas as consultas, isso implica que você deverá montar suas consulta em run-time, logo terá que implementar isto no código. Se opinar por utilizar um componente para cada consulta, então as consultas serão montadas em design-time (direto nas propriedades).

Para buscarmos uma determinada informação baseada em um parâmetro, faremos uso da propriedade SQL do ZQuery você coloca a instrução SQL para realizar a consulta:

SELECT nome, endereco, cidade
FROM clientes
WHERE id = :id
em desing-time, basta editar a propriedade SQL, mas em run-time, temos que fazer desta forma:
ZQuery1.SQL.Clear;
ZQuery1.SQL.Add('SELECT nome, endereco, cidade');
ZQuery1.SQL.Add('FROM clientes');
ZQuery1.SQL.Add('WHERE id = :id');
onde, ZQuery1 é o componente que utilizaríamos para as consultas dinâmicas. O uso do ":" resulta em declarar um parâmetro (nome que o segue) que deverá ser inicializado antes de que a consulta seja "aberta". O valor deste parâmetro é inicializado através do método ParamByName. Então, supondo que o TEdit em que você digita o ID chame-se Edit1, nós passamos o parâmetro assim:
ZQuery1.ParamByName('id').AsInteger := StrToInt(Edit1.Text);
dê preferência a inicialização do parâmetro através de um dos métodos que força o tipo dele, neste caso AsInteger (parâmetro é um integer). Se você não vai fazer uso de um botão para forçar a busca, então vamos utilizar o evento OnExit do componente TEdit. Ao sair do campo executamos a consulta e movemos os valores obtidos para os edits que mostrarão a informação ao usuário. Faremos isso utilizando o método FieldByName, de modo a ficar claro no código que campos estamos buscando. Mas, caso a instrução SQL seja adicionada em design-time, poderemos adicionar ao dataset (TZQuery) os campos (Fields) e, neste caso, acessar os campos diretamente. Como disse antes, isso depende de como você pretende implementar seu código. (são sempre muitas as opções) Uma vez que nesta tela seja mostrado apenas os dados consultados, podemos inicializar a consulta no componente ZQuery uma única vez (no OnCreate do form) e, depois, no evento OnExit do edit passaríamos apenas o parâmetro. Não sei que opção você utilizaria, então vou por tudo no OnExit. Juntando tudo:
procedure TForm1.Edit1Exit(Sender :TObject);
begin
  ZQuery1.SQL.Clear;
  ZQuery1.SQL.Add('SELECT nome, endereco, cidade');
  ZQuery1.SQL.Add('FROM clientes');
  ZQuery1.SQL.Add('WHERE id = :id');
  ZQuery1.ParamByName('id').AsInteger := StrToInt(Edit1.Text);
  ZQuery1.Open;
  if not ZQuery1.EOF then
  begin
    Edit2.Text := ZQuery1.FieldByName('nome').AsString;
    Edit3.Text := ZQuery1.FieldByName('endereco').AsString;
    Edit4.Text := ZQuery1.FieldByName('cidade').AsString;
  end else
  begin
    Edit2.Text := '';
    Edit3.Text := '';
    Edit4.Text := '';
    ShowMessage('Não foi encontrado cliente com este ID');
  end;
  ZQuery1.Close;
end;

Faltaria ainda a validação do texto digitado, de modo a garantir que seja realmente um texto numérico e não alfanumérico. Mas isso, acredito que você possa fazer. ;)

Por fim, se tratar-se de uma aplicação simples, talvez utilizar componentes data-aware seja uma opção, já que uma vez ligados ao datasource, irão fazer todo o trabalho "pesado" - basta abrir o dataset e pronto! (mais uma vez, depende da forma como você pretende implementar seu projeto)

Abraços

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...