Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Création et incrémentation d'un champ en fonction d'un

4 réponses
Avatar
Choko
Bonjour,

J'ai une base avec plusieurs parcours par jour que je r=E9cup=E8re chaque s=
emaine.
J'aimerais ajouter un champ 'N=B0' me permettant d'avoir un num=E9ro pour c=
haque parcours pour une date et bien s=FBr je ne vois pas par o=F9 commence=
r.
J'imagine ne boucle sur une cl=E9 DATE_PARCOURS mais apr=E8s...

Ex:
DATE PARCOURS N=B0
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

4 réponses

Avatar
Gloops
Choko a écrit, le 29/11/2011 22:10 :
Bonjour,

J'ai une base avec plusieurs parcours par jour que je récupère chaq ue semaine.
J'aimerais ajouter un champ 'N°' me permettant d'avoir un numéro po ur chaque parcours pour une date et bien sûr je ne vois pas par où co mmencer.
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



Bonjour,

On les récupère comment, les parcours ?
Avatar
Alberic MASPAC
On 29 nov, 22:10, Choko wrote:
Bonjour,

J'ai une base avec plusieurs parcours par jour que je récupère chaque semaine.
J'aimerais ajouter un champ 'N°' me permettant d'avoir un numéro pour chaque parcours pour une date et bien sûr je ne vois pas par où commen cer.
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



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
Avatar
Albéric MASPAC
Bonjour,

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
Avatar
Alberic MASPAC
On 2 déc, 14:38, Alberic MASPAC wrote:
On 29 nov, 22:10, Choko wrote:





> Bonjour,

> J'ai une base avec plusieurs parcours par jour que je récupère chaq ue semaine.
> J'aimerais ajouter un champ 'N°' me permettant d'avoir un numéro po ur chaque parcours pour une date et bien sûr je ne vois pas par où comm encer.
> 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

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éren ces)
"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- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -



Attention, il faut trier par date !
Rst.Open "SELECT *, P_Date FROM Tbl_Parcours ORDER BY P_Date;", CN,
adOpenStatic, adLockOptimistic