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

  1. #1
    Nouveau Candidat au Club
    Numerotation automatique si champs null à partir de 40000 dans une table
    Bonjour,
    Dans le cadre d'une reprise de données d'une application informatique complexe, je reprends toutes les données existantes via BO. J'ai des numéros automatique obligatoire de l'ancienne application mais qui ne se suivent pas. L'application précédente étant nationale, je la reprends en locale. Ces numéros d'identifications "Volc_Id" sont nécessaires dans des tables annexes.

    Je souhaiterai numéroter mes nouvelles entrées à partir de 40000 (j'ai 37000 numéros pour 27000 entrées) si le champs est vide. Je suppose que c'est un champ calculé et que l'on positionne la formule dans la ligne de l'expression du champs calculé.

    Mais voilà, je n'arrive pas à la formuler correctement avec le langage ACCESS

    J'ai fait de nombreuses recherches, mais je cale.

    Merci pour votre aide

  2. #2
    Membre chevronné
    Bonjour,

    Pour autant que j'aie bien compris votre question, ceci pourrait peut-être vous convenir selon l'exemple ci attaché.
    1) récupérer vos données dans une table tampon tRecup où le champ Volc_Id est entier long.
    A vérifier: aucun Volc_Id vide ni aucun doublon.
    2) ajouter un enregistrement "bidon" dont le champ Volc_Id = 40000.
    3) créer une table tNew de structure identique à tRecup sauf que le champ Volc_Id est de type "NuméroAuto" et clef primaire.
    4) lancer la requête qAjout_de_tRecup_dans_tNew qui recopie tous les enregistrements de tRecup dans tNew.
    5) supprimer l'enregistrement "bidon" dans tNew.
    6) à partir de maintenant les nouveaux enregistrements entrés dans tNew ont leur Volc_Id qui s'incrémente automatiquement à partir de 40000: 40001, 40002, ...

    Cordialement.

  3. #3
    Nouveau Candidat au Club
    Merci beaucoup pour votre aide, mais je pense que ça ne me conviendra pas, à moins de ne pas avoir tout compris. Sur ma table, j'ai effectivement un champs Volc_Id, qui est un numéro sans doublon et qui correspond à un nom et un prénom. Le problème c'est que j'ai deux autres tables, une pour les participations et l'autre correspond à des contacts ou j'ai effectivement aussi le Volc_Id, mais avec dans les deux cas une relation de un Volc_Id à plusieurs dans la table participations et la table contacts. Tout fonctionne à merveille, sauf que maintenant je veux ajouter de nouvelles personnes et c'est là que le bât blesse. Il faudrait que je numérote mes Volc_Id au moment de l'ajout d'une nouvelle fiche dans le formulaire. Probablement, sur le bouton de fermeture du formulaire, sur les propriétés du bouton. J'ajoute donc ma personne et au moment ou je ferme le formulaire l'application devrait numéroter Si [Volc_Id] est null, numéroter à partir de 40000.
    Je pense que c'est possible en mode VBA mais je ne sais pas écrire ma formule.

  4. #4
    Membre chevronné
    Si le champ Volc_Id est mis au type NuméroAuto il n'y a pas de valeur à introduire: ce numéro se crée automatiquement dès que le nouvel enregistrement est validé (ce qui se produit entre autres quand on passe à l'enregistrement de la personne suivante).
    Cordialement.

  5. #5
    Membre expert
    Salut
    Si j'ai bien compris la problématique, vous souhaitez démarrer le prochain Volc_Id à partir de 40000.
    Je pense que ceci va vous intéresser.
    Sinon créer une req en mode SQL et passer
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO NomDeLaTable (Volc_Id)
    SELECT 40000 AS Expr1;

    Exécuter qu'une seule fois

  6. #6
    Membre chevronné
    Un exemple en attaché. Entrez de nouvelles valeurs, le champ Volc_Id y est auto incrémenté.
    Cordialement.

  7. #7
    Nouveau Candidat au Club
    Je réponds à Hypérion, j'ai testé dans le formulaire sur le bouton que j'ai créé pour l'ajout, procédure évènementielle et l'appli me dit que j'ai fait une erreur :
    Code SQL :Sélectionner tout -Visualiser dans une fenêtre à part
    = INSERT INTO [T02_DonneesAdministratives].[Volc-Id] SELECT 40000 AS Expr1;

    La syntaxe n'est pas valide

    Pour Eric je n'ai pas testé car je pense avoir compris que c'est une manœuvre de renumérotation automatique totale et j'ai plusieurs tables liées, il faudra donc que je fasse cette manip dans toutes les tables ? ça ne me paraît pas simple.

    Merci à vous deux

  8. #8
    Membre expert
    Sur l'évènement sur click() du btn de commande, passez
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Commande10_Click()
    Dim StrSQL As String
    StrSQL = "INSERT INTO T02_DonneesAdministratives (Volc_Id)"
    StrSQL = StrSQL & "SELECT 40000 AS Expr1"
    CurrentDb.Execute StrSQL, dbFailOnError
    End Sub

  9. #9
    Membre chevronné
    Citation Envoyé par VCM5962 Voir le message
    ...j'ai plusieurs tables liés, il faudra donc que je fasse cette mani dans toutes les tables ?
    La numérotation automatique n'est mise en oeuvre que pour les nouveaux enregistrements. Pour tous les enregistrements existants il n'y a rien à faire, rien à aller modifier (surtout pas même).
    Cordialement.