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

(Resolvido) Mostrando resultados


Guest --Vagner --

Pergunta

4 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros sites

  • 0

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 para o comentário
Compartilhar em outros 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 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,1k
    • Posts
      652k
×
×
  • Criar Novo...