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]Gerar Numeracao automatica com registros fora da sequencia

    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar Numeracao automatica com registros fora da sequencia Empty [Resolvido]Gerar Numeracao automatica com registros fora da sequencia

    Mensagem  vileman 22/7/2012, 05:39

    Uso Access 2003

    Amigos, preciso mais uma vez da ajuda de vocês no seguinte:

    Tenho um Form que gera ou não 01 Notificação por cada Registro inserido, a mesma quando gerada é seqüencial por Ano, no formato: 001/2012, 002/2012, 003/2012, e assim por diante, ou seja, a cada ano começa de 001, até aqui tudo bem, a questão é que só posso gerar uma nova Notificação se o tipo de expediente forem os códigos 1 e 2 baseado no campo IDExpediente deste Formulário que por sua vez tem sua origem em outra Tabela T16_Expedientes que possui atualmente 8 códigos. Então se em determinado registro for escolhido por exemplo o código 3 ou 5 a Notificação não deve ser gerada, o problema é que no campo NumNOT que recebe a numeração coloquei no valor padrão desse campo: “000/0000” para os códigos que não geram Notificação, mas a Função/Módulo que uso para geração da sequencia sempre pega da Tabela o último número gerado e adiciona mais 1 como seria o normal, então a numeração das Notificações na tabela está em 005/2012 e crio um novo registro e coloco o código 3 ele grava no campo NumNOT assim: “000/0000” (por ser valor padrão), e após isso eu criar um novo registro o sistema emite uma mensagem que irá começar uma nova numeração e grava novamente o número 001/2012 nesse novo registro, o que está incorreto, pois deveria criar a numeração 006/2012, visto que na tabela o registro anterior era “000/0000”. Minha necessidade é justamente essa, ou seja, de quando não forem os códigos 1 ou 2 e na tabela ficar a numeração zerada, e ao incluir um outro registro e identifique que o último número está zerado com “000/0000”, ele pegue a última numeração diferente de zerado e acrescente mais 1, mas tem um detalhe, nem sempre o código 2 gera uma Notificação, o qual no campo NumNOT desse registro também ficaria zerado, apenas o código 1 gera necessariamente uma Notificação com Numeração Seqüencial X Ano. Tentei alterar com os comandos abaixo no botão de comando, mas não funcionou pois se encontra um registro como "000/0000" ou mesmo vazio, a função começa novamente do 001/2012, quando já existe essa numeração, conforme já citado acima.

    Os códigos que uso para a rotina acima citada são:

    Botão de comando para inserir uma nova Notificação:

    Private Sub MenuNotificacao_Click() '** NOTIFICACAO
    If IDExpediente = 1 Or IDExpediente = 2 Then
    On Error GoTo Sai
    Call NumeraRegistros
    Exit Sub
    Sai:
    MsgBox "Erro - " & Err.Description
    Else
    DoCmd.CancelEvent
    Exit Sub
    End If
    End Sub

    Abaixo a Função/Módulo que gera a Numeração Automática Seqüencial por Ano
    Onde:
    T16_Autuacoes = Tabela onde é gravado os campos da rotina
    CodAutuacao = campo de Autonumeracao da tabela acima
    NumNOT = campo onde é armazenado o Número da Notificação (000/0000) na tabela acima
    ContadorDeRegistros = Módulo para contagem dos registros x sequencia x ano

    Private Sub NumeraRegistros() '** NOTIFICACAO
    'Para um contador de registros personalizado ser eficiente você deve introduzir um campo ‘autonumeração na sua tabela só para facilitar a busca do ultimo registro. Ele pode ficar ‘oculto. Note que eu passo uma sql para a função em ordem decrescente e o nome do campo ‘que eu quero incrementar a contagem.

    Dim sql As String
    sql = "SELECT CodAutuacao, NumNOT"
    sql = sql & " FROM T16_Autuacoes"
    sql = sql & " ORDER BY CodAutuacao DESC"
    Me.NumNOT = ContadorDeRegistros("NumNOT", sql)
    End Sub

    Módulo:
    'Autor: Carlos em 20/01/99 e-mail: crpmoura@ig.com.br
    'Contador de registros personalizado no formato numero/ano

    Public Function ContadorDeRegistros(strCampo As String, strSql As String)
    Dim strNum As String, DB As Database
    Dim strMax As String, CampoAno As String
    Dim AnoData As String, tbl As Recordset

    Set DB = CurrentDb
    AnoData = Year(Date)

    Set tbl = DB.OpenRecordset(strSql)
    If tbl.RecordCount = 0 Then
    ContadorDeRegistros = 1 & "/" & AnoData
    Else
    strMax = tbl(strCampo)
    CampoAno = Mid(strMax, (InStr(1, strMax, "/")) + 1, 4)
    If CampoAno = AnoData Then
    strNum = Left(strMax, (InStr(1, strMax, "/") - 1)) + 1
    ContadorDeRegistros = strNum & "/" & AnoData
    Else
    MsgBox "O Sistema iniciará uma nova contagem dos Registros" _
    & vbCrLf & " em função da virada do ANO", vbInformation, "ATENÇÃO"
    ContadorDeRegistros = 1 & "/" & AnoData
    End If
    End If
    ContadorDeRegistros = StrZero(ContadorDeRegistros, Cool
    tbl.Close
    Set DB = Nothing
    End Function

    Public Function StrZero(nNumero As Variant, nCasas As Integer)
    StrZero = Right("00000000" + LTrim(nNumero), nCasas)
    End Function

    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]Gerar Numeracao automatica com registros fora da sequencia Empty Re: [Resolvido]Gerar Numeracao automatica com registros fora da sequencia

    Mensagem  Alexandre Neves 22/7/2012, 08:46

    Bom dia, vileman
    Não tenho tempo agora para analisar, mas retire o valor padrão do campo e veja se funciona
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar Numeracao automatica com registros fora da sequencia Empty Gerar Numeracao automatica com registros fora da sequencia

    Mensagem  vileman 22/7/2012, 16:14

    Bom dia, Alexandre

    Já havia feito isso, mas dá uma mensagem: "Erro - Uso de 'Null' inválido"
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar Numeracao automatica com registros fora da sequencia Empty Gerar Numeracao automatica com registros fora da sequencia

    Mensagem  vileman 22/8/2012, 00:05

    Alguém mais poderia ajudar nesse tópico, mesmo que seja usando outra rotina diferente da que uso, desde que tenha o mesmo resultado ?
    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]Gerar Numeracao automatica com registros fora da sequencia Empty Re: [Resolvido]Gerar Numeracao automatica com registros fora da sequencia

    Mensagem  Alexandre Neves 22/8/2012, 09:08

    Bom dia, vileman
    Se disponibilizar a bd para se tentar
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar Numeracao automatica com registros fora da sequencia Empty Gerar Numeracao automatica com registros fora da sequencia

    Mensagem  vileman 23/8/2012, 12:59

    Bom dia Alexandre, vou preparar a BD e mando ainda hoje.
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar Numeracao automatica com registros fora da sequencia Empty Gerar Numeracao automatica com registros fora da sequencia

    Mensagem  vileman 24/8/2012, 01:14

    Alexandre, segue em anexo a BD conforme combinado.

    Saudações
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar Numeracao automatica com registros fora da sequencia Empty Gerar Numeracao automatica com registros fora da sequencia

    Mensagem  vileman 24/8/2012, 01:20

    Alexandre, como não estou visualizando o arquivo .zip que enviei estou postando novamente como nova tentativa de anexar, caso não visualize também, favor informar para tentarmos de outra forma, ok?
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar Numeracao automatica com registros fora da sequencia Empty Gerar Numeracao automatica com registros fora da sequencia

    Mensagem  vileman 26/8/2012, 00:17

    Caro Alexandre, como não consegui anexar o arquivo .zip aqui pelo Fórum estou enviando o link do Dropbox que espero esteja correto, pois não costumo usar esse aplicativo e não familiarizado com o mesmo. Caso não consiga fazer o download, pode fornecer um e-mail para eu enviar o arquivo ?

    link:
    http://dl.dropbox.com/u/100508258/VILEMAN.mdb
    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]Gerar Numeracao automatica com registros fora da sequencia Empty Re: [Resolvido]Gerar Numeracao automatica com registros fora da sequencia

    Mensagem  Alexandre Neves 26/8/2012, 07:38

    Bom dia, vileman
    Não percebi como criar uma situação que me mostrasse o erro, parece que faltam objectos na bd.
    No entanto, suponho que com esta alteração resolverá:

    Private Sub NumeraRegistros() '** NOTIFICACAO
    'Para um contador de registros personalizado ser eficiente você deve introduzir um campo autonumeração na sua tabela só
    'para facilitar a busca do ultimo registro. Ele pode ficar oculto. Note que eu passo uma sql para a função em ordem decrescente
    'e o nome do campo que eu quero incrementar a contagem.
    Dim sql As String
    If IDExpediente <> 1 And IDExpediente <> 2 Then
    sql = "SELECT CodAutuacao, NumNOT"
    sql = sql & " FROM T16_Autuacoes"
    sql = sql & " ORDER BY CodAutuacao DESC"
    Me.NumNOT = ContadorDeRegistros("NumNOT", sql)
    End If
    End Sub


    .................................................................................
    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
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar Numeracao automatica com registros fora da sequencia Empty Gerar Numeracao automatica com registros fora da sequencia

    Mensagem  vileman 26/8/2012, 23:28

    Boa noite, Alexandre

    Estou enviando 1 novo arquivo com as explicações que estão no Formulário principal ao abrir para você poder ver o erro da rotina e assim poder analisar melhor, pode desconsiderar o anterior, ok?

    link:
    http://dl.dropbox.com/u/100508258/VILEMAN.mdb
    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]Gerar Numeracao automatica com registros fora da sequencia Empty Re: [Resolvido]Gerar Numeracao automatica com registros fora da sequencia

    Mensagem  Alexandre Neves 26/8/2012, 23:36

    Boa noite, vileman
    Onde está o menu Notificação?


    .................................................................................
    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
    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]Gerar Numeracao automatica com registros fora da sequencia Empty Re: [Resolvido]Gerar Numeracao automatica com registros fora da sequencia

    Mensagem  Alexandre Neves 26/8/2012, 23:56

    Já descobri o que é menu Notificação mas, não sei porquê, o cursor não sai da caixa TipoExpediente.
    Mesmo assim, veja se este código lhe serve
    Private Sub NumeraRegistros() '** NOTIFICACAO
    Dim sql As String
    If IDExpediente = 1 Or IDExpediente = 2 Then
    sql = "SELECT CodAutuacao, NumNOT"
    sql = sql & " FROM T16_Autuacoes WHERE NumNot<>'0000/0000'"
    sql = sql & " ORDER BY CodAutuacao DESC"
    Me.NumNOT = ContadorDeRegistros("NumNOT", sql)
    End If
    End Sub


    .................................................................................
    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
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar Numeracao automatica com registros fora da sequencia Empty Gerar Numeracao automatica com registros fora da sequencia

    Mensagem  vileman 27/8/2012, 00:26

    Alexandre, ficou perfeito, tão simples, para quem sabe não é? Você é o cara!!

    Muito obrigado, valeu mais uma vez pela força.

    Muita paz
    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]Gerar Numeracao automatica com registros fora da sequencia Empty Re: [Resolvido]Gerar Numeracao automatica com registros fora da sequencia

    Mensagem  Alexandre Neves 27/8/2012, 09:30

    Bom dia, vileman
    Ficando resolvido, deve ser assinalado
    [Resolvido]Gerar Numeracao automatica com registros fora da sequencia MaximoAccess%20ResolvidoMarcado


    .................................................................................
    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
    avatar
    vileman
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 580
    Registrado : 25/05/2011

    [Resolvido]Gerar Numeracao automatica com registros fora da sequencia Empty Gerar Numeracao automatica com registros fora da sequencia

    Mensagem  vileman 27/8/2012, 23:38

    Boa noite, Alexandre

    Coloquei o Resolvido ontem e para mim aparece como Resolvido, não sei o que houve, mesmo assim vou colocar de novo.
    Obrigado.

    Conteúdo patrocinado


    [Resolvido]Gerar Numeracao automatica com registros fora da sequencia Empty Re: [Resolvido]Gerar Numeracao automatica com registros fora da sequencia

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/4/2024, 04:55