IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Ajouter une date à un numéro sous Access


Sujet :

Access

  1. #1
    Membre éclairé
    Homme Profil pro
    administartion
    Inscrit en
    Avril 2017
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : administartion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2017
    Messages : 379
    Par défaut Ajouter une date à un numéro sous Access
    bonjour,

    j'ai un bouton qui passe à un nouvel enregistrement et en même temp un numéro séquentiel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub Commande5_Click()
    On Error GoTo Err_Commande6_Click
     
        DoCmd.GoToRecord , , acNewRec
     OrderNumber = DMax("OrderNumber", "OrderT") + 1
    Exit_Commande6_Click:
        Exit Sub
     
    Err_Commande6_Click:
        MsgBox Err.Description
        Resume Exit_Commande6_Click
     
     
    'OrderNumber = DMax("OrderNumber", "OrderT") + 1
    End Sub
    la question est comment ajouter une année avec le numero:
    exemple: 0001/2025

    si je suis au 2026 ca devien 0001/2026....etc

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 040
    Par défaut
    Puisque tu veux obtenir le format 0001/2025, OrderNumber est donc un String


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ' n:  nombre max : le max des 4 premiers de le colonne 
    n= left(nz(dmax("OrderNumber ","OrderT","mid(OrderNumber ,6,4) ='" & year(date) & "'"),0) ,4)
    ' Vois les fonctions left, Nz et mid dans l'aide via F1
     
    OrderNumber = format(n+1, "0000/") & year(date)

  3. #3
    Membre éclairé
    Homme Profil pro
    administartion
    Inscrit en
    Avril 2017
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : administartion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2017
    Messages : 379
    Par défaut
    bjr,

    en actionnant le bouton message valeur non valide pour ce champ me donne la valeur de zero aucune incrémentation en sachant que "OrderNumber" est numérique dans la table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Private Sub Commande5_Click()
    On Error GoTo Err_Commande6_Click
     
        DoCmd.GoToRecord , , acNewRec
     
        ' n:  nombre max : le max des 4 premiers de le colonne dans 
    n = Left(Nz(DMax("OrderNumber ", "OrderT", "mid(OrderNumber ,6,4) ='" & Year(Date) & "'"), 0), 4)
    ' Vois les fonctions left, Nz et mid dans l'aide via F1
     
    OrderNumber = Format(n + 1, "0000/") & Year(Date)
     
    ' OrderNumber = DMax("OrderNumber", "OrderT") + 1
     
     
    Exit_Commande6_Click:
        Exit Sub
     
    Err_Commande6_Click:
        MsgBox Err.Description
        Resume Exit_Commande6_Click
     
    'OrderNumber = DMax("OrderNumber", "OrderT") + 1
    End Sub

  4. #4
    Membre très actif Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 941
    Par défaut
    Bonjour,
    Par expérience, une table de compteurs par année résoudrait cette règle de numérotation simplement
    Cela me parait évident
    Bon DEV
    .

  5. #5
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 040
    Par défaut
    ... en sachant que "OrderNumber" est numérique dans la table
    "OrderNumber" ne peut pas être numérique puisque tu y stockes un format comme 0002/2025

  6. #6
    Membre éclairé
    Homme Profil pro
    administartion
    Inscrit en
    Avril 2017
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : administartion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2017
    Messages : 379
    Par défaut
    merci ca fonctionne bien en mettant le champ teste cour.
    j'ai un autre souci je voudrai interdire de passer à un autre enregistrement si ordernumer est vide. j'ai essayé de mettre le champ nul vide interdit ===>oui ca marche en vba c'est comment

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub OrderNumber_AfterUpdate()
     
    If Me.OrderNumber = "" Then
        MsgBox ("Veuillez ajouter un nouvel enregistrement")
    Else
        rs.AddNew
        rs!OrderNumber = Me.OrderNumber
     
    End If
     
    End Sub

  7. #7
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    3 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 040
    Par défaut
    Alors, tu peux mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub OrderNumber_AfterUpdate()
     
    If nz(Me.OrderNumber) = "" Then
    '   si OrderNumber est vide ou nul
        MsgBox ("Veuillez ajouter un nouvel enregistrement")
    Else
        rs.AddNew
        rs!OrderNumber = Me.OrderNumber
    End If
     
    End Sub

  8. #8
    Membre éclairé
    Homme Profil pro
    administartion
    Inscrit en
    Avril 2017
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : administartion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2017
    Messages : 379
    Par défaut
    bjr,

    ca ne fonctionne pas car j'ai testé en passant d'un enregistrement à autre sans blocage !??
    A savoir que le code est placé après mise à jour.

    Nom : ORDER.jpg
Affichages : 39
Taille : 65,5 Ko

  9. #9
    Membre éclairé
    Homme Profil pro
    administartion
    Inscrit en
    Avril 2017
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : administartion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2017
    Messages : 379
    Par défaut
    bonjour,
    sa fonctionne avec ce code....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Form_BeforeUpdate(Cancel As Integer)
     
        If IsNull(Me.OrderNumber) Or Me.OrderNumber = "" Then
            MsgBox "Le champ OrderNumber ne peut pas être vide...veuillez actionner le bouton", vbExclamation, "Erreur"
            Cancel = True 
        End If
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2013] Ajout d'une entrée texte dans une gestion des stocks sous Access
    Par Ikart dans le forum VBA Access
    Réponses: 9
    Dernier message: 16/05/2016, 11h34
  2. Réponses: 1
    Dernier message: 17/05/2006, 15h27
  3. execute une macro via vba sous access
    Par nes dans le forum Access
    Réponses: 4
    Dernier message: 28/03/2006, 23h15
  4. forcer la date en francais sous access
    Par nes dans le forum ASP
    Réponses: 1
    Dernier message: 18/03/2006, 21h31
  5. Réponses: 5
    Dernier message: 13/12/2005, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo