Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/11/2010, 21h15   #1
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 434
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 434
Points : 7 501
Points : 7 501
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 :
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+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 09h14   #2
Membre Expert
 
Homme Michel
Ingénieur développement logiciels
Inscription : mai 2005
Messages : 1 583
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2005
Messages : 1 583
Points : 2 141
Points : 2 141
Bonjour Marot,

Sache que tu peux rénitialiser un compteur en num auto par
Code :
1
2
ALTER table T_MaTable ALTER COLUMN NoAuto COUNTER(25,1)
__________________
"tout le monde veut sauver la planète, mais personne ne veut descendre les poubelles." J Yanne
micniv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 15h14   #3
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 848
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 848
Points : 10 719
Points : 10 719
Envoyer un message via MSN à jpcheck
Salut,

pour ma part, je place ce genre d'info dans une table de parametres
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 15h35   #4
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 161
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 161
Points : 2 783
Points : 2 783
Bonjour,

Si je peux me permettre d'intervenir, la requête :
Code sql :
SELECT max(TonChampNumeroAuto) FROM TaTable
sans rien d'autre, te retourne le dernier TonChampNumeroAuto de TaTable.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 17h17   #5
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 434
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 434
Points : 7 501
Points : 7 501
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 :
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+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h11.


 
 
 
 
Partenaires

Hébergement Web