none
Auto Number RRS feed

  • Question

  • Bonjour,

    J’ai un formulaire liée à une table avec AutoNumber.

    Dans les proprietes du form j’ai

    Allow Edits = Yes

    Allow Deletions = Yes

    Allow Additions = Yes

    Data Entry = Yes

    Donc, à chaque ouverture du form je me positionne dans un nouveau enregistrement.

    J’ai deux boutons (Ok et Annuler) pour valider ou non les enregistrements.

    Si je clique dans le bouton « Annuler », ou j’ai mis les commands « Me.Undo, DoCmd.Close acForm »j’annule les enregistrements, mais à la nouvelle ouverture du form j’ai un nouveau numéro automatique et une ligne vide dans ma table.

    Comment faire pour ne pas avoir ce nouveau numéro,

    Un grand merci d’avance

    A. Costa

    lundi 4 octobre 2010 09:32

Toutes les réponses

  • Bonjour,

    Essayez ceci :

    Pour qu'Access n'enregistre pas les modifications faites dans un formulaire, il faut utiliser l'événement BeforeUpdate et y placer la ligne suivante :
    Cancel = True
    

    Source : access.developper.com

     


    En espérant avoir pu rendre service (MehdiH)
    Retrouvez moi sur Office Users
    lundi 4 octobre 2010 14:00
  • Bonjour,

    Je ne crois pas que cela soit possible, à moins de faire un compactage à chaque annulation, et même pas certain à partir de la v2002.
    Ou alors en allant tripoter des tables système.  Bof
    Je me souviens qu'après une migration vers SQL SERVER, j'ai eu un problème parce qu'il ne connaissait pas le n° auto AVANT l'enregistrement.  En effet, je prenais ce nombre pour en créer un autre avec un modulo de contrôle (pour réduire les erreurs de saisie)

    Et donc, en effet, les ID autonumber ont parfois des trous dans la série.

    Ceci dit, pourquoi un bouton "annuler" alors que la touche ESC (échap) suffit.

    Cdt, Blaise

    <A Costa> a écrit dans le message de news: fa7b8fa0-c8c7-4874-8aff-f7291ee6ef94@communitybridge.codeplex.com...

    Bonjour,

    J'ai un formulaire liée à une table avec AutoNumber.

    Dans les proprietes du form j'ai

    Allow Edits = Yes

    Allow Deletions = Yes

    Allow Additions = Yes

    Data Entry = Yes

    Donc, à chaque ouverture du form je me positionne dans un nouveau enregistrement.

    J'ai deux boutons (Ok et Annuler) pour valider ou non les enregistrements.

    Si je clique dans le bouton « Annuler », ou j'ai mis les commands « Me.Undo, DoCmd.Close acForm »j'annule les enregistrements, mais à la nouvelle ouverture du form j'ai un nouveau numéro automatique et une ligne vide dans ma table.

    Comment faire pour ne pas avoir ce nouveau numéro,

    Un grand merci d'avance

    A. Costa

    jeudi 7 octobre 2010 16:15
  • Bonjour et merci

    Le bouton "annuler" c'est pour une question de facilité.

    Si j'ai bien compris, il n'y a pas de solution pour ma qustion?

    Cordialement,

    A. Costa

    jeudi 7 octobre 2010 17:35
  • Bonjour,

    Si, il y a toujours une solution (sinon, je serais pas là... ha ha ha...)

    Je vous en propose 2 :

    Une où le formulaire est bindé sur rien (que des champs indépendants) et au moment de cliquer sur enregistrer, vous invoquez un INSERT INTO via l'objet CurrentDB() et sa méthode Execute après avoir vérifié que tout est correct...

    Une autre où vous utilisez plutôt (mais j'aime moins que celle ci-avant)

    DoCmd.RunCommand AcCmdUndo


    Argy
    vendredi 8 octobre 2010 14:24
    Modérateur
  • Bonjour,

    Merci pour votre réponse.

    Les champs indépendents je comprends, mais etant donnée que je suis un principiant, pourriez-vous me donner plus de détails pour "INSERT INTO via l'objet CurrentDB() et sa méthode Execute", s.v.p.? 

    Comment et ou mettre ces codes?

    Cordialement,

    A. Costa

    vendredi 8 octobre 2010 14:47

  • <Argyronet [MVP]> a écrit dans le message de news: 0247ff27-67e5-4197-8244-1d879f561175@communitybridge.codeplex.com...

    Bonjour,

    Si, il y a toujours une solution (sinon, je serais pas là... ha ha ha...)

    hé hé, il faut bien justifier le MVP, hein, l'homme araignée. ;-))
    Oui c'est une excellente solution.

    samedi 9 octobre 2010 11:53
  • Bonjour,

    Avec le command DoCmd.RunCommand AcCmdUndo, si je sort du formulaire, quand je l'ouvre à nouveau le numero automatique correspondant aux annulations est perdu.

    Ma question est de savoir si c'est possible d'avoir le nr automatique en continue, sans lignes vides dans la table, à une nouvelle ouverture du formulaire, aprés avoir annulé un ou plusieurs enregistrements.

    Merci d'avance

    A Costa

    lundi 11 octobre 2010 17:00
  • C'est normal... S'il s'agit d'un NuméroAuto, il n'y a pas possibilité d'avoir le N+1 à chaque nouvel enregistrement mais une valeur supérieure à la dernière valeur supprimée.

    Mais après tout à quoi bon ? Il s'agit d'une clé donc normalement, si votre base est bien conçue, cette clé ne DOIT pas transporter de l'information... On va pas jouer à PeopleSoftMania ;o)

    Bref, si vous voulez un vrai compteur suivi de 1 en 1+1, votre clé ne doit pas être un NuméroAuto mais un Numérique qu'il vous appartient d'incrémenter avec le bon algo :

    Un DMax() pour obtenir la dernière valeur
    Une nouvelle valeur V qui est égale à 1 si DMax() ISNULL ou si DMax() = 0 et sinon V=DMax()+1

    P.S. je ne suis pas pour l'usage des fonctions de domaine mais pour votre situation et votre demande, c'est qui me semble le plus simple et le plus accessible plutôt que d'envisager de vous initier à concevoir une fonction générique dédiée avec DAO...

     


    Argy
    mardi 12 octobre 2010 14:58
    Modérateur
  • Bonjour,

    Merci pour vos explications et votre patience.

    Cordialement

    A Costa

    mardi 12 octobre 2010 15:12