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 :

Numérotation automatique d'enregistrement dans une requête


Sujet :

Requêtes et SQL.

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 57
    Par défaut Numérotation automatique d'enregistrement dans une requête
    Bonjour,
    Je cherche comment effectuer une numérotation automatique des enregistrements contenus dans une requête (Numérotation à partir de 1) et ce afin de numéroter des questions dans un état tiré de cette requête.

    Merci pour votre aide.

  2. #2
    Invité
    Invité(e)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 57
    Par défaut
    Bonjour,
    Merci pour les conseils mais, étant novice en la matière, j'ai tenté d'insérer le code SQL dans ma requête et ça m'a tout supprimé. Je te donne un peu plus de précision sur ma demande.

    J'ai créé une requête simple nommée "Requête Questionnaire" à partir d'une table appelée "Questionnaires". Dans cette requête j'ai 4 champs respectivement : N°; Questions; Réponses; Choix (avec un critère : =Vrai). Le champ N° à une propriété de numérotation automatique (donc pas forcément dans l'ordre si l'on supprime puis ajoute des enregistrements).
    Je voudrais aux vues de ces champs, obtenir dans ma requête un champ supplémentaire dans lequel s'afficherait automatiquement une numérotation dans l'ordre croissant à partir de 1, afin de numéroter mes questions dans un état à imprimer.
    Merci d'avance pour une nouvelle leçon.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour
    Effectivement après test on arrive à refaire une numérotation, mais elle ne démarre pas forcément à 1 surtout après le filtre.
    Personnellement j'utilise une méthode plus lourde mais qui fonctionne très bien, qui est de créer dynamiquement une table temporaire avec un champ auto, puis d'alimenter cette table avec le résultat de la requête. Comme cela j'ai toujours une Numérotation commençant à 1, puisque la table est recréée à chaque utilisation. Mais c'est un peu plus compliqué.

    Mais si c'est juste pour numéroter les lignes de ton état, il n'y a pas besoin de passer par la requête. Une zone de texte dans ton état dont la source est: =1
    Puis propriété cumul placée sur oui

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 57
    Par défaut
    Merci pour tes renseignements. Effectivement, maintenant j'arrive à numéroter dans mon état. Encore une question Existe t-il une solution aussi simple pour une numérotation identique dans un formulaire. J'ai essayé d'appliquer la même solution que dans mon état mais il n'existe pas d'option "Cumul" dans les propriétés d'une zone de texte insérée dans un formulaire alors ...

    Dans l'attente d'une réponse, merci encore une fois.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Dans un formulaire c'est un peu plus compliqué.
    Il faut passer par une numérotation de ligne.
    Créer une zone de texte "Compteur"
    Puis en Vba mettre la Référence Dao 3.6 Object Library
    Dans un module:
    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
    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
    Après Sur la source de ton champ Compteur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =fnNumLigne("Questionnaires";"N°";[])

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 57
    Par défaut
    Merci pour ton aide mais j'ai encore un problème. Je suis à la lettre des indications et lorsque je passe à l'étape ou je dois ajouter la référence DAO 3.6 Object Library, j'obtiens le message d'erreur suivant : Nom de module, de projet ou de bibliothèque d'objet déjà utilisé. Je ne vois pas d'où peut venir le hic....

    Dans l'attente d'une réponse, passe un bon reveillon.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour
    Si tu es en Access 2007, il n'y a pas forcément besoin de la mettre. Donc tu passes à l'étape suivante.
    Bonnes fêtes aussi.

  9. #9
    Membre expérimenté Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut
    Bonsoir membres du forum !
    J'aimerais bien comprendre comment fonctionne cette ligne de code ?
    Après Sur la source de ton champ Compteur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =fnNumLigne("Questionnaires";"N°";[])
    La fonction:
    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
    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
    J'ai créé une zone de texte dans un formulaire. ensuite inséré cette ligne de code dans la source
    de la zone de texte mais en retour voici ce qui s'affiche #Nom*?.
    Comment ça fonctionne ?
    Cordialement.

  10. #10
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 350
    Par défaut
    Avez-vous copié votre formule dans un module standard ?
    Le form affichage mode unique, continu, feuille de données ?

  11. #11
    Membre expérimenté Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut
    Bonjour !
    J'ai copié le code dans module standard, ensuite créé un formulaire continu.
    Cordialement !

  12. #12
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 350
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 350
    Par défaut
    Ne sachant ce que vous voulez exactement faire avec votre comptage de lignes dans le form, testez ceci dans un module standard
    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
    32
    33
    34
    35
    'Copyright Stephen Lebans 1999
    'May not be resold
    'Please include my 1 line Copyright notice
    'in your code if you use these functions
     
    'I left a bunch of development code in here in case anyone decides to go
    'down the same paths I did.
    'Created by Stephen Lebans with help from Chris Bergmans
    ' Updated by Allen Browne Oct/2002
    'Production version of GetLineNumberForm
    'Works in Form or SubForm mode
    'Set controlsource of unbound Text box to
    '= RowNum([Form])
    'Type exactly as above
     
    Public Function RowNum(frm As Form) As Variant
    On Error GoTo Err_RowNum
        'Purpose:   Numbering the rows on a form.
        'Usage:     Text box with ControlSource of:  =RowNum([Form])
     
        With frm.RecordsetClone
            .Bookmark = frm.Bookmark
            RowNum = .AbsolutePosition + 1
        End With
     
    Exit_RowNum:
        Exit Function
     
    Err_RowNum:
        If Err.Number <> 3021& Then  'Ignore "No bookmark" at new row.
            Debug.Print "RowNum() error " & Err.Number & " - " & Err.Description
        End If
        RowNum = Null
        Resume Exit_RowNum
    End Function
    et dans source contrôle : de votre textbox indépendante passez ceci :

  13. #13
    Membre expérimenté Avatar de morobaboumar
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2009
    Messages
    1 228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1 228
    Par défaut
    Bonjour hyperion13 !
    Effectivement le code que vous m'avez fait parvenir marche bien !
    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
    32
    33
    34
    35
    'Copyright Stephen Lebans 1999
    'May not be resold
    'Please include my 1 line Copyright notice
    'in your code if you use these functions
     
    'I left a bunch of development code in here in case anyone decides to go
    'down the same paths I did.
    'Created by Stephen Lebans with help from Chris Bergmans
    ' Updated by Allen Browne Oct/2002
    'Production version of GetLineNumberForm
    'Works in Form or SubForm mode
    'Set controlsource of unbound Text box to
    '= RowNum([Form])
    'Type exactly as above
     
    Public Function RowNum(frm As Form) As Variant
    On Error GoTo Err_RowNum
        'Purpose:   Numbering the rows on a form.
        'Usage:     Text box with ControlSource of:  =RowNum([Form])
     
        With frm.RecordsetClone
            .Bookmark = frm.Bookmark
            RowNum = .AbsolutePosition + 1
        End With
     
    Exit_RowNum:
        Exit Function
     
    Err_RowNum:
        If Err.Number <> 3021& Then  'Ignore "No bookmark" at new row.
            Debug.Print "RowNum() error " & Err.Number & " - " & Err.Description
        End If
        RowNum = Null
        Resume Exit_RowNum
    End Function
    et dans source contrôle : de votre textbox indépendante passez ceci :
    Nom : CaptureRowNumNomAutoPerson.PNG
Affichages : 3550
Taille : 13,5 Ko
    Merci infiniment.
    Concernant le code suivant, je souhaiterais l'insérer dans une zone de texte d'un formulaire continu.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fnNumLigne("Questionnaires";"N°";[])
    Où le place t-on ?
    Cordialement.

Discussions similaires

  1. "Rang" d'un enregistrement dans une requête
    Par Takusen dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 28/09/2007, 14h53
  2. Réponses: 8
    Dernier message: 23/03/2007, 01h14
  3. Numérotation automatique des résultats d'une requête
    Par Nicola dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 28/07/2006, 19h57
  4. Réponses: 3
    Dernier message: 04/05/2006, 13h00
  5. Exclure des enregistrements dans une requête
    Par r@phy dans le forum Access
    Réponses: 3
    Dernier message: 29/03/2006, 11h18

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