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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gloops
Le #24022651
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 ?
Alberic MASPAC
Le #24024461
On 29 nov, 22:10, Choko
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
Albéric MASPAC
Le #24028071
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
Alberic MASPAC
Le #24033501
On 2 déc, 14:38, Alberic MASPAC
On 29 nov, 22:10, Choko




> 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
Publicité
Poster une réponse
Anonyme