MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    [Resolvido]Contar agrupado

    avatar
    andre lindolfo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 17/04/2012

    [Resolvido]Contar agrupado Empty Contar agrupado

    Mensagem  andre lindolfo 8/8/2012, 20:25

    Olá,
    Amigos, tentei buscar uma solução antes de postar, como não encontrei recorro aos mais entendidos em access.
    O meu caso é o seguinte....
    Preciso exportar uma consulta que tem NrNF, CódMaterial.
    Mas quero criar uma coluna que ele conte quantas vezes aaprece a mesma NF, por exemplo:

    NF 123 - tenho o material A,B e C
    NF 456 - tenho o material X e Y

    Se usar o contar o access traz o resultado 5, que é a qtd de registros.
    Porém que apareça na nova coluna a qtd de itens da NF, fique assim:
    NF | Material | Item
    123 | A | 1
    123 | B | 2
    123 | C | 3
    456 | X | 1
    456 | Z | 2

    Já tentei recorrer ao Dcontar, mas ele também me deu o resultado 5.
    O que quero é que ele reinicie a contagem toda vez que o nr da NF e do produto altere, ou seja, contar produto por NF.

    []s
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  Alexandre Neves 8/8/2012, 21:31

    Boa noite, andre
    Não entendi o contar
    NF | Material | Item
    123 | A | 1 <- tem 1 A
    123 | B | 2 <- tem 1 B, como aparece o 2?
    123 | C | 3 <- tem 1 C, como aparece o 3?
    456 | X | 1 <- tem 1 X
    456 | Z | 2 <- tem 1 Z, como aparece o 2?

    avatar
    andre lindolfo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 17/04/2012

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  andre lindolfo 8/8/2012, 21:35

    Oi Alexandre,

    A coluna "item" é a nova coluna que eu quero criar na consulta.
    Quero que o access numere (1, 2, 3, 4, ....n) a qtd de vezes que uma determinada NF aparece, quando mudar o nr da NF ele recomeça a numeração/contagem (1, 2, 3....)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  Alexandre Neves 8/8/2012, 21:44

    Execute o seguinte código

    'criada por Alexandre Neves
    'em 2012-08-08
    'para andre lindolfo
    'do fórum MaximoAccess
    Dim Rst As DAO.Recordset, I As Integer, NFAnterior As Long
    Set Rst = CurrentDb.OpenRecordset("SELECT NF, Material,item FROM Tabela ORDER BY NF,Material;")
    Do While Not Rst.EOF
    If Rst(0) = NFAnterior Then I = I + 1 Else I = 1
    Rst.Edit
    Rst(2) = I
    Rst.Update
    Rst.MoveNext
    Loop
    Set Rst = Nothing
    avatar
    andre lindolfo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 17/04/2012

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  andre lindolfo 8/8/2012, 22:52

    Oi Alexandre,
    Meu conhecimento é pequeno em relação ao seu e tenho dúvidas.
    Irei criar na consulta a coluna Item, este código coloco num módulo e depois chamo-o nesta coluna (Item)?
    Pergunto isso pq vi que no seu código vc menciona o campo "item"


    []s
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  Alexandre Neves 8/8/2012, 23:13

    Crie o campo Item na tabela
    Crie um módulo, cole o código e execute (F5)
    Sub PreencheItem()
    'criada por Alexandre Neves
    'em 2012-08-08
    'para andre lindolfo
    'do fórum MaximoAccess
    Dim Rst As DAO.Recordset, I As Integer, NFAnterior As Long
    Set Rst = CurrentDb.OpenRecordset("SELECT NF, Material,item FROM Tabela ORDER BY NF,Material;")
    Do While Not Rst.EOF
    If Rst(0) = NFAnterior Then I = I + 1 Else I = 1
    Rst.Edit
    Rst(2) = I
    Rst.Update
    Rst.MoveNext
    Loop
    Set Rst = Nothing
    End Sub
    avatar
    andre lindolfo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 17/04/2012

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  andre lindolfo 9/8/2012, 21:25

    Oi Alexandre,

    Fiz o que vc me instruiu, porém o resultado foi 1 para todos os registros, ele não agrupou nf/material e depois enumerou 1,2,34,...n.

    Alexandre, tem como colocar este módulo numa consulta ao invez de criar uma coluna específica na tabela, acho que assim economizo espaço, pois tenho outras colunas além dessas duas (NF e Material).

    []s
    André Lindolfo
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  Alexandre Neves 9/8/2012, 21:33

    Boa noite, andre
    Em código, tem de ser módulo e não em consulta.
    Sobre não ficar como pretendido, explique como ficou e como pretende
    avatar
    andre lindolfo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 17/04/2012

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  andre lindolfo 9/8/2012, 22:00

    Oi Alexandre,
    Deixe eu me corrigir... poderia ser uma função (módulo) e eu carregaria ela numa consulta.
    O resultado foi o seguinte
    NF | Material | Item
    1324 | 237 | 1
    1324 | 834 | 1
    1324 | 923 | 1
    5384 | 237 | 1
    8211 | 218 | 1

    Esta colocando 1 para todos os registros da coluna "Item"
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  Alexandre Neves 9/8/2012, 22:05

    Já verifiquei o erro
    Sub PreencheItem()
    'criada por Alexandre Neves
    'em 2012-08-08
    'para andre lindolfo
    'do fórum MaximoAccess
    Dim Rst As DAO.Recordset, I As Integer, NFAnterior As Long
    Set Rst = CurrentDb.OpenRecordset("SELECT NF, Material,item FROM Tabela ORDER BY NF,Material;")
    Do While Not Rst.EOF
    If Rst(0) = NFAnterior Then I = I + 1 Else I = 1 : NFAnterior=Rst(0)
    Rst.Edit
    Rst(2) = I
    Rst.Update
    Rst.MoveNext
    Loop
    Set Rst = Nothing
    End Sub
    avatar
    andre lindolfo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 17/04/2012

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  andre lindolfo 9/8/2012, 23:22

    Oi Alexandre,

    A execução para, fui no depurar e está acusando erro em:

    Sub PreencheItem()
    'criada por Alexandre Neves
    'em 2012-08-08
    'para andre lindolfo
    'do fórum MaximoAccess
    Dim Rst As DAO.Recordset, I As Integer, NFAnterior As Long
    Set Rst = CurrentDb.OpenRecordset("SELECT NF, Material,item FROM teste ORDER BY NF,Material;")
    Do While Not Rst.EOF
    If Rst(0) = NFAnterior Then I = I + 1 Else I = 1: NFAnterior = Rst(0)
    Rst.Edit
    Rst(2) = I
    Rst.Update
    Rst.MoveNext
    Loop
    Set Rst = Nothing
    End Sub
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  Alexandre Neves 9/8/2012, 23:41

    Coloca assim
    Sub PreencheItem()
    'criada por Alexandre Neves
    'em 2012-08-08
    'para andre lindolfo
    'do fórum MaximoAccess
    Dim Rst As DAO.Recordset, I As Integer, NFAnterior As Long
    Set Rst = CurrentDb.OpenRecordset("SELECT NF, Material,item FROM teste ORDER BY NF,Material;")
    Do While Not Rst.EOF
    If Rst(0) = NFAnterior Then
    I = I + 1
    Else
    I = 1
    NFAnterior = Rst(0)
    End if
    Rst.Edit
    Rst(2) = I
    Rst.Update
    Rst.MoveNext
    Loop
    Set Rst = Nothing
    End Sub
    avatar
    andre lindolfo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 17/04/2012

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  andre lindolfo 9/8/2012, 23:46

    Alexandre,

    Esta dando erro
    Mensagem: Erro em tempo de execução '94'
    Uso de 'Null' inválido.

    Clico no depurar é o erro é na linha sinalizada abaixo:


    Sub PreencheItem()
    'criada por Alexandre Neves
    'em 2012-08-08
    'para andre lindolfo
    'do fórum MaximoAccess
    Dim Rst As DAO.Recordset, I As Integer, NFAnterior As Long
    Set Rst = CurrentDb.OpenRecordset("SELECT NF, Material,item FROM teste ORDER BY NF,Material;")
    Do While Not Rst.EOF
    If Rst(0) = NFAnterior Then
    I = I + 1
    Else
    I = 1
    NFAnterior = Rst(0)
    End if
    Rst.Edit
    Rst(2) = I
    Rst.Update
    Rst.MoveNext
    Loop
    Set Rst = Nothing
    End Sub
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  Alexandre Neves 10/8/2012, 12:02

    Bom dia, andre
    Esse registo tem o NF nulo. Precisa que contemple a situação ou vai corrigir o preenchimento de NF?
    avatar
    andre lindolfo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 17/04/2012

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  andre lindolfo 10/8/2012, 15:07

    Oi Alexandre,

    Há registro sem o nr da NF, não tenho como alterar isso, realmente tem que contemplar registros com o campo NF nulo.
    Neste caso ele não deverá ser enumeração como os que tem o campo preenchido.
    Alexandre, só mais um detalhe, não tem como criar uma função para colocar na consulta, estou preocupado com o tamanho e quero deixar o banco o mais leve possível.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  Alexandre Neves 10/8/2012, 17:32

    Coloque assim
    Sub PreencheItem()
    'criada por Alexandre Neves
    'em 2012-08-08
    'para andre lindolfo
    'do fórum MaximoAccess
    Dim Rst As DAO.Recordset, I As Integer, NFAnterior As Long
    Set Rst = CurrentDb.OpenRecordset("SELECT NF, Material,item FROM teste ORDER BY NF,Material;")
    Do While Not Rst.EOF
    If Not isnull(Rst(0)) Then
    If Rst(0) = NFAnterior Then
    I = I + 1
    Else
    I = 1
    NFAnterior = Rst(0)
    End if
    Rst.Edit
    Rst(2) = I
    Rst.Update
    end if
    Rst.MoveNext
    Loop
    Set Rst = Nothing
    End Sub
    avatar
    andre lindolfo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 17/04/2012

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  andre lindolfo 16/8/2012, 15:55

    Oi Alexandre,

    Continua dando erro no mesmo comando.
    Lembro-o que há casos que o campo NF está vazio, pois não tem o nr da NF, este campo também está formatado como texto, pois o nr da NF tem um sinal ("-").
    Desta vez ele nem enumerou nenhum registro.
    Segue o local que está acusando erro no depurar.
    Sub PreencheItem()
    'criada por Alexandre Neves
    'em 2012-08-08
    'para andre lindolfo
    'do fórum MaximoAccess
    Dim Rst As DAO.Recordset, I As Integer, NFAnterior As Long
    Set Rst = CurrentDb.OpenRecordset("SELECT NF, codMat,item FROM Inicial_ajustada2 ORDER BY NF,codMat;")
    Do While Not Rst.EOF
    If Not IsNull(Rst(0)) Then
    If Rst(0) = NFAnterior Then
    I = I + 1
    Else
    I = 1
    NFAnterior = Rst(0)
    End If
    Rst.Edit
    Rst(2) = I
    Rst.Update
    End If
    Rst.MoveNext
    Loop
    Set Rst = Nothing
    End Sub


    Abraços
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  Alexandre Neves 16/8/2012, 18:44

    Boa tarde, andre
    Qual o valor de rst(0) nesse ponto?
    avatar
    andre lindolfo
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 139
    Registrado : 17/04/2012

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  andre lindolfo 16/8/2012, 20:25

    Alexandre, sou novato nisso, não entendi sua pergunta.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  Alexandre Neves 16/8/2012, 20:27

    Marque paragem do código nesse ponto ou visualize o valor: msgbox Rst(0)
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  Alexandre Neves 20/9/2012, 22:22

    Por falta de retorno, o tema passa a resolvido


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    Conteúdo patrocinado


    [Resolvido]Contar agrupado Empty Re: [Resolvido]Contar agrupado

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/4/2024, 11:53