|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
neidl Profissional
Registrado: Segunda-Feira, 28 de Julho de 2008 Mensagens: 501 Localização: São Paulo
|
Enviada: Seg Dez 22, 2008 2:55 pm Assunto: Consigo ordenar um campo calculado? |
|
|
Utilizo:
Delphi 7
SQL Server
DBGrid do Delphi 7
ADOQuery
Tem como ordenar o grid por um campo calculado? |
|
Voltar ao Topo |
|
|
mestrehurricane Mestre
Registrado: Domingo, 14 de Janeiro de 2007 Mensagens: 984 Localização: Belo Horizonte - MG
|
Enviada: Seg Dez 22, 2008 5:11 pm Assunto: |
|
|
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 |
|
|
neidl Profissional
Registrado: Segunda-Feira, 28 de Julho de 2008 Mensagens: 501 Localização: São Paulo
|
Enviada: Seg Dez 22, 2008 11:13 pm Assunto: |
|
|
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.
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 |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Seg Dez 22, 2008 11:28 pm Assunto: |
|
|
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.
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 |
|
|
neidl Profissional
Registrado: Segunda-Feira, 28 de Julho de 2008 Mensagens: 501 Localização: São Paulo
|
Enviada: Ter Dez 23, 2008 7:54 am Assunto: |
|
|
Bom, na verdade gostaria de saber se existe qualquer forma de ordenar, desde que eu não tenha que trocar o componente (ADOQuery) . Sabe me dizer alguma forma de ordenar os campos calculados, ou realmente não é possível? Agradeço desde já. |
|
Voltar ao Topo |
|
|
mestrehurricane Mestre
Registrado: Domingo, 14 de Janeiro de 2007 Mensagens: 984 Localização: Belo Horizonte - MG
|
Enviada: Ter Dez 23, 2008 8:25 am Assunto: |
|
|
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 |
|
|
gilsonnrodrigues Moderador
Registrado: Quinta-Feira, 14 de Abril de 2005 Mensagens: 9009 Localização: Governador Valadares-MG
|
Enviada: Ter Dez 23, 2008 8:37 am Assunto: |
|
|
dependendo do calculo usado no campo, vc poderia definir o calculo na instrucao SQL e ai sim vc conseguiria ordenar. |
|
Voltar ao Topo |
|
|
neidl Profissional
Registrado: Segunda-Feira, 28 de Julho de 2008 Mensagens: 501 Localização: São Paulo
|
Enviada: Ter Dez 23, 2008 9:42 am Assunto: |
|
|
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 |
|
|
mestrehurricane Mestre
Registrado: Domingo, 14 de Janeiro de 2007 Mensagens: 984 Localização: Belo Horizonte - MG
|
Enviada: Ter Dez 23, 2008 10:10 am Assunto: |
|
|
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 |
|
|
neidl Profissional
Registrado: Segunda-Feira, 28 de Julho de 2008 Mensagens: 501 Localização: São Paulo
|
Enviada: Ter Dez 23, 2008 10:20 am Assunto: |
|
|
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 |
|
|
gilsonnrodrigues Moderador
Registrado: Quinta-Feira, 14 de Abril de 2005 Mensagens: 9009 Localização: Governador Valadares-MG
|
Enviada: Ter Dez 23, 2008 11:06 am Assunto: |
|
|
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 |
|
|
neidl Profissional
Registrado: Segunda-Feira, 28 de Julho de 2008 Mensagens: 501 Localização: São Paulo
|
Enviada: Ter Dez 23, 2008 11:19 am Assunto: |
|
|
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 |
|
|
gilsonnrodrigues Moderador
Registrado: Quinta-Feira, 14 de Abril de 2005 Mensagens: 9009 Localização: Governador Valadares-MG
|
Enviada: Ter Dez 23, 2008 12:19 pm Assunto: |
|
|
é isso ai!!!!! |
|
Voltar ao Topo |
|
|
mestrehurricane Mestre
Registrado: Domingo, 14 de Janeiro de 2007 Mensagens: 984 Localização: Belo Horizonte - MG
|
Enviada: Ter Dez 23, 2008 3:10 pm Assunto: |
|
|
Entao se funfou posta resolvido ai. rsrsrs essa foi dificil |
|
Voltar ao Topo |
|
|
adriano_servitec Colaborador
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Qui Fev 25, 2010 11:14 pm Assunto: |
|
|
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.
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 |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|