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 mesDiasMes = 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 IDSolicitacaoDim 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 registroIf 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 tabelaExit Sub
'Caso haja registros na tabelaElse
'Estraio o ultima parte da IDSolicitação para utilizá-la na nova IDSolicitaçao a ser criadaLastID = Right(DMax("IdSolicitacao", "Solicitação"), 2)
End If
'Extraio o dia da última IDSolicitaçaoLastDia = 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 0If 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 incrementandoMe.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