Delphi com POO, dúvidas em select no SQL do Query

08/12/2015

9

Prezados, estou buscando aprender Delphi com POO, mas estou com um problema que até o momento não encontrei solução,
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;
Responder

Post mais votado

09/12/2015

Substitui

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.
Responder

Mais Posts

Não funcionou em ambos os modos, estranho. Será que é meu ztable? Meu inserir, editar e excluir estão funcionando de boa.
Responder
Baltazar, funcionou aqui, muito obrigado.
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+'%');
Responder
consegui assim:

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+'%');
Responder
De boa consegui tudo com sua ajuda.
Grato, Raphael.
Responder