Bonjour,
J'ai une zone de liste liée à une requête. J'aimerais savoir quelle expression je dois insérer dans ma requête
pour voir énumérer chaque donnée ( 1,2,3,4,5,6,7..... )
Merci !
Bonjour,
J'ai une zone de liste liée à une requête. J'aimerais savoir quelle expression je dois insérer dans ma requête
pour voir énumérer chaque donnée ( 1,2,3,4,5,6,7..... )
Merci !
Bonsoir,
Merci du temps consacré.
J'aurais pensé qu'il était plus simple d'insérer une variable " X" dans la requête et la faire
incrémenter de 1 à chaque ligne de la zone de liste ( Ex. : X = X +1 )
D'ailleurs on m'avait déjà donné une réponse à ma question il y a quelques jours :
------------------------
Bonjour,
Dans une requête il faut vous baser sur un champ servant à classer vos enregistrements pour créer cette colonne de numérotation.
Cdlt,
-----------------------
En ce qui concerne votre réponse , je ne comprends pas trop le code des exemples fournis et surtout comment ajouter ce code vb
quelque part dans mon programme vb.
Merci
Peut-être que cette suggestion de la FAQ : Comment incrémenter un champ dans une requête SQL ? pourrait te donner un début de réponse
Jeannot
Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA
Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre
Bonjour,
Merci de me répondre.
A quel endroit dans les colonnes de ma requête doit-on écrire pour incrémenter ma zone de liste.
Merci !
Jacques
bonsoir,
dans la requête de la propriété Contenu de ta zone de liste, met ce code en mode SQL:
ou directement ceci dans la première colonne en mode création (sans oublier le tri croissant sur N°):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT (SELECT COUNT(N°) FROM Req_Dép AS T WHERE N° < Req_Dép.N°)+1 AS # , [Date], Tiers, Catégorie, Montant, Memo FROM Req_Dép ORDER BY N°;
Code : Sélectionner tout - Visualiser dans une fenêtre à part #: (SELECT COUNT(N°) FROM [Req_Dép] AS T2 WHERE N° < [Req_Dép].N°)+1
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Bonjour,
Merci de me répondre.
Je me demande si on parle du même champs No.
Je pense qu'il faudrait ajouter une variable " compteur " à ma requête et zone de liste pour énumérer ( ou compter ) chaque fiche.
Voici les champs de ma base de donnée :
Voici ma requête avec l'ajout de votre commande que j' imagine au mauvais endroit :
Voici ma zone de liste en mode création :
Mode formulaire :
Merci de votre temps,
Jacques ( programmeur perdu à temps perdu )
bonjour,
bien vu ...Voici ma requête avec l'ajout de votre commande que j' imagine au mauvais endroit
il ne faut pas mettre la sous-requête (SELECT COUNT(N°) FROM [Req_Dép] ... en Critères mais en Champ.
En mode création de la requête:
Champ:| #: (SELECT COUNT(N°) FROM [Req_Dép] AS T2 WHERE N° < [Req_Dép].N°)+1
Il ne faut pas faire le tri sur le champ calculé # mais sur le champ N° (cela représente l'instruction Order By dans le SQL complet) qui ne sera pas affiché (Coche Affichage à Non).
# c'est l'alias de la colonne, ainsi il apparaitra comme en-tête de colonne dans la liste déroulante.
c'est justement ce que fait la sous-requêteJe pense qu'il faudrait ajouter une variable " compteur " à ma requête et zone de liste pour énumérer ( ou compter ) chaque fiche.
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Bonjour ,
Je crois saisir le principe du sous-formulaire. C'est comme une fonction.
Est-ce qu'il faut écrire : #: avant (select(count()....
Est-ce qu'il faut entrer la même expression dans ma zone de liste du formulaire ? Je penserais que non.
Tel que présenté ci-haut , ça ne fonctionne pas.
Merci de votre temps.
Jacques
j'ai oublié les crochets [#], car # est un caractère réservéEst-ce qu'il faut écrire : #: avant (select(count()....
si cela pose un problème on peut aussi ne rien mettre, Access se chargera de donner un nom à l'expression
C'est l'un ou l'autre ...Est-ce qu'il faut entrer la même expression dans ma zone de liste du formulaire ? Je penserais que non.
SOIT, on met l'expression dans la requête d'origine (Req_Dép) et on l'utilise ensuite dans la liste déroulanteou même en mettant directement Req_Dép dans Contenu de la liste déroulante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT [#], [Date], Tiers, Catégorie, Montant, Memo FROM Req_Dép;
SOIT on la met dans la requête de la liste déroulante.
Pour rappel j'avais donné le SQL qui allait bien (mis à part l'oubli des crochets), il suffit juste de faire un copier/coller dans la propriété Contenu de la liste déroulante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT (SELECT COUNT(N°) FROM Req_Dép AS T WHERE N° < Req_Dép.N°)+1 AS [#] , [Date], Tiers, Catégorie, Montant, Memo FROM Req_Dép ORDER BY N°;
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Bonjour,
Dans ma requête Req_dép , j'ai simplement inséré l'expression [#]: (SELECT COUNT(N°) FROM [Req_Dép] AS T2 WHERE N° < [Req_Dép].N°)+1
On me signale une erreur de syntaxe
L'autre option, on me signale aussi une erreur de syntaxe
Quand vous dites : on met l'expression dans la requête d'origine (Req_Dép) et on l'utilise ensuite dans la liste déroulante ...
cette liste déroulante , c'est celle du champs de la requête ???
Merci encore !,
Jacques
bonjour,
visiblement Access n'aime pas l'expression [#] dans certains cas de figure, on va donc mettre une quote devant ['#]... ou après, c'est au choix.Dans ma requête Req_dép , j'ai simplement inséré l'expression [#]: (SELECT COUNT(N°) FROM [Req_Dép] AS T2 WHERE N° < [Req_Dép].N°)+1
On me signale une erreur de syntaxe
non, je voulais dire zone de liste, pas liste déroulante .. mais on y est presque, on va rester sur l'option modification de la requête d'origine (Req_Dép)Quand vous dites : on met l'expression dans la requête d'origine (Req_Dép) et on l'utilise ensuite dans la liste déroulante ...
cette liste déroulante , c'est celle du champs de la requête ???
il faut donc remplacer [Req_Dép] par Dépenses dans l'expression puisqu'on est dans la requête elle-même:
dernière chose: c'est le tri sur N° qui permet d'avoir l'énumération, d'où l'importance de le faire sur N° dans la requête et pas sur l'expression (['#])
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part ['#]: (SELECT COUNT(N°) FROM Dépenses AS T WHERE N° < Dépenses.N°)+1 FROM Dépenses)
Ensuite, il faut simplement mettre Req_Dép dans la propriété Contenu de la zone de liste.
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Bonjour ,
Pour m'assurer que l'expression soit bien écrite , j'ai fait un copier/coller directement dans la requête.
On me signale immédiatement une erreur ...
J'ai tenté d'autres alternatives comme '# ou ['#] ou# ou [#] mais toujours une bulle d'erreur qui apparaît ...
J'ai aussi essayé de changer l'expression par #: (SELECT COUNT(N°) FROM Dépenses] AS T2 WHERE N° < [Dépenses].N°)+1
ou encore ['#]: (SELECT COUNT(N°) FROM [Dépenses] AS T2 WHERE N° < [Dépenses].N°)+1 .... mais sans résultat
Je pense qu'on est proche d'une solution.
Merci de votre patience.
Jacques
bonjour,
cela fait déjà 2 fois que je précise qu'il ne FAUT PAS METTRE LE TRI sur le champ calculé, MAIS SUR LE CHAMP N°, à rajouter dans la requête si il n'y est pas:
c'est ce qui provoque l'erreur, j'espère que celle-ci sera la bonne ...
Attention, il manque un crochet devant Dépenses sur ce code:
c'est celui-ci qui est bon (merci de n'y rien modifier):j'ai aussi essayé de changer l'expression par
Code : Sélectionner tout - Visualiser dans une fenêtre à part '#: (SELECT COUNT(N°) FROM Dépenses] AS T2 WHERE N° < [Dépenses].N°)+1
Code : Sélectionner tout - Visualiser dans une fenêtre à part '#: (SELECT COUNT(N°) FROM Dépenses AS T WHERE N° < Dépenses.N°)+1 FROM Dépenses)
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Bonjour,
Finalement*ça fonctionne très bien. Du premier coup !
Je m'entêtais à picosser autour des # ... en négligeant le reste.
Deuxièmement, je suis un peu rouillé. La dernière fois remonte à plus de 9 mois.
Je manque de pratique et d'entraînement...
C'est à titre personnel et passe-temps que je " programme " , donc c'est plus difficile de " garder la forme ".
Merci de votre patience. J'envie vos connaissances !
Bonne journée ( heure du QC ) ou bonne soirée dépendamment !
Jacques
alors c'est ?
bonne journée donc, (en France, c'est la fin d'après-midi)
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Bonjour,
Désolé , c'est pas ce que je m'attendais ....
J'ai appliqué sur un autre programme et testé ...
Je m'attendais qu'on compte les fiches comme 1,2,3,4,5,6,7,9,10,11,12 ...ainsi de suite ...
Autrement dit , je veux simplement compter le nombre de fiches de la requête ...
ou combien d'éléments ont été filtrés dans ma requête entre 2 dates ?
Voila le résultat que j'ai obtenu :
J'espère ne pas trop vous importuner ...
Merci ,
avec tri Décroissant ???? il ne faut quand même pas pousser ...
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Bonjour,
Je ne pousse rien.
Je ne fais qu'ajouter votre code à ceux que vous m'avez vous-même donnés l'an passé.
C'est parce qu'il y a un bouton " bascule " qui trie les dates chronologiquement.
La question est maintenant de savoir si c'est possible de compter les lignes ou fiches ( 1,2,3,4,5,6... )
en ordre croissant ou décroissant ...
Si c'est pas possible .... ben , c'est simple , on oublie tout ça !
En attendant je vais aller pelleter mon entrée ... Merci ! ( voir photo )
bonjour,
le réchauffement climatique ne concerne pas cette partie du globe, on dirait...
Concernant la numérotation, le code fourni ne peut pas fonctionner avec un tri décroissant, étant donné que l'énumération est dynamique.
Sinon, il faudrait passer par une requête création de table pour "fixer" le calcul dans un champ, un peu lourd je pense, pour une numérotation d'une zone de liste.
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager