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
| Option Compare Database
Option Explicit
Function increment_avec_date()
'cette fonction crée la table Table2 qui n'est rien d'autre qu'une copie de la Table1 ordonnée
'par Jour Ascendant
'Je parcours la table Table2 du début à la fin et je mets à jour le champ Compteur : pour
'chaque changement de jour, je remets mon compteur à zéro
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim strSQL As String
Dim i As Integer
Dim dtJourPrec As Date
Dim strCompteur As String
'Je ne peux pas créer une table qui existe déjà. Donc pour éviter une erreur, je supprime
'la Table2.
'Si j'essaye de supprimer une table qui n'existe pas, MS Access me donnera une erreur.
'Alors, ici je dis à MS Access, "si tu vois une erreur, reprends à la ligne suivante"
strSQL = "DROP TABLE Table2"
On Error Resume Next 'Je sais que ce DROP TABLE peut générer une erreur si la table a déjà été détruite
DoCmd.RunSQL strSQL
On Error GoTo 0 'Si une autre erreur devait survenir, je veux la voir pour débugger. Après on fera mieux....
'Ceci est une "make table query" qui va te créer une table
strSQL = "SELECT Table1.Jour, Table1.MonChamp, '' AS Compteur INTO Table2 FROM Table1 ORDER BY Table1.Jour"
Application.CurrentDb.Execute strSQL 'une autre manière, plus élégante, d'exécuter le statement SQL
'si tu interromps le code ici, tu peux voir la table2
Set db = Application.CurrentDb
Set rst = db.OpenRecordset("Table2")
dtJourPrec = #1/1/1900#
i = 1
rst.MoveFirst
Do Until rst.EOF
If rst!jour = dtJourPrec Then
'si le Jour = jour precedent, alors on continue avec le meme compteur sinon on remet le compteur à zéro
i = i + 1
Else
i = 1
End If
dtJourPrec = rst!jour
strCompteur = Right("000" & i, 3)
rst.Edit
rst!Compteur = strCompteur
rst.Update
rst.MoveNext
Loop
Set rst = Nothing
Set db = Nothing
'regarde maintenant ta Table2. Tu peux la mettre facilement dans ton formulaire
End Function |
Partager