Access: Numéros d'enregistrements annuels

Le
spiritspy
Bonjour,
Je replace mon sujet ici, il était dans Visual Basic, j'ai mal dirigé ma demande je pense.
Dans une base Access, je créé des dossiers commandes, il peut y en avoir plusieurs par jour et ceci tout au long de l'année.
Je sais que chaque dossier est un enregistrement avec une numérotation automatique, mais je voudrais que ma base créé automatiquement un numéro de dossier style 08-0123 (année-numéro d'ordre partant de zéro au début de l'année pour la classification).
- Combien de champs dois-je créer ? 1 texte ou 2 numériques,
- Et quelle manip en VB pour analyser la présence d'enregistrement depuis le 1er janvier minuit de l'année en cours ?

Je travaille sous Access 2003, avec un niveau moyen en autodidacte.
Merci d'avance pour toute réponse.
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
Michel__D
Le #16570441
Bonjour,

Si je peux me permettre, comme c'est des enregistrements liés à des dossiers
commandes je suppose qu'il doit y avoir un champ date de création du dossier
et s'il n'y en a pas il faudrait fortement songer à en mettre et donc avec ce champ
qui te permet d'extraire l'année il est facile de répondre à ton besoin.

PS:Pour ce qui est du numéro d'ordre qui part de 0 en début d'année, explique
pourquoi il t'est nécessaire car sinon tu as toutes les infos à ta disposition sans
rajouter de champ supplémentaire.


"spiritspy"
Bonjour,
Je replace mon sujet ici, il était dans Visual Basic, j'ai mal dirigé ma
demande je pense.
Dans une base Access, je créé des dossiers commandes, il peut y en avoir
plusieurs par jour et ceci tout au long de l'année.
Je sais que chaque dossier est un enregistrement avec une numérotation
automatique, mais je voudrais que ma base créé automatiquement un numéro de
dossier style 08-0123 (année-numéro d'ordre partant de zéro au début de l'année
pour la classification).
- Combien de champs dois-je créer ? 1 texte ou 2 numériques,
- Et quelle manip en VB pour analyser la présence d'enregistrement depuis le
1er janvier minuit de l'année en cours ?

Je travaille sous Access 2003, avec un niveau moyen en autodidacte.
Merci d'avance pour toute réponse.


spiritspy
Le #16570811
Michel__D a écrit le 18/08/2008 à 10h58 :
Bonjour,

Si je peux me permettre, comme c'est des enregistrements liés à
des dossiers
commandes je suppose qu'il doit y avoir un champ date de création du
dossier
et s'il n'y en a pas il faudrait fortement songer à en mettre et donc
avec ce champ
qui te permet d'extraire l'année il est facile de répondre
à ton besoin.

PS:Pour ce qui est du numéro d'ordre qui part de 0 en début
d'année, explique
pourquoi il t'est nécessaire car sinon tu as toutes les infos à
ta disposition sans
rajouter de champ supplémentaire.


"spiritspy" a écrit dans le
message de news:
Bonjour,
Je replace mon sujet ici, il était dans Visual Basic, j'ai mal
dirigé ma
demande je pense.
Dans une base Access, je créé des dossiers commandes, il peut y
en avoir
plusieurs par jour et ceci tout au long de l'année.
Je sais que chaque dossier est un enregistrement avec une numérotation
automatique, mais je voudrais que ma base créé automatiquement
un numéro de
dossier style 08-0123 (année-numéro d'ordre partant de
zéro au début de l'année
pour la classification).
- Combien de champs dois-je créer ? 1 texte ou 2 numériques,
- Et quelle manip en VB pour analyser la présence d'enregistrement
depuis le
1er janvier minuit de l'année en cours ?

Je travaille sous Access 2003, avec un niveau moyen en autodidacte.
Merci d'avance pour toute réponse.





Merci de ta réponse Michel_D,
J'avais pensé à mettre un champs de la date de création, d'où j'en extrais effectivement l'année en cours.
Pour ce qui est du numéro d'ordre, le nombre de dossiers créés par année étant conséquent et totalement aléatoire, je ne peux pas me permettre de faire juste une incrémentation de la base depuis la création, j'aurais des valeurs énormes d'ici 3 à 5 ans ... et pour la gestion des recherches dans les dossiers, c'est plus parlant.
En fait, je ne sais pas compter le nombre d'enregistrements comportant la valeur de l'année en cours par exemple, je pars peut-être avec une idée faussée, si je peux vérifier l'existence de l'année 2008 et compter combien d'enregistrements l'ont, mon problème est résolu. J'ai la logique mais pas la connaissance pour le mettre en œuvre.
Merci d'avance de votre aide.
Michel__D
Le #16571541
re,

"spiritspy"
Michel__D a écrit le 18/08/2008 à 10h58 :
> Bonjour,
>
> Si je peux me permettre, comme c'est des enregistrements liés à
> des dossiers
> commandes je suppose qu'il doit y avoir un champ date de création du
> dossier
> et s'il n'y en a pas il faudrait fortement songer à en mettre et donc
> avec ce champ
> qui te permet d'extraire l'année il est facile de répondre
> à ton besoin.
>
> PS:Pour ce qui est du numéro d'ordre qui part de 0 en début
> d'année, explique
> pourquoi il t'est nécessaire car sinon tu as toutes les infos à
> ta disposition sans
> rajouter de champ supplémentaire.
>
>
> "spiritspy" a écrit dans le
> message de news:
>> Bonjour,
>> Je replace mon sujet ici, il était dans Visual Basic, j'ai mal
>> dirigé ma
>> demande je pense.
>> Dans une base Access, je créé des dossiers commandes, il peut y
>> en avoir
>> plusieurs par jour et ceci tout au long de l'année.
>> Je sais que chaque dossier est un enregistrement avec une numérotation
>> automatique, mais je voudrais que ma base créé automatiquement
>> un numéro de
>> dossier style 08-0123 (année-numéro d'ordre partant de
>> zéro au début de l'année
>> pour la classification).
>> - Combien de champs dois-je créer ? 1 texte ou 2 numériques,
>> - Et quelle manip en VB pour analyser la présence d'enregistrement
>> depuis le
>> 1er janvier minuit de l'année en cours ?
>>
>> Je travaille sous Access 2003, avec un niveau moyen en autodidacte.
>> Merci d'avance pour toute réponse.
>>
Merci de ta réponse Michel_D,
J'avais pensé à mettre un champs de la date de création, d'où j'en extrais
effectivement l'année en cours.



Je pense que c'est indispensable.

Pour ce qui est du numéro d'ordre, le nombre de dossiers créés par année étant
conséquent et totalement aléatoire, je ne peux pas me permettre de faire juste
une incrémentation de la base depuis la création, j'aurais des valeurs énormes
d'ici 3 à 5 ans ... et pour la gestion des recherches dans les dossiers, c'est
plus parlant.
En fait, je ne sais pas compter le nombre d'enregistrements comportant la
valeur de l'année en cours par exemple, je pars peut-être avec une idée faussée,
si je peux vérifier l'existence de l'année 2008 et compter combien
d'enregistrements l'ont, mon problème est résolu. J'ai la logique mais pas la
connaissance pour le mettre en œuvre.
Merci d'avance de votre aide.



Voici le SQL pour compter le nombre d'enregistrement par rapport à l'année :

SELECT Year(LeChampDate) AS Annee, Count(ClePrimaire) AS NbEnr
FROM LaTable
GROUP BY Year(LeChampDate);

Que tu peux limiter à une année précise en rajoutant une clause where au
SQL précédent, ce qui pourrait donner ceci par exemple pour l'année en cours :

SELECT Year(LeChampDate) AS Annee, Count(ClePrimaire) AS NbEnr
FROM LaTable
WHERE Year(LeChampDate)=Year(Date())
GROUP BY Year(LeChampDate);

PS:Voir aussi les fonctions de regroupement Domaine.
Spiritspy
Le #17669211
Merci encore mais malgré ton aide (très précieuse), je n'arrive à rien, alors
j'ai changé totalement de façon de faire la chose, mais il se trouve que ma
nouvelle technique est plus proche apparemment de l'ancienne, voici mon code:

Private Sub Creation_Dossier_Click()

Me.Requery

' Vérif et incrémentation de N_Annuel

If DLookup("[max]", "R_Dossier") + 1 >= 1 Then
N_Annuel = DLookup("[max]", "R_Dossier") + 1
Else
N_Annuel = 1
End If

' Création de la box affichant le numéro de dossier

Num_Affaire = "Dossier" & Format([Date_Ouverture], "yyyy") & "-" & [N_Annuel]

MsgBox "Le Dossier créé est le " & Num_Affaire, vbInformation, "Dossier Créé"

End Sub

Avec R_Dossier, une requête dont le code SQL est:

SELECT Format([Date_Ouverture],"yyyy") AS critère,
Max(T_SYD_Affaire.N_Annuel) AS [max]
FROM T_SYD_Affaire
GROUP BY Format([Date_Ouverture],"yyyy")
HAVING (((Format([Date_Ouverture],"yyyy"))=[forms]![F_SYD_Affaire]![Annee]))
ORDER BY Max(T_SYD_Affaire.N_Annuel);

max est le nombre de dossiers crées compté par regroupement.
T_SYD_Affaire est ma table principale
Annee contient l'année en cours pour le dossier
N_Annuel, est le nombre de dossiers crées dans l'année du dossier

Mais mon numéro d'ordre Num_Affaire ne s'incrémente pas ... il le charge
dans mon premier enregistrement.
J'avoue que j'en perds mon Latin, que d'ailleurs je n'ai pas appris ...
A l'aide s'il vous plait, c'est cette fonction de classement qui bloque mon
projet.

Merci d'avance.
Spiritspy
Le #17669201
Oupss .. désolé Michel_D j'ai été trop rapide, mais ton:

SELECT Year(LeChampDate) AS Annee, Count(ClePrimaire) AS NbEnr
FROM LaTable
WHERE Year(LeChampDate)=Year(Date())
GROUP BY Year(LeChampDate);

Fonctionne parfaitement, une lumière (voir un soupçon de clairvoyance) m'a
aidé, mais il me le place sur le premier enregistrement ... en calculant
correctement ...

Aides moi s'il te plait, je touche au but, c'est bête tout pour placer cet
enregistrement et je suis soulagé.
Publicité
Poster une réponse
Anonyme