Usuário com melhor resposta
Query

Pergunta
-
Vivam!
É a primeira vez que entro neste fórum. Daí que não tenha a certeza se estarei no local certo para colocar o problema seguinte, que me parecia de fácil solução:
Tenho a seguinte query:
SELECT T_Names.Name, T_Names.IdName, T_Ends.IdEnd, T_Ends.IdName, Count(T_Ends.IdName) AS [IdEndOrder]
FROM T_Names LEFT JOIN T_Ends ON T_Names.IdName = T_Ends.IdName
GROUP BY T_Names.Name, T_Names.IdName, T_Ends.IdEnd, T_Ends.IdName;Quando se corre a query, o campo [IdEndOrder] devolve o valor 1 em todos os registos.
O que eu pretendia era que me calculasse a ordem dentro de cada grupo do campo
[Name]Ou seja:
NameA IdEnd1 1
NameA IdEnd2 2
NameA IdEnd3 3NameB IdEnd4 1
NameB IdEnd5 2
NameB IdEnd6 3
NameB IdEnd7 4
NameB IdEnd8 5NameC IdEnd9 1
NameD IdEnd10 1
NameD IdEnd11 2etc.
Já tentei esse objectivo através de textbox com a fórmula DCount e não consegui.
Com query já tentei com SEQUENCE e também não.
Peço a vossa ajuda.
Antecipadamente agradecido.
an
sábado, 4 de setembro de 2010 14:39
Respostas
-
Olá,
infelizmente não existe um numerador em queries.
Porém, existe em relatórios: basta você usar um campo com valor constante "1" e definir (na estrutura do relatório) a propriedade "Soma Parcial" para "Por grupo" na caixa de texto do campo.
Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.br- Marcado como Resposta aneves.expo domingo, 5 de setembro de 2010 04:10
domingo, 5 de setembro de 2010 02:36Moderador
Todas as Respostas
-
Olá,
infelizmente não existe um numerador em queries.
Porém, existe em relatórios: basta você usar um campo com valor constante "1" e definir (na estrutura do relatório) a propriedade "Soma Parcial" para "Por grupo" na caixa de texto do campo.
Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.br- Marcado como Resposta aneves.expo domingo, 5 de setembro de 2010 04:10
domingo, 5 de setembro de 2010 02:36Moderador -
Obrigado pela sua resposta.
Efectivamente do que eu necessito é para formulários.
Haverá também ou só para relatórios?
an
domingo, 5 de setembro de 2010 04:12 -
Viva!
Uma pequena dica:
É possível fazer uma numeração sequencial com uma query, tipo AutoNumber, num só agrupamento de registos: de 1 até 'n', utilizando a função DCount.
Mas o que eu preciso é diferente. É de apresentar em Form, por agrupamento de registos, à semelhança do que acima indica como possível, em Report.
Já tentei com recurso a Textboxes e a SubForm mas sem êxito.
an
domingo, 5 de setembro de 2010 14:27 -
Olá,
até é possível sim montar alguma sequência de numeração em queries com DCount ou DSum, porém custa muito caro, o processamento é muito pesado.
Em formulários também é possível, você pode fazer uma adaptação desta função: http://www.accessfaq.com.br/webroot/detalhe.asp?Pergunta_Id=333&search=seq
Mas, novamente, o processamento também é pesado.
O melhor (em termos de processamento), neste caso, seria você armazenar na tabela a numeração. Você cria uma função usando DAO que percorra os registros e edite um campo numérico (criado só para esta finalidade), depois exibe o formulário já pronto. Em termos de modelagem é uma solução pobre, mas em performance é melhor que calcular na query e no form.
Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.brdomingo, 5 de setembro de 2010 14:48Moderador -
Viva!
Penso ter compreendido a sua ideia e que agradeço.
Contudo, seria difícil para quem está a introduzir os dados, saber a que número de ordem corresponde aquele registo de deterninada pessoa...
Vou ver a sua proposta de função.
Obrigado.
an
domingo, 5 de setembro de 2010 15:28 -
Viva!
Subsiste-me uma dúvida:
Onde colocar a sua função?
Criando um módulo, na textbox nada aparece;
No form, devolve:
Compile error:
Member already exist in an object module from wich this object module derives.
Fiquei sem perceber porquê... :-)
Obrigado.
an
domingo, 5 de setembro de 2010 15:53 -
A função deve ser colocada no módulo do formulário.
Luiz Cláudio Cosenza Vieira da Rocha - http://msmvps.com/blogs/officedev - IT Lab www.itlab.com.brsegunda-feira, 6 de setembro de 2010 03:13Moderador -
Viva!
Sim mas, como refiro acima, na textbox nada aparece.
Obrigado.
an
segunda-feira, 6 de setembro de 2010 06:53