 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
Danielourenco Novato

Registrado: Quinta-Feira, 22 de Fevereiro de 2007 Mensagens: 6
|
Enviada: Qui Fev 22, 2007 9:39 pm Assunto: sql x delphi.... |
|
|
Moderadores Active-Delphi escreveu: |
Tópico editado por Sufolk.
Motivo: Regras do Fórum.
Titulo Original: sql x delphi....socorrooo
|
Olá pessoal, sou iniciante em Delphi e gostaria
de saber se é possível fazer um select específico com a clausula "count" utilizando parâmetros, conforme abaixo:
cds_visitas.Close;
sds_visitas.Close;
cds_visitas.CommandText:='select count(num_visita) from visitas where cod_cliente like:Pcodvisita';
cds_visitas.Params[0].AsInteger:=StrToInt(DBEdit13.Text);
cds_visitas.Open;
Quando eu faço isso pelo ibexpress (firebird) funciona direito, já pelo Delphi dá o erro abaixo:
" ... não é um valor inteiro válido..."
Agora, se eu mudo o select conforme abaixo funciona, mas ele não faz o que eu preciso que é fazer um count no campo num_visita da minha tabela:
cds_visitas.Close;
sds_visitas.Close;
cds_visitas.CommandText:='select * from visitas where cod_cliente like:Pcodvisita';
cds_visitas.Params[0].AsInteger:=StrToInt(DBEdit13.Text);
cds_visitas.Open;
Será que existe uma solução para utilizar as opções do select especificamente a um campo usando count, Max, min, etc ?
Pelo que percebi, no firebird só consigo fazer selects trazendo todos os registro na memória “ select * from...”?
Se eu fizer isso também dá errado: 'select num_visita from visitas where cod_cliente like:Pcodvisita';
Agradeço se puder me ajudar...
Att. Daniel Lourenço. |
|
Voltar ao Topo |
|
 |
adriano_servitec Colaborador

Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Qui Fev 22, 2007 10:50 pm Assunto: |
|
|
Olah, bom eu nao sei pq nao uso clientdataset, mais com o ibquery da pra fazer o que vc deseja sim
fiz um exemplo usando um select meu aki, adapte ao teu programa se desejar usar
veja
Primeiro estou usando um campo com a funçao count de um campo e mais outro campo junto para aparecer num dbgrid ai preciso usar o GROUP BY, o order by fiz para ordernar por ordem
Código: | procedure TFAgenda.Button3Click(Sender: TObject);
begin
dm.qagenda.close;
dm.qagenda.sql.clear;
dm.qagenda.sql.text := 'select count(tipo), horaini from agendamento where tipo = :params group by horaini order by 1';
dm.qagenda.ParamByName('params').AsInteger := strtoint(edit1.text);
dm.qagenda.Open;
end; |
Bom percebi que vc esta usando o LIKE acho que desnecessariamente pois me pareçe ser um campo tipo codigo, e tambem no teu select vc esta querendo somente contar quantos itens tem cfe. o codigo. Ai vc pode fazer somente assim:
Código: | procedure TFAgenda.Button3Click(Sender: TObject);
begin
dm.qagenda.close;
dm.qagenda.sql.clear;
dm.qagenda.sql.text := 'select count(tipo) from agendamento where tipo = :params';
dm.qagenda.ParamByName('params').AsInteger := strtoint(edit1.text);
dm.qagenda.Open;
end; |
Outra coisa amigo, acho melhor usar um edit, maskedit no lugar de algum componente da paleta DataControls.
Veja ai, qualquer coisa eh soh postar. _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|