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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
Public Sub CalculerNouveauNumDossier(prmClefPeriode As Long, prmTypeFacturation As Variant)
'La création du compteur doit être fait lors de la création de la période.
If Not MODE_DEBUG Then
On Error GoTo Err_CalculerNouveauNumDossier
End If
Dim db As Database: Set db = CurrentDb
Dim ClefTypeFacturation As Long
Dim CodeTypeFacturation As String
Select Case VarType(prmTypeFacturation)
Case vbString
ClefTypeFacturation = LireClefTypeFacturation((prmTypeFacturation))
CodeTypeFacturation = prmTypeFacturation
Case vbLong, vbInteger, vbDouble
ClefTypeFacturation = prmTypeFacturation
CodeTypeFacturation = LireCodeTypeFacturation((prmTypeFacturation))
Case Else
Error 5
End Select
'Lire l'année du compteur
Dim Annee As Integer
Dim rPeriode As Recordset: Set rPeriode = db.OpenRecordset("Periode", dbOpenDynaset)
Call rPeriode.FindFirst("[Clef]=" & prmClefPeriode)
If Not rPeriode.NoMatch Then
Annee = Year(rPeriode![DateDebut])
Else
Error 3709: 'Clef non trouvée
End If
rPeriode.Close: Set rPeriode = Nothing
m_Annee = Annee
'Lire le code court
Dim rTypeFacturation As Recordset: Set rTypeFacturation = db.OpenRecordset("TypeFacturation", dbOpenDynaset)
rTypeFacturation.FindFirst ("[Clef]=" & ClefTypeFacturation)
If Not rTypeFacturation.NoMatch Then
m_Code = rTypeFacturation![CodeCourt]
Else
Error 3709: 'Clef non trouvée
End If
rTypeFacturation.Close: Set rTypeFacturation = Nothing
'Calculer le nouveau numéro séquentiel
Dim rCompteur As Recordset: Set rCompteur = db.OpenRecordset("Compteur", dbOpenDynaset)
Call rCompteur.FindFirst("[ClefTypeFacturation]=" & ClefTypeFacturation & " and [Annee]=" & Annee)
Dim nouveauNumSeq As Long
If Not rCompteur.NoMatch() Then
RepriseSurVerouillage:
rCompteur.Edit
nouveauNumSeq = rCompteur![DernierNumSeq] + 1
rCompteur![DernierNumSeq] = nouveauNumSeq
rCompteur.Update
Else
Error 5: 'Clef non trouvée
End If
rCompteur.Close: Set rCompteur = Nothing
db.Close: Set db = Nothing
m_NumSequence = nouveauNumSeq
Exit_CalculerNouveauNumDossier:
Exit Sub
Err_CalculerNouveauNumDossier:
Select Case Err.Number
Case 3046, 3158, 3186, 3187, 3188, 3202, 3218, 3260, 3330, 3624
'Boucle tant que le compteur est vérouillé
Resume RepriseSurVerouillage
Case Else
Call AfficherMessErrStandard(Err)
Resume Exit_CalculerNouveauNumDossier
End Select
End Sub |
Partager