boa tarde
venho solicitar ajudar para criar um campo chave primaria onde o que pretendo é que surja o seguinte formato de nº
710201300001
onde 710 é um fixo
2013 o ano em curso
00001 a numeração automática para cada registo efectuado
deve manter sempre este formato
(estou tentando criar um módulo mas aparece-me sempre o seguinte formato 000071020131, não estou a ver como dar a volta)
desde já obrigado pela ajuda,
eis o código que estou a usar:
Option Compare Database
Option Explicit
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 = ("710" & AnoData) & 1
Else
strMax = tbl(strCampo)
CampoAno = Mid(strMax, (InStr(1, strMax)) + 1, 5)
If CampoAno = AnoData Then
strNum = Right(strMax, (InStr(1, strMax) - 1)) + 1
ContadorDeRegistros = ("710" & AnoData) & strNum
Else
MsgBox "O sistema iniciará uma nova contagem dos registos" _
& vbCrLf & " em função da mudança do ano", vbInformation, "ATENÇÃO"
ContadorDeRegistros = ("710" & AnoData) & 1
End If
End If
ContadorDeRegistros = StrZero(ContadorDeRegistros, 12)
tbl.Close
Set DB = Nothing
End Function
Public Function StrZero(nNumero As Variant, nCasas As Integer)
StrZero = Right("000000000000" + LTrim(nNumero), nCasas)
End Function
venho solicitar ajudar para criar um campo chave primaria onde o que pretendo é que surja o seguinte formato de nº
710201300001
onde 710 é um fixo
2013 o ano em curso
00001 a numeração automática para cada registo efectuado
deve manter sempre este formato
(estou tentando criar um módulo mas aparece-me sempre o seguinte formato 000071020131, não estou a ver como dar a volta)
desde já obrigado pela ajuda,
eis o código que estou a usar:
Option Compare Database
Option Explicit
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 = ("710" & AnoData) & 1
Else
strMax = tbl(strCampo)
CampoAno = Mid(strMax, (InStr(1, strMax)) + 1, 5)
If CampoAno = AnoData Then
strNum = Right(strMax, (InStr(1, strMax) - 1)) + 1
ContadorDeRegistros = ("710" & AnoData) & strNum
Else
MsgBox "O sistema iniciará uma nova contagem dos registos" _
& vbCrLf & " em função da mudança do ano", vbInformation, "ATENÇÃO"
ContadorDeRegistros = ("710" & AnoData) & 1
End If
End If
ContadorDeRegistros = StrZero(ContadorDeRegistros, 12)
tbl.Close
Set DB = Nothing
End Function
Public Function StrZero(nNumero As Variant, nCasas As Integer)
StrZero = Right("000000000000" + LTrim(nNumero), nCasas)
End Function