ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Consigo ordenar um campo calculado?
Ir à página 1, 2  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
neidl
Profissional
Profissional


Registrado: Segunda-Feira, 28 de Julho de 2008
Mensagens: 501
Localização: São Paulo

MensagemEnviada: Seg Dez 22, 2008 2:55 pm    Assunto: Consigo ordenar um campo calculado? Responder com Citação

Utilizo:

Delphi 7
SQL Server
DBGrid do Delphi 7
ADOQuery

Tem como ordenar o grid por um campo calculado?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
mestrehurricane
Mestre
Mestre


Registrado: Domingo, 14 de Janeiro de 2007
Mensagens: 984
Localização: Belo Horizonte - MG

MensagemEnviada: Seg Dez 22, 2008 5:11 pm    Assunto: Responder com Citação

insira um componente Query da "paleta "BDE"

ele tem uma propriedade chamada SQL, vc clica em ... e insere os comandos

obs.: nao esqueça de colocar um datasource ligado a Query


SELECT * FROM tabele WHERE campo = variavel ORDER BY campo1, campo2
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
neidl
Profissional
Profissional


Registrado: Segunda-Feira, 28 de Julho de 2008
Mensagens: 501
Localização: São Paulo

MensagemEnviada: Seg Dez 22, 2008 11:13 pm    Assunto: Responder com Citação

mestrehurricane escreveu:
insira um componente Query da "paleta "BDE"

ele tem uma propriedade chamada SQL, vc clica em ... e insere os comandos

obs.: nao esqueça de colocar um datasource ligado a Query


SELECT * FROM tabele WHERE campo = variavel ORDER BY campo1, campo2


Agradeço a boa vontade em tentar ajudar, entendo esse procedimento que você descreveu, e no caso preciso saber se é possível ordenar CAMPOS CALCULADOS com o ADOQUERY e não com o QUERY DA BDE. Não tem como dar um order by em um campo que "não existe" fisicamente, pelo menos não em meu curto conhecimento. Mas obrigado, novamente, por0 tentar ajudar. Crying or Very sad

OBS.: Não posso trocar o componente ADOQuery por nenhum outro pq o programa já foi estruturado totalmente usando esse componente, e além do mais, não foi nem eu que o desenvolvi, e o código esta realmente muito bagunçado, sendo meu objetivo apenas fazer uns ajustes que me pediram.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Seg Dez 22, 2008 11:28 pm    Assunto: Responder com Citação

neidl escreveu:
mestrehurricane escreveu:
insira um componente Query da "paleta "BDE"

ele tem uma propriedade chamada SQL, vc clica em ... e insere os comandos

obs.: nao esqueça de colocar um datasource ligado a Query


SELECT * FROM tabele WHERE campo = variavel ORDER BY campo1, campo2


Agradeço a boa vontade em tentar ajudar, entendo esse procedimento que você descreveu, e no caso preciso saber se é possível ordenar CAMPOS CALCULADOS com o ADOQUERY e não com o QUERY DA BDE. Não tem como dar um order by em um campo que "não existe" fisicamente, pelo menos não em meu curto conhecimento. Mas obrigado, novamente, por0 tentar ajudar. Crying or Very sad

OBS.: Não posso trocar o componente ADOQuery por nenhum outro pq o programa já foi estruturado totalmente usando esse componente, e além do mais, não foi nem eu que o desenvolvi, e o código esta realmente muito bagunçado, sendo meu objetivo apenas fazer uns ajustes que me pediram.
Olá amigo, se vc estiver usando o recurso de indices dinamicos do clientdataset creio eu não ser possivel de ordenar.
_________________
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
Ver o perfil de Usuários Enviar Mensagem Particular
neidl
Profissional
Profissional


Registrado: Segunda-Feira, 28 de Julho de 2008
Mensagens: 501
Localização: São Paulo

MensagemEnviada: Ter Dez 23, 2008 7:54 am    Assunto: Responder com Citação

Bom, na verdade gostaria de saber se existe qualquer forma de ordenar, desde que eu não tenha que trocar o componente (ADOQuery) Very Happy. Sabe me dizer alguma forma de ordenar os campos calculados, ou realmente não é possível? Agradeço desde já.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
mestrehurricane
Mestre
Mestre


Registrado: Domingo, 14 de Janeiro de 2007
Mensagens: 984
Localização: Belo Horizonte - MG

MensagemEnviada: Ter Dez 23, 2008 8:25 am    Assunto: Responder com Citação

Bom se vc estiver querendo ordenar o resultado da pesquisa, basta vc
utilizar a propriedade Sort


ficaria mais ou menos assim:


ADOQueryMinhaConsulta.Sort:='Nome DESC';
ADOQueryMinhaConsulta.Sort:='Nome, DataCadastro';


Ou seja exatamente como vc faria no Order By de um select, com uma vantagem,
não é feita uma nova requisicao ao servidor de dados, o componente ordena o
resultado
atual da query.


Obs.: na propriedade Sort vc usa o nome do campo, e só funciona com campos
provenientes do select,
ou seja campos calculados não podem ser usados nesta propriedade. Mas se o
campo for calculado dentro
do select, ai sim dá pra order usando o sort
tenta ai
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Ter Dez 23, 2008 8:37 am    Assunto: Responder com Citação

dependendo do calculo usado no campo, vc poderia definir o calculo na instrucao SQL e ai sim vc conseguiria ordenar.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
neidl
Profissional
Profissional


Registrado: Segunda-Feira, 28 de Julho de 2008
Mensagens: 501
Localização: São Paulo

MensagemEnviada: Ter Dez 23, 2008 9:42 am    Assunto: Responder com Citação

Realmente só quero ordenar o RESULTADO e não os dados no banco de dados...

Pena que não funcionou como você falou, pq assim como disse o campo é calculado.

O que eu preciso fazer é o seguinte:

O programa que estou mechendo está TOTALMENTE bagunçado, e só faço algumas modificações que me pedem, pois se for arrumar o programa todo vou ficar louco, mas enfim, existe um tabela onde guardo a região dos cliente com um id para cada uma enfim, e no campo calculado ele apenas receberá o valor da região da seguinte maneira:

Código:

procedure TDati.TPedidoCalcFields(DataSet: TDataSet);
begin
  if DMRegioesCli.quVerRegiao.Active then
    DMRegioesCli.quVerRegiao.Close;
  DMRegioesCli.quVerRegiao.Open;
  if DMRegioesCli.quVerRegiao.Locate('no_ped',DataSet['n_ped'],[]) then
    DataSet['regiao_nome']:=DMRegioesCli.quVerRegiao['regiao_nome'];
  DMRegioesCli.quVerRegiao.Close;
end;


Talvez exista um maneira mais fácil, e pensei até em usar um campo lookup ao invés do calculado, mas aparece uma mesagem dizendo que a informação para o campo lookup está incompleta e blablabla.

Só preciso ordenar o RESULTADO e não a tabela do banco, por favor, alguém me ajuda! xP

mestrehurricane escreveu:
Bom se vc estiver querendo ordenar o resultado da pesquisa, basta vc
utilizar a propriedade Sort


ficaria mais ou menos assim:


ADOQueryMinhaConsulta.Sort:='Nome DESC';
ADOQueryMinhaConsulta.Sort:='Nome, DataCadastro';


Ou seja exatamente como vc faria no Order By de um select, com uma vantagem,
não é feita uma nova requisicao ao servidor de dados, o componente ordena o
resultado
atual da query.


Obs.: na propriedade Sort vc usa o nome do campo, e só funciona com campos
provenientes do select,
ou seja campos calculados não podem ser usados nesta propriedade. Mas se o
campo for calculado dentro
do select, ai sim dá pra order usando o sort
tenta ai
[/code]
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
mestrehurricane
Mestre
Mestre


Registrado: Domingo, 14 de Janeiro de 2007
Mensagens: 984
Localização: Belo Horizonte - MG

MensagemEnviada: Ter Dez 23, 2008 10:10 am    Assunto: Responder com Citação

Amigo pergunto se vc colocou criou a instrução sql com o select que te falei. Pq se tiver criado funciona , senão ai ja e outra historia.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
neidl
Profissional
Profissional


Registrado: Segunda-Feira, 28 de Julho de 2008
Mensagens: 501
Localização: São Paulo

MensagemEnviada: Ter Dez 23, 2008 10:20 am    Assunto: Responder com Citação

mestrehurricane escreveu:
Amigo pergunto se vc colocou criou a instrução sql com o select que te falei. Pq se tiver criado funciona , senão ai ja e outra historia.


Opa, então, acabei de fazer o select, e digamos... funcionou. Qualquer problema volto a postar, muito obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Ter Dez 23, 2008 11:06 am    Assunto: Responder com Citação

Código:
  if DMRegioesCli.quVerRegiao.Active then
    DMRegioesCli.quVerRegiao.Close;
  DMRegioesCli.quVerRegiao.Open;


isso no oncalcfields?

fecha e abre td hora?

eu heinn!


se as tabelas estiverem no mesmo banco ou for banco "DB local" vc pode fazer um join e ai sim ordenaria facilmente.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
neidl
Profissional
Profissional


Registrado: Segunda-Feira, 28 de Julho de 2008
Mensagens: 501
Localização: São Paulo

MensagemEnviada: Ter Dez 23, 2008 11:19 am    Assunto: Responder com Citação

Abrir e fechar estava horrível mesmo =/.

Eu acabei usando join mesmo, apesar das tabelas estarem em bancos diferentes eu usei SELECT CAMPO FROM BANCO.DBO.TABELA e funciona normalmente.

gilsonnrodrigues escreveu:
Código:
  if DMRegioesCli.quVerRegiao.Active then
    DMRegioesCli.quVerRegiao.Close;
  DMRegioesCli.quVerRegiao.Open;


isso no oncalcfields?

fecha e abre td hora?

eu heinn!


se as tabelas estiverem no mesmo banco ou for banco "DB local" vc pode fazer um join e ai sim ordenaria facilmente.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gilsonnrodrigues
Moderador
Moderador


Registrado: Quinta-Feira, 14 de Abril de 2005
Mensagens: 9009
Localização: Governador Valadares-MG

MensagemEnviada: Ter Dez 23, 2008 12:19 pm    Assunto: Responder com Citação

é isso ai!!!!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
mestrehurricane
Mestre
Mestre


Registrado: Domingo, 14 de Janeiro de 2007
Mensagens: 984
Localização: Belo Horizonte - MG

MensagemEnviada: Ter Dez 23, 2008 3:10 pm    Assunto: Responder com Citação

Entao se funfou posta resolvido ai. rsrsrs essa foi dificil
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Fev 25, 2010 11:14 pm    Assunto: Responder com Citação

adriano_servitec escreveu:
neidl escreveu:
mestrehurricane escreveu:
insira um componente Query da "paleta "BDE"

ele tem uma propriedade chamada SQL, vc clica em ... e insere os comandos

obs.: nao esqueça de colocar um datasource ligado a Query


SELECT * FROM tabele WHERE campo = variavel ORDER BY campo1, campo2


Agradeço a boa vontade em tentar ajudar, entendo esse procedimento que você descreveu, e no caso preciso saber se é possível ordenar CAMPOS CALCULADOS com o ADOQUERY e não com o QUERY DA BDE. Não tem como dar um order by em um campo que "não existe" fisicamente, pelo menos não em meu curto conhecimento. Mas obrigado, novamente, por0 tentar ajudar. Crying or Very sad

OBS.: Não posso trocar o componente ADOQuery por nenhum outro pq o programa já foi estruturado totalmente usando esse componente, e além do mais, não foi nem eu que o desenvolvi, e o código esta realmente muito bagunçado, sendo meu objetivo apenas fazer uns ajustes que me pediram.
Olá amigo, se vc estiver usando o recurso de indices dinamicos do clientdataset creio eu não ser possivel de ordenar.
Sei que vc ja resolveu...Mais só completando o que eu falei neste post, campos calculados não tem como ordenar, mais se vc utilizar campos internalcalc ai sim vc pode ordenar pelo comando indexfieldnames
_________________
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
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Ir à página 1, 2  Próximo
Página 1 de 2

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB