Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

João Luis Pro

Consultas no Delphi 7 com Banco Firebird

Recommended Posts

Olá, estou iniciando na programação com Delphi. Estou tentando criar consultas no Delphi com Banco de Dados Firebird. Utilizo o componente Zeos para conexão do Delphi com o Firebird. Se alguém puder me ajudar agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá João,você pode criar uma consulta com SQL usando o "Zquery" e também utilizando a função locate do Ztable,porém com SQL ele retorna para você os dados e o locate retorna o dado em sí. Boa sorte!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela resposta, já consegui. Usei o Locate com LoPartialKey.


Mas não é bem o que eu queria, pois ele me traz apenas um registro e, eu queria que fossem todos. Se puder me ajudar agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porque não usa o ZQuery como sugerido pelo PrdoDelphi e monta sua consulta SQL de modo a trazer todos os registros desejados, usando um DBGrid por exemplo para visualizar os registros encontrados? Qualquer coisa poste o código e sua necessidade que vamos poder ajudar melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que eu preciso é que, ao digitar em um campo edit e clicar no botão buscar ele me traga os registros no dbGrid e nos DBEdit's. Na ZQuery, eu coloquei a seguinte consulta:

 

select * from CADASTRO_CLIENTES where NOME_CLI = p1;

 

e no fonte do Botão buscar eu coloquei o seguinte código:

 

ZQuery1.Close;

ZQuery1.ParamByName('p1').AsString :=EdBusca.Text;
ZQuery1.Open;
Mas está me retornando um erro quando mudo a propriedade active da ZQuery para true:
Dynamic SQL error SQL error code = -206 column unknown p1 unknown ISC error.
Column does not belong to referenced table THE SQL: select * from CADASTRO_CLIENTES where NOME_CLI = p1;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você monta uma query com parâmetros, os parâmetros são passados pro sql precedidos de dois pontos, assim:

 

 

select * from CADASTRO_CLIENTES where NOME_CLI = :p1

 

Note que, pelo sql que postou, você não está passando um parâmetro... estão apenas comparando o nome_cli ao p1.

 

 

select * from CADASTRO_CLIENTES where NOME_CLI = p1

 

Por isso, ao tentar executar o programa retorna o erro de coluna p1 desconhecida... o problema não parece ser na montagem do código no delphi, mas no seu sql mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está tentando exibir os dados em um dbgrid? Verificou se:

 

1. Executando a consulta da forma que montou diretamente no banco ela tem dados a retornar? Com o parâmetro informado?

2. Os componentes estão setados corretamente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como está seu código? Poste-o aqui para analisarmos e como está fazendo as conexões entre os componentes em questão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não estou usando um data module. Uso um ZConnection para fazer a ligação com o Banco Firebird. Tenho uma ztable fazendo conexão com o ZConnection. Tenho um data source conectado a ztable e Tenho a dbgrid e os dbedits conectados a data source. E tenho a zquery conectada ao datasource.

 

Na zquery eu tenho o seguinte codigo na propriedade SQL:

select * from CADASTRO_CLIENTES where NOME_CLI =:p1;

 

No botão de buscar tenho o seguinte código:

ZQuery1.Close;
ZQuery1.ParamByName('p1').Value:=EdBuscaNome.Text;
ZQuery1.Open;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado a todos que me ajudaram. Resolvi o problema. Usei outro dbgrid. Na ZQuery eu coloquei o código:

SELECT * FROM CADASTRO CLIENTES

 

e no botão de buscar coloquei o seguinte códio, após declarar a variável strsql:

 

ZQuery1.Close;
ZQuery1.SQL.Clear;
strSQL:= 'SELECT * FROM CADASTRO_CLIENTES';
strSQL:= strSQL + ' WHERE NOME_CLI LIKE ' + #39 + '%' + EdBuscaNom.Text + '%' + #39;
ZQuery1.SQL.Add(strSQL);
ZQuery1.Open;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.