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

Requêtes et SQL. Discussion :

Comment récupérer la valeur du dernier numéro auto inséré dans une table ? [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    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 Comment récupérer la valeur du dernier numéro auto inséré dans une table ?
    Bonjour à tous et merci de votre temps et de votre aide.

    J'ai une BD dont je dois forcer le numéro de départ d'un champ auto-incrémenté. J'ai donc fait un bout de code pour créer autant d'enr que j'en avais besoin et tout est correct.

    Le problème c'est que je supprime ces enregistrements et que plus rien dans la table ne m'indique la valeur actuel du champ auto-incrémenté.

    Dans la FAQ j'ai trouvé
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    Select @@identity From maTable;
    qui est dit fonctionner pour Access 2000 et plus mais quand je mets ce code le SQL d'une requête dans ma BD Access 2007 je n'obtiens aucune information. Cela ne crée pas d'erreur mais cela me retourne aucun enregistrement.

    Mes recherches sur Google sont restées sans resultat utile.

    Quelqu'un sait comment on peut le faire ?

    A+

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 917
    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 : 2 917
    Points : 4 818
    Points
    4 818
    Par défaut
    Bonjour Marot,

    Sache que tu peux rénitialiser un compteur en num auto par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ALTER table T_MaTable ALTER COLUMN NoAuto COUNTER(25,1)

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 651
    Points : 34 364
    Points
    34 364
    Par défaut
    Salut,

    pour ma part, je place ce genre d'info dans une table de parametres

  4. #4
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour,

    Si je peux me permettre d'intervenir, la requête :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select max(TonChampNumeroAuto) from TaTable
    sans rien d'autre, te retourne le dernier TonChampNumeroAuto de TaTable.

  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
    Finalement sur ce site : http://allenbrowne.com/

    et plus précisement là : http://allenbrowne.com/funcindex.html qui contient toute une liste de fonctions utiles.

    J'ai trouvé le code suivant que j'ai légérement adapté à mon besoin. Il nécessite une référence sur Microosft ADO Ext. (c'est le ADOX).

    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
    24
    25
    26
    27
    28
    29
    30
    31
    Private Sub test_GetSeedADOX()
        Debug.Print GetSeedADOX("Table1")
    End Sub
     
    Private Function GetSeedADOX(strTable As String, Optional ByRef strCol As String) As Long
        'Purpose:   Read the Seed of the AutoNumber of a table.
        'Arguments: strTable the table to examine.
        '           strCol = the name of the field. If omited, the code finds it.
        'Return:    The seed value.
        Dim cat As New ADOX.Catalog 'Root object of ADOX.
        Dim tbl As ADOX.Table       'Each Table in Tables.
        Dim col As ADOX.Column      'Each Column in the Table.
     
        'Point the catalog to the current project's connection.
        Set cat.ActiveConnection = CurrentProject.Connection
        Set tbl = cat.Tables(strTable)
     
        'Loop through the columns to find the AutoNumber.
        For Each col In tbl.Columns
            If col.Properties("Autoincrement") Then
                strCol = "[" & col.Name & "]"
                GetSeedADOX = col.Properties("Seed")
                Exit For    'There can be only one AutoNum.
            End If
        Next
     
        'Clean up
        Set col = Nothing
        Set tbl = Nothing
        Set cat = Nothing
    End Function
    Qui donne bien la valeur du prochain NumAuto. Par exemple sur une table vide il donne 1 et sur ma table de 4999 enr supprimés il donne 5000.

    A+

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/01/2014, 10h48
  2. Réponses: 4
    Dernier message: 24/11/2010, 21h31
  3. Récupérer la valeur d'un champ auto increment dans Firebird
    Par mls dans le forum Bases de données
    Réponses: 11
    Dernier message: 30/09/2009, 19h35
  4. Réponses: 2
    Dernier message: 28/08/2009, 15h43
  5. Réponses: 2
    Dernier message: 05/03/2009, 14h42

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