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

VBA Access Discussion :

Incrémentation d'un champ numérique avec critère


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 121
    Points : 61
    Points
    61
    Par défaut Incrémentation d'un champ numérique avec critère
    Bonsoir,
    Dans un formulaire j'ai une liste déroulante(cmbA valeurs : 511,513,514,530) et un sous formulaire dont les champs sont :
    CodeSecretID (numerique)
    iEleveID (numerique)
    sEleveNomPrenom(texte)
    les champs iEleveID et sEleveNomPrenom sont deja saisies .
    mon problème et que je veux à chaque choix de (cmbA) le [CodeSecretID ] s’incrémente automatiquement à la saisie le premier numéro.
    Merci pour l'aide.

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Bonjour

    Regardez du côté de la fonction DMax qui renverra la valeur la plus haute en fonction du critère. Il suffira d'ajouter 1 à cette valeur pour trouver votre nouvel id

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Attention DMax en environnement multi utilisateur peut retourner à 2 postes différents le même maximum. Il faudra gérer le cas ou les 2 postes calculent le même nouveau numéro.

    A+

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Oui, c'est vrai. Mais bon, sans Access 2010, difficile d'espérer mieux. Cependant si le calcul est fait sur l’événement BeforeUpdate, il est peu probable que deux utilisateurs fassent une entrée simultanée avec le même critère.

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Oui, c'est vrai. Mais bon, sans Access 2010, difficile d'espérer mieux.
    Tu as raison, Access 2010 simplifie le problème mais pour les versions antérieure, on peut écrire une fonction VBA qui gère cela en "bloquant" le calcul du numéro si quelqu'un d'autre est dedans ou simplement redemander DMax() suite à une erreur de doublon de clef primaire ou d'index unique.

    Bon évidement si on est très malchanceux, avec la 2ième solution, on pourrait imaginer une boucle infinie de DMax() mais ça c'est vraiment TRÈS improbable :-).

    A+

  6. #6
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Je n'avais pas vu le tag Access 2010 dans le titre.

    Voici un exemple de numérotation avec Access 2010 :

    http://warin.developpez.com/tutoriel...s/numauto2010/

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2013
    Messages : 18
    Points : 9
    Points
    9
    Par défaut
    Bonsoir,
    je suis très honte de dire que je suis encore débutant en ACCESS et dans ce tuto j'ai trouvé beaucoup de données et codes je ne sais pas par quoi je dois commencer je suis vraiment bouleversé.
    Merci pour votre attention.

  8. #8
    Membre du Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Août 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 121
    Points : 61
    Points
    61
    Par défaut
    Bonjour,
    est ce que c'est le code que je dois écrire pour mon champ CodeSecretID et le where pour cmbA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    If [IsInsert] Then
      SetLocalVar (VIndice;1)
      LookUp A Record In tblIndiceFacture
         WHERE  [ANNEE]=Year([tblFacture].[DateFacture]) AND [MOIS]=Month([tblFacture].[DateFacture]) 
         ALIAS  record
     
         If (IsNUll([Indice]) Then
           SetLocalVar([vIndice];1)
         Else
           SetLocalVar([vIndice];[Indice]+1)
         End If   
     
      SetField ([Indice];[vIndice])
    End If
    merci.

Discussions similaires

  1. [AC-2003] Champ Numérique avec incrémentation
    Par sassene dans le forum VBA Access
    Réponses: 1
    Dernier message: 02/07/2010, 11h29
  2. Réponses: 0
    Dernier message: 17/04/2009, 15h12
  3. Incrémenter un champ numérique avec UPDATE
    Par boteha dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/02/2009, 09h31
  4. [RegEx] Tester la saisie d'un champ numérique avec virgule
    Par p_m_g dans le forum Langage
    Réponses: 1
    Dernier message: 30/12/2007, 22h36
  5. remplir un champ numérique avec 0
    Par 18Marie dans le forum SQL
    Réponses: 4
    Dernier message: 16/02/2007, 11h46

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