Delphi com POO, dúvidas em select no SQL do Query
08/12/2015
0
Tenho um banco de dados em MySQL com uma tabela chamada clientes, pois bem tenho uma tela em que tenho um botão para procurar um cliente pelo nome e também as classes clientes e clientesDAO.
tenho vários dados, mas apenas o Id do cliente é número inteiro os outros dados são strings.
Bom os códigos seguem abaixo:
-----em clientesDAO:
procedure TClientesDAO.Pesquisar(Clientes: TClientes);
begin
DataModule1.ZQuery.SQL.Clear;
DataModule1.ZQuery.SQL.Add('select * from clientes where nome like '+':nome;');
DataModule1.ZQuery.Params.ParamValues['nome']:=clientes.Nome;
DataModule1.ZQuery.ExecSQL;
end;
----
no botão pesquisar do meu form
begin
DataModule1.ZTPessoas.Close;
clientes.Nome:=ENome.Text;
clientesDAO.Pesquisar(clientes);
//ShowMessage(clientes.Telefone); AQUI EU TESTO POR UMA SHOWMESSAGE SE ESTÁ LOCALIZANDO O CLIENTE MOSTRANDO SEU TELEFONE (MAS A CAIXA DE MENSAGEM APARECE EM BRANCO).
ECodigo.Text:=IntToStr(clientes.CodPessoa);
ETelefone.Text:=clientes.Telefone;
EOutroTelefone.Text:=clientes.OutroTelefone;
MEndereco.Text:=clientes.Endereco;
EEmail.Text:=clientes.Email;
ECpf.Text:=clientes.Cpf;
ERg.Text:=clientes.Rg;
CBSexo.Text:=clientes.Sexo;
CBEstadoCivil.Text:=clientes.EstadoCivil;
end;
Raphael Schettino
Post mais votado
09/12/2015
DataModule1.ZQuery.Params.ParamValues['nome']:=clientes.Nome;
Por
DataModule1.ZQuery.Params.ParamValues['nome']:= QuotedStr ( '%' + clientes.Nome + '%' );
Tira o ; do final da query, ele pode estar interferindo no parâmetro
Se não der certo, tira a cláusula where pra testar se o problema está na query.
Gabriel Baltazar
Mais Posts
09/12/2015
Raphael Schettino
10/12/2015
Raphael Schettino
Você poderia me ajudar em outro detalhe?
É o seguinte, tenho alguns edits em um form e como havia mencionado nas postagens anteriores estou realizando uma pesquisa como cliente.nome de minha classe cliente utilizando minha classe DAO, enfim resumindo, eu gostaria de fazer com que quando eu digitar um nome no meu Edit (ENome.text) e clicasse em meu botão os meus campos da classe recebessem seus respectivos conteúdos baseados na pesquisa, por exemplo cliente alessandro então clientes.telefone:= o telefone do Alessandro.
Eu não estou sabendo como fazer com que por exemplo o meu clientes.Telefone receba o campo telefone de meu registro encontrado.
DataModule1.ZQuery.SQL.Add('select * from clientes where nome like '+':nome;');
//na linha acima como eu poderia passar alguns parâmetros para receber conteúdo como
clientes.Telefone:= conteúdo da coluna telefone do cliente encontrado.
DataModule1.ZQuery.Params.ParamValues['nome']:=QuotedStr('%'+clientes.Nome+'%');
10/12/2015
Raphael Schettino
DataModule1.ZQuery.SQL.Add('select * from clientes where nome like '+':nome'+';');
DataModule1.ZQuery.ParamByName('nome').Value:=clientes.Nome;
DataModule1.ZQuery.Open;
clientes.Telefone:=DataModule1.ZQuery.FieldByName('telefone').AsString;
ShowMessage(clientes.Telefone);// testando para ver se pegou o valor de alguma coluna específica
Mas não consegui fazer com que aparecessem todos os nomes parecidos, por exemplo João Paulo e José João quando eu digito apenas João.
desta maneira não funcionou
DataModule1.ZQuery.Params.ParamValues['nome']:=QuotedStr('%'+clientes.Nome+'%');
26/12/2015
Raphael Schettino
Grato, Raphael.
Clique aqui para fazer login e interagir na Comunidade :)