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

Access Discussion :

Numéroter les lignes dans une requête créée par code [AC-2007]


Sujet :

Access

  1. #1
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut Numéroter les lignes dans une requête créée par code
    Bonjour à tous et à toutes,

    Le code suivant me crée la requête R Cotis_DuesAG :

    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 Sub Cotis_DuesAG(NumDebut As Integer)
      Dim sSql As String
      Dim q As QueryDef
      sSql = "SELECT [T Adhérents].N°Adherent, [T Adhérents].Titre, [T Adhérents].Nom, [T Adhérents].Prenom, " _
              & " [T Adhérents].DateAdhesion, [T Adhérents].Adresse, IIf(Mid([T Adhérents].CP,3,1)='-', Mid([T Adhérents].CP , InStr([T Adhérents].CP,'-')+1), [T Adhérents].CP) AS CP1, [T Adhérents].Ville, [T Adhérents].Pays, " _
              & "[Du" & Format(NumDebut - 4, "00") & "]+[Du" & Format(NumDebut - 3, "00") & "]" _
              & "+[Du" & Format(NumDebut - 2, "00") & "]+[Du" & Format(NumDebut - 1, "00") & "]" _
              & "+[Du" & Format(NumDebut + 0, "00") & "]" _
              & " AS [Total dû], " _
                   & "[T Adhérents].Du" & Format(NumDebut - 4, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut - 3, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut - 2, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut - 1, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut + 0, "00") & "," _
                   & " FROM [T Adhérents] " _
                   & " DCount("*",[R Cotis_DuesAG],"N°Adherent <" & [N°Adherent])+1 AS N°ligne, " _
                   & " WHERE ((([T Adhérents].Adherent) = True)) ORDER BY [T Adhérents].Nom, [T Adhérents].Prenom;"
      Set q = CurrentDb.QueryDefs("R Cotis_DuesAG")
      q.SQL = sSql
      
    End Sub
    J'ai modifié la requête initiale en rajoutant la ligne en rouge pour avoir une colonne "N°ligne" me permettant de numéroter les enregistrements obtenus.
    Le débogueur me signale une erreur de syntaxe dans cette ligne.
    Par ailleurs cette ligne est-elle bien placée dans la procédure dans la mesure où il est fait référence à R Cotis_DuesAG qui est définie plus loin ?

    Merci de votre aide.

    A+

    C15

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 342
    Points : 19 581
    Points
    19 581
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    J'essaierais ceci :

    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 Sub Cotis_DuesAG(NumDebut As Integer)
      Dim sSql As String
      Dim q As QueryDef
      sSql = "SELECT [T Adhérents].N°Adherent, [T Adhérents].Titre, [T Adhérents].Nom, [T Adhérents].Prenom, " _
              & " [T Adhérents].DateAdhesion, [T Adhérents].Adresse, IIf(Mid([T Adhérents].CP,3,1)='-', Mid([T Adhérents].CP , InStr([T Adhérents].CP,'-')+1), [T Adhérents].CP) AS CP1, [T Adhérents].Ville, [T Adhérents].Pays, " _
              & "[Du" & Format(NumDebut - 4, "00") & "]+[Du" & Format(NumDebut - 3, "00") & "]" _
              & "+[Du" & Format(NumDebut - 2, "00") & "]+[Du" & Format(NumDebut - 1, "00") & "]" _
              & "+[Du" & Format(NumDebut + 0, "00") & "]" _
              & " AS [Total dû], " _
                   & "[T Adhérents].Du" & Format(NumDebut - 4, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut - 3, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut - 2, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut - 1, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut + 0, "00") & "," _
                   & " FROM [T Adhérents] " _
                   & " DCount("*","[T Adhérents]","([T Adhérents].Adherent = True) and [N°Adherent]<" & [N°Adherent])+1 AS [N°ligne], " _
                   & " WHERE ([T Adhérents].Adherent = True) ORDER BY [T Adhérents].Nom, [T Adhérents].Prenom;"
      Set q = CurrentDb.QueryDefs("R Cotis_DuesAG")
      q.SQL = sSql
     
    End Sub
    Par contre j'aurais une question :

    Le N°Ligne dépend de l'ordre [T Adhérents].Nom, [T Adhérents].Prenom ou du numéro d'adhérent ?

    Cdlt,

  3. #3
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Bonjour,

    Pour que le compteur fonctionne il doit être dans le SELECT et suivre les mêmes règles que le WHERE et l'ORDER BY. Enfin comme on interroge 2 fois la même table il faut utiliser des alias :
    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 Sub Cotis_DuesAG(NumDebut As Integer)
      Dim sSql As String
      Dim q As QueryDef
      sSql = "SELECT N°Adherent, Titre, Nom, Prenom, " _
              & " DateAdhesion, Adresse, IIf(Mid(CP,3,1)='-', Mid(CP , InStr(CP,'-')+1), CP) AS CP1, Ville, Pays, " _
              & "[Du" & Format(NumDebut - 4, "00") & "]+[Du" & Format(NumDebut - 3, "00") & "]" _
              & "+[Du" & Format(NumDebut - 2, "00") & "]+[Du" & Format(NumDebut - 1, "00") & "]" _
              & "+[Du" & Format(NumDebut + 0, "00") & "]" _
              & " AS [Total dû], " _
                   & "Du" & Format(NumDebut - 4, "00") & "," _
                   & "Du" & Format(NumDebut - 3, "00") & "," _
                   & "Du" & Format(NumDebut - 2, "00") & "," _
                   & "Du" & Format(NumDebut - 1, "00") & "," _
                   & "Du" & Format(NumDebut + 0, "00") & "," _
                   & "(select count(*) from [T Adhérents] x where Adherent and x.nom<a.nom or (x.nom=a.nom and x.prenom<=a.prenom)) as numligne" _
                   & " FROM [T Adhérents] a " _
                    & " WHERE Adherent ORDER BY Nom, Prenom;"
      Set q = CurrentDb.QueryDefs("R Cotis_DuesAG")
      q.SQL = sSql
     
    End Sub
    En l'occurence ça peut se faire aussi avec un Dcount je pense...

  4. #4
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    désolé, cela ne fonctionne pas.
    Par ailleurs, le N° ligne dépend de l'ordre N°Adhérent

    Merci d'avance.
    C15

    Citation Envoyé par User Voir le message
    Bonjour,

    J'essaierais ceci :

    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 Sub Cotis_DuesAG(NumDebut As Integer)
      Dim sSql As String
      Dim q As QueryDef
      sSql = "SELECT [T Adhérents].N°Adherent, [T Adhérents].Titre, [T Adhérents].Nom, [T Adhérents].Prenom, " _
              & " [T Adhérents].DateAdhesion, [T Adhérents].Adresse, IIf(Mid([T Adhérents].CP,3,1)='-', Mid([T Adhérents].CP , InStr([T Adhérents].CP,'-')+1), [T Adhérents].CP) AS CP1, [T Adhérents].Ville, [T Adhérents].Pays, " _
              & "[Du" & Format(NumDebut - 4, "00") & "]+[Du" & Format(NumDebut - 3, "00") & "]" _
              & "+[Du" & Format(NumDebut - 2, "00") & "]+[Du" & Format(NumDebut - 1, "00") & "]" _
              & "+[Du" & Format(NumDebut + 0, "00") & "]" _
              & " AS [Total dû], " _
                   & "[T Adhérents].Du" & Format(NumDebut - 4, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut - 3, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut - 2, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut - 1, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut + 0, "00") & "," _
                   & " FROM [T Adhérents] " _
                   & " DCount("*","[T Adhérents]","([T Adhérents].Adherent = True) and [N°Adherent]<" & [N°Adherent])+1 AS [N°ligne], " _
                   & " WHERE ([T Adhérents].Adherent = True) ORDER BY [T Adhérents].Nom, [T Adhérents].Prenom;"
      Set q = CurrentDb.QueryDefs("R Cotis_DuesAG")
      q.SQL = sSql
     
    End Sub
    Par contre j'aurais une question :

    Le N°Ligne dépend de l'ordre [T Adhérents].Nom, [T Adhérents].Prenom ou du numéro d'adhérent ?

    Cdlt,

  5. #5
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    Désolé mais je ne comprends pas ce que tu ceux dire par
    & " FROM [T Adhérents] a " _

    et à quoi correspond le x après Where

    Merci de ta réponse



    Citation Envoyé par nico84 Voir le message
    Bonjour,

    Pour que le compteur fonctionne il doit être dans le SELECT et suivre les mêmes règles que le WHERE et l'ORDER BY. Enfin comme on interroge 2 fois la même table il faut utiliser des alias :
    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 Sub Cotis_DuesAG(NumDebut As Integer)
      Dim sSql As String
      Dim q As QueryDef
      sSql = "SELECT N°Adherent, Titre, Nom, Prenom, " _
              & " DateAdhesion, Adresse, IIf(Mid(CP,3,1)='-', Mid(CP , InStr(CP,'-')+1), CP) AS CP1, Ville, Pays, " _
              & "[Du" & Format(NumDebut - 4, "00") & "]+[Du" & Format(NumDebut - 3, "00") & "]" _
              & "+[Du" & Format(NumDebut - 2, "00") & "]+[Du" & Format(NumDebut - 1, "00") & "]" _
              & "+[Du" & Format(NumDebut + 0, "00") & "]" _
              & " AS [Total dû], " _
                   & "Du" & Format(NumDebut - 4, "00") & "," _
                   & "Du" & Format(NumDebut - 3, "00") & "," _
                   & "Du" & Format(NumDebut - 2, "00") & "," _
                   & "Du" & Format(NumDebut - 1, "00") & "," _
                   & "Du" & Format(NumDebut + 0, "00") & "," _
                   & "(select count(*) from [T Adhérents] x where Adherent and x.nom<a.nom or (x.nom=a.nom and x.prenom<=a.prenom)) as numligne" _
                   & " FROM [T Adhérents] a " _
                    & " WHERE Adherent ORDER BY Nom, Prenom;"
      Set q = CurrentDb.QueryDefs("R Cotis_DuesAG")
      q.SQL = sSql
     
    End Sub
    En l'occurence ça peut se faire aussi avec un Dcount je pense...

  6. #6
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    x et a sont des alias pour distinguer les 2 appels de la même table

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 342
    Points : 19 581
    Points
    19 581
    Billets dans le blog
    65
    Par défaut
    Il faudrait enlever la virgule après as numligne.

    Quand vous dites que ça ne fonctionne pas, avez-vous un message d'erreur ?


    Cdlt

  8. #8
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonjour User,

    Le débogueur m'annonce une erreur de compil / attente fin d'instruction.
    N'y aurait-il pas un problème de parenthèse dans le critère de Dcount ?

    Merci
    C15

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 342
    Points : 19 581
    Points
    19 581
    Billets dans le blog
    65
    Par défaut
    Essayez ceci :
    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
     
    Public Sub Cotis_DuesAG(NumDebut As Integer)
      Dim sSql As String
      Dim q As QueryDef
      sSql = "SELECT [T Adhérents].N°Adherent, [T Adhérents].Titre, [T Adhérents].Nom, [T Adhérents].Prenom, " _
              & " [T Adhérents].DateAdhesion, [T Adhérents].Adresse, IIf(Mid([T Adhérents].CP,3,1)='-', Mid([T Adhérents].CP , InStr([T Adhérents].CP,'-')+1), [T Adhérents].CP) AS CP1, [T Adhérents].Ville, [T Adhérents].Pays, " _
              & "[Du" & Format(NumDebut - 4, "00") & "]+[Du" & Format(NumDebut - 3, "00") & "]" _
              & "+[Du" & Format(NumDebut - 2, "00") & "]+[Du" & Format(NumDebut - 1, "00") & "]" _
              & "+[Du" & Format(NumDebut + 0, "00") & "]" _
              & " AS [Total dû], " _
                   & "[T Adhérents].Du" & Format(NumDebut - 4, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut - 3, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut - 2, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut - 1, "00") & "," _
                   & "[T Adhérents].Du" & Format(NumDebut + 0, "00") & "," _         
                   & " DCount('*','[T Adhérents]','(Adherent = True) and [N°Adherent]<' & [N°Adherent])+1 AS [N°ligne] " _
                   & " FROM [T Adhérents] " _
                   & " WHERE (Adherent = True) ORDER BY [T Adhérents].Nom, [T Adhérents].Prenom;"
      MsgBox  sSql
      Set q = CurrentDb.QueryDefs("R Cotis_DuesAG")
      q.SQL = sSql
     
    End Sub
    J'ai mis un :

    Pour que vous puissiez contrôler la synthaxe du SQL avant son affectation.

    Cdlt,

  10. #10
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Citation Envoyé par C15nantes Voir le message
    N'y aurait-il pas un problème de parenthèse dans le critère de Dcount ?
    Il y a surtout embrouille entre les " limiteurs de string et les " des arguments du dcount (pour lequel on peut utiliser ')
    C'est pour éviter ce genre de problème que je trouve plus lisible (et plus standard et moins limité) l'utilisation d'un sous select

  11. #11
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 342
    Points : 19 581
    Points
    19 581
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par nico84 Voir le message
    Il y a surtout embrouille entre les " limiteurs de string et les " des arguments du dcount (pour lequel on peut utiliser ')
    C'est pour éviter ce genre de problème que je trouve plus lisible (et plus standard et moins limité) l'utilisation d'un sous select
    Tu as raison Nico, (difficile d'être au four et au moulin !), j'avais oublié qu'on était déjà dans une chaîne et je n'ai pas voulu lui proposer une sous-requête voulant rester au plus proche de son code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    & " DCount('*','[T Adhérents]','(Adherent = True) and [N°Adherent]<' & [N°Adherent])+1 AS [N°ligne] " _
    De plus il faudrait s'entendre :

    Est-ce nécessaire de trier par nom et prénom, dans la mesure ou on souhaire avoir le N°Ligne correspondant au [N°Adherent] ?

    Cdlt,

  12. #12
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonsoir à tous les 2,

    J'ai combiné vos 2 réponses. Effectivement il faut toujours se méfier des strings

    Maintenant que tout est corrigé, je peux vous rassurer, s'il en était besoin, vos 2 procédures marchent parfaitement.


    Par ailleurs, au niveau du tri, je le fais ensuite et ailleurs.

    En effet, cette requête est la source d'un publipostage par mail fait avec Word pour des adhérents d'une association.
    Or il y a une limitation de 500 mails max par envoi et/ou par jour.
    Lors de mon publipostage, je ferai un tri sur le N° de ligne et ainsi je pourrai sélectionner par exemple les 400 premiers adhérents pour un 1er envoi, et les 150 autres pour un 2 ième.

    Merci encore de votre aide

    Bonne soirée

    C15

    Cette discussion peut-être considéré comme résolue...mais je ne sais pas comment le déclarer

  13. #13
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    Je reviens dans le fil de la discussion.
    En effet, la numérotation des lignes fonctionne bien, mais contrairement à ce que je pensais, lors du publipostage, cela ne répond pas à ce que j'attendais.

    Ma requête est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT [T Adhérents].N°Adherent, [T Adhérents].Titre, [T Adhérents].Nom, [T Adhérents].Prenom, [T Adhérents].DateAdhesion, [T Adhérents].Email, [T Adhérents].Adresse, IIf(Mid([T Adhérents].CP,3,1)='-',Mid([T Adhérents].CP,InStr([T Adhérents].CP,'-')+1),[T Adhérents].CP) AS CP1, [T Adhérents].Ville, [T Adhérents].Pays, [Du13]+[Du14]+[Du15]+[Du16]+[Du17] AS [Total dû], [T Adhérents].Du13, [T Adhérents].Du14, [T Adhérents].Du15, [T Adhérents].Du16, [T Adhérents].Du17, DCount('*','[T Adhérents]','(Adherent = True) and [N°Adherent]<' & [N°Adherent])+1 AS N°ligne
    FROM [T Adhérents]
    WHERE ((([T Adhérents].Adherent)=True))
    ORDER BY [T Adhérents].Nom, [T Adhérents].Prenom;
    J'ai donc une numérotation de toutes mes lignes, avec ou sans adresse Email.

    Or je voudrais numéroter les lignes après n'avoir filtrer que les emails.
    Si je modifie ma requête ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT [T Adhérents].N°Adherent, [T Adhérents].Titre, [T Adhérents].Nom, [T Adhérents].Prenom, [T Adhérents].DateAdhesion, [T Adhérents].Email, [T Adhérents].Adresse, IIf(Mid([T Adhérents].CP,3,1)='-',Mid([T Adhérents].CP,InStr([T Adhérents].CP,'-')+1),[T Adhérents].CP) AS CP1, [T Adhérents].Ville, [T Adhérents].Pays, [Du13]+[Du14]+[Du15]+[Du16]+[Du17] AS [Total dû], [T Adhérents].Du13, [T Adhérents].Du14, [T Adhérents].Du15, [T Adhérents].Du16, [T Adhérents].Du17, DCount('*','[T Adhérents]','(Adherent = True) and [N°Adherent]<' & [N°Adherent])+1 AS N°ligne
    FROM [T Adhérents]
    WHERE ((([T Adhérents].Email)<>" ") AND (([T Adhérents].Adherent)=True))
    ORDER BY [T Adhérents].Nom, [T Adhérents].Prenom;
    la numérotation n'est pas continue.

    Comment numéroter les lignes après le filtre sur les Emails ?

    Merci de votre aide.

    A+

    c15

  14. #14
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 342
    Points : 19 581
    Points
    19 581
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Il faut que le critère de la requête corresponde au critère de la fonction de domaine DCount :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT [T Adhérents].N°Adherent, [T Adhérents].Titre, [T Adhérents].Nom, [T Adhérents].Prenom, [T Adhérents].DateAdhesion, [T Adhérents].Email, [T Adhérents].Adresse, IIf(Mid([T Adhérents].CP,3,1)='-',Mid([T Adhérents].CP,InStr([T Adhérents].CP,'-')+1),[T Adhérents].CP) AS CP1, [T Adhérents].Ville, [T Adhérents].Pays, [Du13]+[Du14]+[Du15]+[Du16]+[Du17] AS [Total dû], [T Adhérents].Du13, [T Adhérents].Du14, [T Adhérents].Du15, [T Adhérents].Du16, [T Adhérents].Du17, DCount('*','[T Adhérents]','(Adherent = True) and ([Email)<>' ') and [N°Adherent]<' & [N°Adherent])+1 AS N°ligne
    FROM [T Adhérents]
    WHERE ((([T Adhérents].Email)<>" ") AND (([T Adhérents].Adherent)=True))
    ORDER BY [T Adhérents].Nom, [T Adhérents].Prenom;

    C'est la 1ère idée qui me vient

    Cdlt,

  15. #15
    Membre habitué Avatar de C15nantes
    Homme Profil pro
    retraité
    Inscrit en
    Février 2011
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2011
    Messages : 379
    Points : 137
    Points
    137
    Par défaut
    Bonjour,

    Merci de cette réponse qui fonctionne parfaitement.
    J'ai juste eu à corriger une erreur de saisie dans Dcount
    J'ai remplacé la ) après Email par ] et le tour est joué.

    Merci encore
    A+

    C15

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

Discussions similaires

  1. [AC-2010] Numéroter les lignes d'une requète avec 3 critères
    Par tuxdiver dans le forum Requêtes et SQL.
    Réponses: 17
    Dernier message: 11/01/2016, 21h31
  2. [AC-2010] Numéroter les lignes d'une requête
    Par AudREN dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 20/10/2014, 19h50
  3. [AC-2003] Numéroter les doublons dans une requête en utilisant une fonction VBA
    Par maldan dans le forum VBA Access
    Réponses: 1
    Dernier message: 23/09/2009, 16h46
  4. Réponses: 1
    Dernier message: 23/09/2009, 15h38
  5. Numérotation des lignes dans une requête
    Par zoom61 dans le forum Access
    Réponses: 5
    Dernier message: 24/10/2006, 10h35

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