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


    [Resolvido]Reiniciar numeração

    avatar
    Convidado
    Convidado


    [Resolvido]Reiniciar numeração Empty Reiniciar numeração

    Mensagem  Convidado 1/10/2011, 19:21

    Boa tarde a toda a família MaximoAcces! Estou precisando de 1 help em uma rotina de um formulário que é a seguinte: Tenho um campo chamado IdSolicitacao, onde armazeno uma numeração que é a combinação do ano+dia+mês, extraido do campo DataSolicitacao acrescida de 00 + o campo Id e o que necessito é que quando eu mude o dia o último dígito seja reiniciado, ou seja, se eu digitar a data de hoje (01/10/2011) por exemplo: aparece 20110110/001, se digitar outras solicitações nesse mesmo dia vai numa sequência 20110110/002 e assim por diante, agora quando mudar para 02/10/2011 me retorne 20110210/001, ou seja, quando mudar o dia o último dígito seja reiniciado para o 1 novamente. Espero ter sido suscinto o suficiente na explicação, segue o link do meu BD para uma melhor análise dos amigos, meu office é o 2003.


    http://www.4shared.com/file/traZ1IsH/BD_online.html
    avatar
    Convidado
    Convidado


    [Resolvido]Reiniciar numeração Empty Re: [Resolvido]Reiniciar numeração

    Mensagem  Convidado 1/10/2011, 21:18

    Boas.. Fiz algo para ti..

    Em um módulo, função para extrair a quantidades de dias do mes
    Código:
    Option Compare Database

    Function DaysInMonth(dteDate As Date) As Integer
    '
    ' Returns the number of days in a month.
    ' Requires a date argument, since February can change if it's a leap year

      Select Case Month(dteDate)
        Case 2
          If LeapYear(Year(dteDate)) Then
            DaysInMonth = 29
          Else
            DaysInMonth = 28
          End If
      Case 4, 6, 9, 11
          DaysInMonth = 30
      Case 1, 3, 5, 7, 8, 10, 12
          DaysInMonth = 31
     End Select
    End Function
    Function LeapYear(Optional intYear As Integer) As Boolean
    '
    ' Leap Year from standard rules
    ' intYear: 4-digit year
    '
    If intYear = 0 Then
        intYear = Year(Date)
    End If

      LeapYear = intYear Mod 4 = 0 And (intYear Mod 100 <> 0 Or YYYY Mod 400 = 0)
    End Function

    No evento ao receber foco do Objeto Caledar:

    Private Sub ocxCalendar_GotFocus()
    'Adiciono na variável a quantidades de dias do referido mes
    DiasMes = DaysInMonth(DMax("DataSolicitacao", "Solicitação"))
    End Sub

    Esta variável está no inicio do módulo do form..

    No evento após atualizar do Objeto Objetivo:

    Private Sub Objetivo_AfterUpdate()
    'Variável que recebe o Ultimo dia do ultimo lançamento na tabela e a Ultima IDSolicitacao
    Dim LastDia As String, LastID As String
    'Se não há registros ainda na tabela, especifico a variável LastID como 1,
    'isso é necessário para adicionar o primeiro registro adicionado a data + 001 para o primeiro registro

    If DCount("IdSolicitacao", "Solicitação") = 0 Then
    LastID = 1
    Me.IdSolicitacao = Me.Text10.Value & "/" & "00" & LastID
    LastDia = Format(DataSolicitacao, "dd")
    ' Encerro o código.. o código acima será acinado somente na gravação do primeiro registro na tabela
    Exit Sub
    'Caso haja registros na tabela
    Else
    'Estraio o ultima parte da IDSolicitação para utilizá-la na nova IDSolicitaçao a ser criada
    LastID = Right(DMax("IdSolicitacao", "Solicitação"), 2)
    End If
    'Extraio o dia da última IDSolicitaçao
    LastDia = Mid(DMax("IdSolicitacao", "Solicitação"), 5, 2)
    'Aqui comparo o dia da última ID Solicitação e se for igual ao número de dias do mes.. reinicio
    'a variável lastId para 0

    If LastDia = DiasMes Then
    LastID = 0
    Me.IdSolicitacao = Me.Text10.Value & "/" & "00" & LastID + 1
    Me.IdSolicitacao.Visible = True
    Else
    'Aqui caso o dia da IDSolicitação nao seja igual a quantidades de dias no me continua incrementando
    Me.IdSolicitacao = Me.Text10.Value & "/" & "00" & LastID + 1
    Me.IdSolicitacao.Visible = True
    End If
    End Sub

    http://dl.dropbox.com/u/26441349/BetoGivoni_02_10_11.rar

    Cumprimentos

    avatar
    Convidado
    Convidado


    [Resolvido]Reiniciar numeração Empty Re: [Resolvido]Reiniciar numeração

    Mensagem  Convidado 1/10/2011, 21:23

    Apenas ao receber o foco do Objeto Caledar Substitua o código por este;

    Private Sub ocxCalendar_GotFocus()
    If DCount("IdSolicitacao", "Solicitação") = 0 Then
    Exit Sub
    End If
    'Adiciono na variável a quantidades de dias do referido mes
    DiasMes = DaysInMonth(DMax("DataSolicitacao", "Solicitação"))
    End Sub


    Se fica como está, para o primeiro registro dará uso de null inválido, pois ainda nao tem registros na tabela.

    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Reiniciar numeração Empty Re: [Resolvido]Reiniciar numeração

    Mensagem  Convidado 1/10/2011, 22:31

    ´Desculpe amigo, se minha primeira explicação não foi suscinta o suficiente, mas o que quero é quando eu mudar a data da solicitação e quando eu terminar de digitar o texto eu pressiono o F9 para salvar o registro, depois que confirmar no OK, vc observa no exmplo que postei vai aparecer nº da solicitação que é junção do ano+dia+mês dessa data da solicitação mais o cód ID com 2 00antecedendo a ele, di jeito que mandei está funcionando o problema é quando tro o dia que ele segue acontinuação, o que eu quero é ao mudar o dia essa sequência seja quebrada, ou seja, ao invés de continuar o 003 por exemplo que inicie novamente com o 001, mas só quando o dia for alterado, se eu fizer 4 solicitações no mesmo dia quero que continue do jeito que está no protótipo que postei, ou seja, se digitei as 4 solicitações hj, me apareça 20110110/001, 20110110/002, 20110110/003, 20110110/004, certo?
    avatar
    Renato Scheeren Zimmer
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 21
    Registrado : 12/07/2011

    [Resolvido]Reiniciar numeração Empty Reiniciar numeração

    Mensagem  Renato Scheeren Zimmer 2/10/2011, 03:58

    Oi,posso ajudar?
    tenho a seguinte função, que encontrei em algum forum uns dois anos atras e stá me ajudando bastante, só que para mim é anualmente, psta ajustar para seu uso

    Function proximoNumero() As String
    'Função que busca o último número do mês
    'e acrescenta um para criar o próximo

    Dim strSql As String
    Dim rstDoc As New ADODB.Recordset
    Dim numeroEncontrado As Integer

    'Cria a consulta SQL buscando os números do mês atual
    'em ordem descendente para que o último fique em primeiro
    strSql = "Select nrDocumento From Documento " & _
    "Where (nrDocumento Like '%" & Format(Date, "mm") & Format(Date, "yy") & "') " & _
    "Order By nrDocumento Desc"

    'Abre o recordset
    rstDoc.Open strSql, CurrentProject.Connection, adOpenStatic, adLockReadOnly

    'Se encontrou algum pega o primeiro
    'senão retorna zero
    If rstDoc.RecordCount > 0 Then
    numeroEncontrado = CInt(Left(rstDoc("nrDocumento"), 3))
    Else
    numeroEncontrado = 0
    End If

    'Próximo número = numero encontrado +1 mais o mês e ano atual com dois dígitos
    proximoNumero = Format(numeroEncontrado + 1, "000") & Format(Date, "mm") & Format(Date, "yy")

    'Fecha o recordset
    rstDoc.Close
    Set rstDoc = Nothing

    End Function
    avatar
    Convidado
    Convidado


    [Resolvido]Reiniciar numeração Empty Re: [Resolvido]Reiniciar numeração

    Mensagem  Convidado 2/10/2011, 21:25

    Ok amigo RSchZ, no momento não estou no meu pc, só vou poder testar o código na segunda e assim que testar respondo se serviu ou não, mas desde já agradeço pela dica. sds
    avatar
    Convidado
    Convidado


    [Resolvido]Reiniciar numeração Empty Re: [Resolvido]Reiniciar numeração

    Mensagem  Convidado 3/10/2011, 12:22

    Mais simples ainda amigão... Se tivesse um pouco mais de observação voce mesmo poderia ter modificado o código...
    Perdoe-me a opinião.. mas quando ajudamos não pretendemos resolver o seu problema sem que voce o entenda e aprenda, e sim ajudá-lo a entender a auxiliá-lo na solução, pois o maior objetivo aqui é o seu aprendizado, porem se não trabalhar encima das dicas de quem lhe ajuda e esperar soluções completamente prontas.. seu aprendizado nao evoluirá... Pense nisso.



    Private Sub Objetivo_AfterUpdate()
    'Variável que recebe o Ultimo dia do ultimo lançamento na tabela e a Ultima IDSolicitacao
    Dim LastDia As String, LastID As String
    'Se não há registros ainda na tabela, especifico a variável LastID como 1,
    'isso é necessário para adicionar o primeiro registro adicionado a data + 001 para o primeiro registro

    If DCount("IdSolicitacao", "Solicitação") = 0 Then
    LastID = 1
    Me.IdSolicitacao = Me.Text10.Value & "/" & "00" & LastID
    LastDia = Format(DataSolicitacao, "dd")
    ' Encerro o código.. o código acima será acinado somente na gravação do primeiro registro na tabela
    Exit Sub
    'Caso haja registros na tabela
    Else
    'Estraio o ultima parte da IDSolicitação para utilizá-la na nova IDSolicitaçao a ser criada
    LastID = Right(DMax("IdSolicitacao", "Solicitação"), 2)
    End If
    'Extraio o dia da última IDSolicitaçao
    LastDia = Mid(DMax("IdSolicitacao", "Solicitação"), 5, 2)
    'Aqui comparo o dia da última ID Solicitação e se for diferente da data escolhida no form reinicia a variável
    'a variável lastId para 0

    If LastDia <> Format(DataSolicitacao, "dd") Then
    LastID = 0
    Me.IdSolicitacao = Me.Text10.Value & "/" & "00" & LastID + 1
    Me.IdSolicitacao.Visible = True
    Else
    'Aqui caso o dia da IDSolicitação nao seja igual ao dia selecionado na data do form
    Me.IdSolicitacao = Me.Text10.Value & "/" & "00" & LastID + 1
    Me.IdSolicitacao.Visible = True
    End If
    End Sub[i]

    http://dl.dropbox.com/u/26441349/BetoGivoni_03_10_11.rar

    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Reiniciar numeração Empty Re: [Resolvido]Reiniciar numeração

    Mensagem  Convidado 3/10/2011, 13:00

    Caro amigo Harysohn as minhas sinceras desculpas pelo trabalho que vc teve com esse tópico, foi um erro meu não ter analizado o códio que foi passado anteriormente, é que estou em faze de reabertura da minha empresa e sinceramente não estavo com tempo suficiente para estudá-lo, meus sinceros agradecimentos ao seu tempo dispensado ao meu tópico
    avatar
    Convidado
    Convidado


    [Resolvido]Reiniciar numeração Empty Re: [Resolvido]Reiniciar numeração

    Mensagem  Convidado 3/10/2011, 14:30

    O Fórum agradece o retorno.

    Conteúdo patrocinado


    [Resolvido]Reiniciar numeração Empty Re: [Resolvido]Reiniciar numeração

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 11:51