1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
public function CalculerProchainNumero(prmUtilisateur as string) as string
on error goto Err_CalculerProchainNumero
dim result as string:result=""
dim prefixe as long
dim sufixe as integer
dim dateCourante as date
dim db as database:set db=currentDb
dim rCompteur as recordset
set rCompteur=db.openRecordset("Compteur")
rCompteur.edit:'Ca va bloquer la table le temps qu'on fasse les calculs. Si un autre utilisateur arrive dessus il va aller dans le traitement d'erreur et boucler jusqu'à ce que l'enr soit libéré.
dateCourrante=date():'Bon si t'es pas chanceux tu vas attraper la date juste avant minuit mais je ne pense pas que ce soit un pb.
if rCompteur![Date]<dateCourrante then
Prefixe=rCompteur![Prefixe]+1
Sufixe=0
end if
sufixe=rCompteur![Sufixe]+1
rCompteur![prefixe]=prefixe
rCompteur![sufixe]=sufixe
rCompteur![date]=dateCourrante
rCompteur.update:'Met à jour et libère le compteur pour un autre utilisateur.
rCompteur.close():set rCompteur=nothing
db.close:set db=nothing
result=format$("000000",prefixe) & prmUtilisateur & format$("00", sufixe)
CalculerProchainNumero=result
Exit_CalculerProchainNumero:
exit function
Err_CalculerProchainNumero:
select case err.number
case #mettre ici le num de l'erreur 'enr verouillé'#
'Si l'enr est vérouillé alors on reessaye
resume
case else
'Autre erreur : message d'erreur et sortie de la fonction
msgbox "Erreur : " & err.number & ", " & err.description, vbExclamation
end select
resume Exit_CalculerProchainNumero
end function |