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 :

Accéder aux champs des résultats d'une requête


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Accéder aux champs des résultats d'une requête
    Bonjour à tous !

    J'ai une petite question en SQL. J'ai besoin d'afficher des informations comme un calendrier. L'utilisateur doit sélectionner le mois qu'il veut visualiser, et visualiser les informations concernant tout le mois qu'il a sélectionné.
    Ceci fait suite à de récents travaux que j'ai effectué, mais lorsque l'utilisateur choisissait le lundi, il visualisait toutes les infos pour la semaine du lundi sélectionné. Je ne sais pas du tout si je m'exprime bien, excusez moi d'avance pour mes explications.

    N'ayant au départ que la donnée du mois, je n'ai trouvé que la solution ci-dessous :
    - créer une requête qui, pour ce mois donné, sélectionne tous les lundis de ce mois (REQUETE 1)
    - créer 5 requêtes indépendantes qui séparent les 5 lundis du mois un à un
    - effectuer des requêtes me permettant pour ces lundis d'avoir les informations dont j'ai besoin pour la semaine
    - et finalement, de faire l'union de ces 5 dernières requêtes afin d'avoir les informations sur le mois

    Je pense que c'est assez compliqué, je ne sais pas si vous comprendrez mes explications. J'aimerai savoir s'il est possible de faire moins compliqué. En premier lieu, j'avais comme idée de supprimer mes 5 requêtes qui sélectionnent les lundis séparément, et d'accéder à ces lundis directement dans les résultats de la REQUETE1. Je ne sais pas du tout si cela est possible en SQL, comme en C par exemple lorsqu'on parcours un tableau, mais ici il agirait de parcourir le tableau des résultats de la REQUETE1, d'avoir les informations successivement pour chaque lundis et de les stocker dans un tableau lundi après lundi, jusqu'à ce qu'on ait parcouru tous les lundis du mois.

    C'est assez compliqué à comprendre je pense du fait que cela soit des tables et requêtes que vous ne connaissez pas, mais j'espère que je me suis assez bien expliquée.
    Merci d'avance pour toute aide que vous m'apporterez.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    J'ai un peu de mal à te suivre.
    Tu veux afficher les données pour une semaine choisie ? C'est bien cela ?

    Si oui, tu peux utiliser, peut-être, la fonction format(TaDate; "aaaa-ee"; 2; 1) qui va te donner l'année et le numéro de semaine dans l'année (1 à 53) de la date choisie.
    Sinon, tu peux peut-être utliiser weekday(TaDate; 1) qui va te donner le jour de la semaine correspondant à la date.
    Ou alors peut-être Between DateLundi and DateAdd("j"; 6; DateLundi) qui va sélectionner les données comprises entre le lundi et le dimanche qui suit.

    Si je suis à côté de la plaque, met un exemple de ce que tu as et de ce que tu veux.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour. Merci d'abord pour ta réponse.

    Ce que je veux faire, c'est accéder directement aux résultats de ma requête séparément. En C par exemple je peux accéder à l'élément i de mon tableau T en faisant T[i]. En SQL, je fais une requête req1 qui me donne une liste de dates. J'aimerai savoir s'il existe un moyen d'accéder à la première ligne de ces résultats, en faisant un req1[0] peut être comme en C ...

    Merci d'avance !

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    Ce que je veux faire, c'est accéder directement aux résultats de ma requête séparément. En C par exemple je peux accéder à l'élément i de mon tableau T en faisant T[i]. En SQL, je fais une requête req1 qui me donne une liste de dates. J'aimerai savoir s'il existe un moyen d'accéder à la première ligne de ces résultats, en faisant un req1[0] peut être comme en C ...
    plutôt que d'essayer de donner des équivalences techniques d'un autre langage qui ne font pas avancer le sujet, si tu essayais en premier lieu de nous faire comprendre ce que tu souhaites obtenir en donnant des exemples avec des impressions d'écrans (ou un schéma dans Excel ou Word) ?
    Par exemple, toute la partie ci-dessous, mériterait quelques éclaircissements avec des exemples illustrés :
    J'ai besoin d'afficher des informations comme un calendrier. L'utilisateur doit sélectionner le mois qu'il veut visualiser, et visualiser les informations concernant tout le mois qu'il a sélectionné.
    ...
    mais lorsque l'utilisateur choisissait le lundi, il visualisait toutes les infos pour la semaine du lundi sélectionné.
    ...
    N'ayant au départ que la donnée du mois, je n'ai trouvé que la solution ci-dessous :
    - créer une requête qui, pour ce mois donné, sélectionne tous les lundis de ce mois (REQUETE 1)
    - créer 5 requêtes indépendantes qui séparent les 5 lundis du mois un à un
    - effectuer des requêtes me permettant pour ces lundis d'avoir les informations dont j'ai besoin pour la semaine
    - et finalement, de faire l'union de ces 5 dernières requêtes afin d'avoir les informations sur le mois
    A savoir: sur le site, il y a une application Planning très connue des forumeurs ...
    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 ?

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    SQL n'offre pas de structure à 2 dimensions, on travaille toujours un enregistrement à la fois.
    Donc tu ne peux pas faire quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonRecordset(NumEnr, NumChamp).
    Par contre tu peux peut-être utiliser un sous-formulaire pour présenter tes données en tableau.

    Ou alors faire du code qui va aller jusqu'à l'enregistrement voulu puis lire le champ désiré.
    La fonction DFirst() peut aussi faire cela.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Merci pour vos réponses. Je ne me suis pas très bien exprimée, désolée encore.

    Voici les informations que j'ai au départ, extraites de différentes tables à l'aide d'une première requête qu'on appellera requête_infos:
    Nom : Capture.PNG
Affichages : 128
Taille : 9,9 Ko

    J'ai besoin d'afficher, pour un nom donné et un mois donné, les informations en mode calendrier. Comme exemple le choix du nom A et du mois d'Avril :
    Nom : Capture1.PNG
Affichages : 117
Taille : 2,1 Ko

    Ou encore pour le choix du nom B et du mois d'Avril :
    Nom : Capture2.PNG
Affichages : 129
Taille : 2,2 Ko

    Ceci permet aux utilisateurs, lorsqu'ils ont travaillé sur une journée, de bien vérifier qu'ils ont travaillé un journée entière.

    Pour cela, j'utilise un formulaire qui permet de sélectionner les nom et les mois.
    - Une première requête sélectionne dans les résultats de requête_infos les nom disponibles (requête_noms).
    - Une deuxième requête sélectionne dans les résultats de requête_infos les mois disponibles (requête_mois).
    - Une troisième requête sélectionne les informations correspondant à un nom et un mois sélectionné dans le formulaire (requête_critères).

    Ainsi, en effectuant la requête_critère, j'ai bien toutes les informations dont j'ai besoin pour le nom et le mois que l'utilisateur a choisi. C'est à partir de là que tout se complique pour moi, car il faut afficher les jours en entête de colonne, et pour une même semaine mettre les informations sur la même ligne.

    En premier lieu, j'ajoute deux champs à ma requête_infos, un champ "jour" et un champ "mois", qui, pour une date donnée, je donne le jour correspondant et son mois.

    J'effectue ensuite une requête d'analyse croisée (requête_analyse_croisée) qui me permet de mettre les jours en entête de colonne et d'avoir les informations de la manière suivante :
    Nom : Capture3.PNG
Affichages : 154
Taille : 15,4 Ko

    Vous voyez bien que pour une semaine donnée, les informations sont sur des lignes différentes. J'ai d'abord supprimé de ma sélection le nom de la tâche, car je n'en ai pas besoin, ainsi que la date. Pour faire mon affichage, je crée :
    - une requête qui sélectionne les lundis du mois choisi par l'utilisateur dans le formulaire (requête_lundis)
    - 5 requêtes qui sélectionnent les lundis un à un (requête_lundi1, requête_lundi2, requête_lundi3 ...)
    - 5 requêtes qui, pour un lundi donné, sélectionne les informations dont j'ai besoin pour la semaine du lundi donné (requête_semaine1, requête_semaine2 ...)
    - 5 requêtes qui, pour une semaine donnée, fait la somme des champs d'une même colonne afin d'avoir les informations pour une semaine sur une même ligne (requête_semaine1_somme, requête_semaine2_somme ...)
    - Une dernière requête qui fait l'union des 5 requêtes de somme précédentes, ce qui me permet d'avoir les informations sur tout le mois.

    Comme vous le voyez, il y a énormément de requêtes, ce qui alourdi beaucoup mon application.
    Par exemple, je voulais simplifier l'accès aux lundis en effectuant directement une recherche dans requête_lundis, au lieu de créer les 5 requêtes requête_lundi1, requête_lundi2 ... C'est pour cela que je vous ai demandé s'il était possible de faire un T[i]. De plus, si vous pensez qu'il y a un quelconque moyen de simplifier mon travail, faites le moi savoir ! Je n'ai pas trouvé plus simple que cela pour l'instant, c'est pour cela que je vous ai sollicité.

    Voilà, avec ces explications et les captures de tableaux que je vous ai fait, j'espère que c'est moins flou pour vous !

    Merci encore d'avoir lu mon message, qui est certainement très long. Et merci pour le temps que vous passez à me lire.

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Bonjour à tous

    Si je peux me permettre vous pouvez bien simplifier.

    Créer une requête analyse croisée à partir de votre requête de base :

    Nom : requete_analyse_croisée.jpg
Affichages : 236
Taille : 180,2 Ko

    i) - Pour le mois, utiliser le champ Mois en en-tête de ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mois: Format([Date];"mmm\ aaaa")
    Donne par exemple "avr 2019"

    ii) - Pour afficher les jours en en-tête de colonne utiliser le champ en-tête de colonne:

    La propriété "En-têtes des colonnes" : "Lundi;"Mardi;"Mercredi;"Jeudi;"Vendredi"

    iii) - Pour les valeurs à l'intersection utiliser la fonction somme sur le champ NbJour.

    Voici le résultat obtenu :

    Nom : resultats.jpg
Affichages : 118
Taille : 29,5 Ko

    Note importante : éviter les mots réservés pour les noms de vos champs, comme Nom, Date, etc..
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  8. #8
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2019
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci pour votre réponse !

    Ceci est presque ce que j'ai envie d'afficher. Cependant, cela affiche sur une signe le résultat correspondant à un mois. Ce que je voudrais c'est le résultat en mode calendrier, avec une ligne représentant une semaine. Par exemple, voici un affichage souhaité avec + d'informations de base :
    Nom : Capture.PNG
Affichages : 147
Taille : 8,6 Ko

    En faisant votre méthode, cela m'affiche bien les résultats donnés mais somme toutes les colonnes entre elles.

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 260
    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 260
    Points : 19 423
    Points
    19 423
    Billets dans le blog
    63
    Par défaut
    Oui, il faudrait ajouter une colonne en en-tête de ligne avec la formule de marot :

    Semaine : format([Date]; "aaaa-ee"; 2; 1)

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

Discussions similaires

  1. 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
  2. Réponses: 2
    Dernier message: 02/12/2005, 21h21
  3. Réponses: 1
    Dernier message: 02/12/2005, 20h18
  4. Pagination des résultats d'une requête
    Par dl_jarod dans le forum ASP
    Réponses: 2
    Dernier message: 17/10/2005, 14h30
  5. Calcul à partir des résultats d'une requète
    Par Sendo dans le forum Access
    Réponses: 1
    Dernier message: 29/09/2005, 17h46

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