locked
Query RRS feed

  • 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     3

    NameB     IdEnd4     1
    NameB     IdEnd5     2
    NameB     IdEnd6     3
    NameB     IdEnd7     4
    NameB     IdEnd8     5

    NameC     IdEnd9     1

    NameD     IdEnd10    1
    NameD     IdEnd11    2

    etc.

    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:36
    Moderador

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:36
    Moderador
  • 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.br
    domingo, 5 de setembro de 2010 14:48
    Moderador
  • 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.br
    segunda-feira, 6 de setembro de 2010 03:13
    Moderador
  • Viva!

    Sim mas, como refiro acima, na textbox nada aparece.

    Obrigado.

    an

     

     

    segunda-feira, 6 de setembro de 2010 06:53