Les mémos

Fermer Tables

Fermer Requêtes

Fermer Formulaires

Fermer Etats

Fermer Modules

Fermer Base

Fermer Automation

Fermer Administration

Fermer Registre

Fermer String

Fermer Email CDO

Fermer Outlook

Fermer Net

Fermer Dates - Heures

Fermer Fichiers

Fermer Références

Fermer Vrac

Je débute...

Fermer La normalisation

Fermer VBA

Attention
Aucun support
par émail !

Utilisez le forum pour les questions/réponses concernant MsAccess et les codes que vous trouverez sur ce site.
Visites

   visiteurs

   visiteurs en ligne

Requêtes - Numérotation continue

Numérotation continue dans une requête

 

Si dans un état une numérotation continue est très simple à réaliser, dans une requête la solution est moins évidente.

Sachant qu'une table n'est qu'un conteneur dans lequel les enregistrements ne possèdent pas réellement un ordre défini, il faut donc que dans cette table source existe un champ sur lequel on puisse trier.

  • Nom de la table : Table1
  • Champ destiné au tri : Champ1

 

Il est entendu que le Champ1 peut être de type numérique (numéro d'adhérant) ou texte (nom d'adhérent, mais attention au homonyme) ou encore une date quelconque (attention ici au date identique). La numérotation se fera selon l'ordre du champ désigné.

 

Solution 1

Dans un champ calculé NoLigne: et à l'aide de la fonction de domaine DCount()

NoLigne: CpteDom("*";"Table1";"Champ1<" & Champ1)+1

 

Solution 2

Si la table contient beaucoup d'enregistrements, on peut essayer avec une sous-requête

NoLigne: (SELECT Count(*)

FROM Table1 AS LaTable

WHERE Champ1 < Table1.Champ1 )+1

 

Solution 3

En cas de clé primaire numérique [ID] comportant des "trous" on peut également utiliser cette fonction VBA.

NumLigne: fnNumLigne("T_Table1";"ID";[ID])

 

Ci-dessous, la fonction fnNumLigne()

 

Public Function fnNumLigne(strTable As String, strChamp As String, MaVar As Variant) As Long

Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset(strTable, dbOpenDynaset)

If Not rs.EOF Then

rs.FindFirst ("[" & strChamp & "] = " & MaVar)

fnNumLigne = rs.AbsolutePosition + 1

End If

rs.Close
Set rs = Nothing
db.Close
Set db = Nothing

End Function


Date de création : 28/10/2005 : 02:03
Dernière modification : 07/02/2010 : 23:46
Catégorie : Requêtes
Page lue 14203 fois


Imprimer l'article Imprimer l'article

Recherche



Lettre d'information
Pour avoir des nouvelles de ce site, inscrivez-vous à notre Newsletter.
Captcha
Recopier le code :
Au sujet de l'auteur
L'auteur qui fréquente (fréquentait) le forum microsoft.public.fr.access a eu le plaisir d'être nommé MVP Office-Access de janvier 2003 à décembre 2011.

Qui sont les MVP ?

Divers ;-)
Nous contacter

Haut