Création et incrémentation d'un champ en fonction d'un
Le
Choko
Bonjour,
J'ai une base avec plusieurs parcours par jour que je récupère chaque s=
emaine.
J'aimerais ajouter un champ 'N°' me permettant d'avoir un numéro pour c=
haque parcours pour une date et bien sûr je ne vois pas par où commence=
r.
J'imagine ne boucle sur une clé DATE_PARCOURS mais après
Ex:
DATE PARCOURS N°
10/11/2011 PAR MSR 1
10/11/2011 PAR TLN 2
10/11/2011 PAR MSR 3
10/11/2011 STR NTS 4
--
12/11/2011 NCE AIX 1
12/11/2011 LIL PAR 2
--
15/11/2011 PAR LYN 1
etc.
Merci pour votre aide
Choko
J'ai une base avec plusieurs parcours par jour que je récupère chaque s=
emaine.
J'aimerais ajouter un champ 'N°' me permettant d'avoir un numéro pour c=
haque parcours pour une date et bien sûr je ne vois pas par où commence=
r.
J'imagine ne boucle sur une clé DATE_PARCOURS mais après
Ex:
DATE PARCOURS N°
10/11/2011 PAR MSR 1
10/11/2011 PAR TLN 2
10/11/2011 PAR MSR 3
10/11/2011 STR NTS 4
--
12/11/2011 NCE AIX 1
12/11/2011 LIL PAR 2
--
15/11/2011 PAR LYN 1
etc.
Merci pour votre aide
Choko

Poser une question


Bonjour,
On les récupère comment, les parcours ?
Bonjour Choko,
Deux possibilités : une procédure VBA pour mettre à jour la table
"après coup".
Une seconde dans un formulaire d'encodage pour les nouveaux
enregistrements.
Dans le premier cas, il faut référencer dans VBA (outils, Référence s)
"Microsoft ActiveX Data Objects 2.x Library"
La table s'appelle ici Tbl_Parcours, la date est dans le champ P_Date
et n° dans le champ P_Nr
Option Compare Database
Option Explicit
Sub Nr_Parcours()
Dim I As Long, dD As Date, N As Long
Dim Rst As New ADODB.Recordset
Dim CN As ADODB.Connection
Set CN = CurrentProject.Connection
Rst.Open "Tbl_Parcours", CN, adOpenStatic, adLockOptimistic
For I = 1 To Rst.RecordCount
If dD <> Rst("p_Date") Then
N = 1
dD = Rst("p_date")
Else
N = N + 1
End If
Rst("P_Nr") = N
Rst.Update
Rst.MoveNext
Next
Set Rst = Nothing
Set CN = Nothing
End Sub
Dans un formulaire basé sur la table. Sans zone pour le N°
Private Sub Form_BeforeUpdate(Cancel As Integer)
If IsNull(Me.P_Nr) Then
Me.P_Nr = Nz(DMax("P_Nr", "Tbl_Parcours", "P_Date=#" &
Me.P_Date & "#"), 0) + 1
End If
End Sub
J'ai fait une grosse erreur à la première solution : il faut trier les
enregistrements par date.
Cela devrait être quelque chose comme Rst.Open "Select * from Tbl_Parcours
order by p_date", CN, adOpenStatic, adLockOptimistic
Cdt,
Albéric
Attention, il faut trier par date !
Rst.Open "SELECT *, P_Date FROM Tbl_Parcours ORDER BY P_Date;", CN,
adOpenStatic, adLockOptimistic