Problème avec Access
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Problème avec Access



  1. #1
    invite9cd736bc

    Problème avec Access


    ------

    Bonjour,

    Je sèche sur un problème de numérotation d'enregistrements dans une base données Access 2003 :

    Je voudrais que les enregistrements d'une requête, affichés dans un formulaire, soient numérotés de 1 à n,
    n étant le nombre d'enregistrements affichés dans le formulaire.

    Autrement dit, qu'il y ait une colonne de numéros de lignes, sur l'écran d'affichage...

    Ce chiffrage étant bien sûr différent, du numéro d'index de la table, où sont rangées les données.

    Si vous connaissez une méthode, je suis intéressé...

    Cordialement,

    -----

  2. #2
    danyvio

    Re : Problème avec Access

    Je ne pense pas qu'il soit possible de "numéroter" les enregistrements affichés en fonction de leur ordre d'apparition dans une liste. Cela signifierait qu'on établit une relation d'ordre entre eux en fonction de leur positionnement, ce qui n'est pas conforme aux normes de bases de données. On peut remarquer que le n° d'ordre et le nombre total s'affichent en onglet en bas du formulaire (Access 2007).
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

  3. #3
    invite9cd736bc

    Re : Problème avec Access

    Bonsoir,

    Effectivement, ce n'est pas une fonction naturelle d'Access, car les numéro auto, d'une base, ne suivent pas une incrémentation, de type N+1...

    Et dans un formulaire, on peut avoir besoin d'un numérotation indépendante de l'index de la table.

    Donc il faut créer un champ, pour la numérotation qu'on veut créer, pour un formulaire, qu'on remplira, à l'aide d'un petit programme :

    Voir ci-dessous ...
    ------------------------------------------------------------------------
    A partir d'un formulaire :
    CODE
    Code:
    Private Sub cmd_Exemple_Click()
    Dim db As Database: Set db = CurrentDb
    Dim r As Recordset: Set r = db.OpenRecordset("qry_Exemple") 'Ou la table directement.
    
    Dim i As Long: i = 1
    
    Do While Not r.EOF
       r.Edit
       r![Champ3] = i
       r.Update
       i = i + 1
       r.MoveNext
    Loop
    
    r.Close: Set r = Nothing
    db.Close: Set db = Nothing
    
    End Sub
    La requête :
    CODE
    Code:
    SELECT tbl_Exemple.ID, tbl_Exemple.ChampSubsi,
            tbl_Exemple.Champ3
    FROM tbl_Exemple
    ORDER BY tbl_Exemple.ID;
    ****************************** ****************************** *******
    Ou alors la requête :
    CODE
    Code:
    SELECT tbl_Exemple.ID, Compteur("tbl_Exemple","ID",[ID]) AS Compte
    FROM tbl_Exemple
    ORDER BY tbl_Exemple.ID;
    Avec la fonction Compteur dans un module :
    CODE
    Code:
    Public Function Compteur(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)
    Compteur = rs.AbsolutePosition + 1
    End If
    rs.Close
    Set rs = Nothing
    db.Close
    Set db = Nothing
    End Function
    ****************************** ****************************** *******
    Si on veut éviter VBA :
    directement dans la requête :
    CODE
    Code:
    SELECT tbl_Exemple.ID, (SELECT COUNT( [ID] )
      FROM tbl_Exemple AS T1
      WHERE ID <  tbl_Exemple.ID)+1 AS ClassementSurNum
    FROM tbl_Exemple
    ORDER BY tbl_Exemple.ID;
    Ou alors sur du texte
    CODE
    Code:
    SELECT tbl_Exemple.ID, tbl_Exemple.ChampSubsi, (SELECT COUNT(ChampSubsi)
    FROM tbl_Exemple AS T1
    WHERE ChampSubsi <  tbl_Exemple.ChampSubsi)+1 AS ClassementSurTxt
    FROM tbl_Exemple
    ORDER BY tbl_Exemple.ChampSubsi;

    J'ai utilisé la première solution, cela marche très bien !

    Cordialement,

    Ajout de balises Code pour la lisibilité.
    JPL, modérateur
    Dernière modification par JPL ; 10/05/2010 à 16h29.

Discussions similaires

  1. Problèmes de formulaire avec Access
    Par inviteaf35a9bf dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 17/11/2008, 08h53
  2. Problème avec Access
    Par invite4e70d34b dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 11/03/2008, 16h54
  3. pb avec instant access
    Par invite4f5c5420 dans le forum Sécurité et malwares : désinfectez votre machine
    Réponses: 6
    Dernier message: 29/09/2007, 12h07
  4. Problème avec ACCESS
    Par invitef335bf48 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 30/09/2005, 10h09
  5. problème avec Access
    Par invitea76da371 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 17/02/2004, 19h46
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...