vieirasoft 28/5/2011, 11:11
Adapte ou utilize e bom trabalho tem 2 à sua escolha
Função Contador no formato número/ano
Public Function ContadorDeRegistros(strCampo As String, strSql As String)
'Contador de registros personalizado no formato numero/ano
Dim strNum As String, DB As Database
Dim strMax As String, CampoAno As String
Dim AnoData As String, tbl As Recordset
Set DB = CurrentDb
'Ano tirado da data do sistema
AnoData = Year(Date)
'Abre a Tabela
Set tbl = DB.OpenRecordset(strSql)
'Se não há registros na tabela
If tbl.RecordCount = 0 Then
'Primeiro registro
ContadorDeRegistros = 1 & "/" & AnoData
Else
'pega o registro
strMax = tbl(strCampo)
'Pega o ano
CampoAno = Mid(strMax, (InStr(1, strMax, "/")) + 1, 4)
'Aqui testo o Ano do último registro com o do sistema
'Se for igual continue a contagem se não...
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
'formata o número
ContadorDeRegistros = StrZero(ContadorDeRegistros, 10)
tbl.Close
Set DB = Nothing
End Function
....................................................................................
Contador no formato número/mês/ano
Public Function ContarReg(NomeCampo As String, NomeTabela As String)
'Contador de registros personalizado no formato numero/mes/ano
Dim DB As Database
Dim tbl As Recordset, strNum As String
Dim strMax As String, CampoMes As String
Dim MesData As String, AnoData As String
Set DB = CurrentDb
MesData = Format(Date, "mmm")
AnoData = Format(Date, "yy")
Set tbl = DB.OpenRecordset(NomeTabela)
If tbl.RecordCount = 0 Then
'Primeiro registro
ContarReg = 1 & "/" & MesData & "/" & AnoData
Else
'pega o registro
strMax = tbl(NomeCampo)
'Aqui pego o mês no último registro
CampoMes = Mid(strMax, (InStr(1, strMax, "/")) + 1, 3)
'Aqui testo o mês digitado com o último registro
'Se for igual então
If CampoMes = MesData Then
strNum = Left(strMax, (InStr(1, strMax, "/") - 1)) + 1
ContarReg = strNum & "/" & CampoMes & "/" & AnoData
Else
Dim intRes As Integer
intRes = MsgBox("O sistema iniciará uma nova contagem pela virada do mês." _
& Chr(10) + Chr(13) & "Você confirma?", vbYesNo, "Atenção")
If intRes = vbYes Then 'respondeu sim
ContarReg = 1 & "/" & MesData & "/" & AnoData
Else 'continua a contagem atual
strNum = Left(strMax, (InStr(1, strMax, "/") - 1)) + 1
ContarReg = strNum & "/" & CampoMes & "/" & AnoData
End If
End If
End If
tbl.Close
Set DB = Nothing
'formata o número
ContarReg = StrZero(ContarReg, 11)
End Function