Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/11/2011, 16h54   #1
Invité régulier
 
Femme Tiffany Pitel
Étudiant
Inscription : novembre 2011
Messages : 13
Détails du profil
Informations personnelles :
Nom : Femme Tiffany Pitel
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : novembre 2011
Messages : 13
Points : 7
Points : 7
Par défaut Problème avec une requête

Bonjour,
Je solicite votre aide sur ce forum car je suis étudiante en L2 economie-gestion avec une spécialité maths & info. Or c'est la première année que j'utilise ACCESS et j'ai un petit soucis.
Lors de nos TD je n'ai eu jusqu'à présent aucun problème pour construire mes requêtes mais le prof nous a donné un "devoir maison" (qui compte pour notre partiel) et qui est d'un niveau bien plus élevé que ce que nous avons fait en cours jusqu'à présent.
Autant dire que j'ai déjà pas mal cogité sur la première question mais je n'y arrive pas... Et c'est assez frustrant c'est donc pour cela que je viens vous demander de l'aide.

Voici l'énoncé dans sa totalité:

Le stockage d'informations dans une base permet de satisfaire les deux types d'usages, qu'on peut faire de ces données :

 Un usage opérationnel à travers la gestion de la donnée. Par exemple, enregistrement d'une vente (par ajout d'une nouvelle facture), référencement d'un nouveau client (ajout ou modification de ses coordonnées), mise à jour du stock (mise à jour de la valeur d'un champ, effectuée lors d'inventaires annuels).

 Un usage décisionnel, analyses de tendances, basées sur des statistiques, pour déterminer une stratégie d'entreprise (d'où le terme "décisionnel").
Vous venez de finir vos études et êtes embauché dans une entreprise de revente de fourniture et de mobilier. Ses principaux clients sont d'autres sociétés. Vous faites partie du service comptabilité-facturation et connaissez Access, outil au travers duquel l'entreprise assure toute sa gestion. Votre maîtrise de l'outil fait converger vers vous les demandes des autres services.
La base est structurée ainsi :




Il faut noter que :

 Une facture traduit la vente d'un ou de plusieurs produits.

 Chaque trimestre, les prix de chaque produit varient. Un nouveau barème/catalogue est édité. Le service Marketing met à jour le prix de vente de chaque produit en fonction de l'état du marché et le service Achat met à jour le coût d'achat du produit en fonction des dernières négociations avec ses fournisseurs/fabricants.

 Les dates de barèmes sont consécutives. La date de fin d'un barème est la veille de la date de début du barème suivant. Aucune période ne se chevauche.


Voici ma première question:
1. Vous découvrez cette base de données et voulez vérifier au travers d'une requête que les barèmes sont bien consécutifs. Vous constatez qu'il y a 8 enregistrements dans la table des Barème.  Compter le nombre de barèmes pour lequel il existe un barème qui commence le jour suivant la fin du barème courant. Il doit normalement y en avoir 7, puisque le barème le plus récent n'a pas de successeur.

J'ai donc esssayé de nombreuses requêtes mais rien ne marche...
Mon premier problème concerne le fait que la date de début doit être égale à une date de fin +1 jour. Et je ne sais pas vraiment comment éxecuter cela sous access.
Je crois avoir essayé DATEADD ("d", 1, #jj/mm/aaaa#), mais sans résultat.
Sinon mon autre problème est que l'on me demande de comparer les dates de fin et dates de début où la date de début est égale à une (date de fin +1).
Le problème c'est que c'est deux lignes différentes alors access va comparer la date de fin et la date de début de chaque ligne...

Bref je tourne en rond je crois...


Je vous remercie vraiment d'avance!

PS: je continue à chercher et je vous ferait part de mes découvertes ou illuminations
Tifany.Pitel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2011, 17h52   #2
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 447
Points : 4 447
Bonjour Tiffany,

hé bien avec DateAdd tu n’es pas loin mais avec les assistants il faut procéder en au moins deux temps :
Une 1ère requête R_Datefinplusun avec idBareme et un champ calculé
Code :
 Datefinplusun : AjDate("j";[DateFin];1)
Puis une autre requête :
R_Datefinplusun------Bareme
avec la jointure R_Datefinplusun.Datefinplusun------Bareme.DateDebut où tu ramènes R_Datefinplusun.idBareme qui va ramener les…
Citation:
Envoyé par Tifany.Pitel
…barèmes pour lequel il existe un barème qui commence le jour suivant la fin du barème courant
…et un comptage sur le nombre d’enregistrements retournés pour finir.
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2011, 18h32   #3
Invité régulier
 
Femme Tiffany Pitel
Étudiant
Inscription : novembre 2011
Messages : 13
Détails du profil
Informations personnelles :
Nom : Femme Tiffany Pitel
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : novembre 2011
Messages : 13
Points : 7
Points : 7
Euh à vrai dire je n'ai pas très bien compris ce qu'il fallait que je fasse...
En gros c'est une histoire de sous requêtes mais c'est ce que j'ai essayé de faire et cela ne marche pas.
Voila ce que j'avais essayé juste avant de lire ton post :

Code :
1
2
3
4
5
6
7
SELECT Count(DateDébut)
FROM Barème INNER JOIN (
                                   SELECT DATEADD ("d", 1, DateFin) AS Date1
                                   FROM Barème
                                    )         
ON (Barème.DateDébut = Date1)
WHERE DateDébut=Date1
Tifany.Pitel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2011, 18h42   #4
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 447
Points : 4 447
je proposais de le faire avec les assistants pour les requêtes, tu fais tout graphiquement pour tester.

Citation:
Envoyé par f-leb Voir le message
Une 1ère requête R_Datefinplusun avec idBareme et un champ calculé
Code :
 Datefinplusun : AjDate("j";[DateFin];1)
Tu créées une nouvelle requête que tu enregistres sous le nom R_Datefinplusun

Citation:
Puis une autre requête :
R_Datefinplusun------Bareme
avec la jointure R_Datefinplusun.Datefinplusun------Bareme.DateDebut où tu ramènes R_Datefinplusun.idBareme qui va ramener les…


…et un comptage sur le nombre d’enregistrements retournés pour finir.
Tu créées une 2ème requête dans laquelle tu insères la table Bareme et la requête précédente R_Datefinplusun et tu fais la jointure à la souris.
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2011, 18h57   #5
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 415
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 415
Points : 4 447
Points : 4 447
en SQL, on ne doit pas être loin non plus,

essaye avec:

Code :
1
2
3
4
5
6
7
SELECT Count(*)
FROM Barème INNER JOIN (
                                   SELECT DATEADD ("d", 1, DateFin) AS Date1
                                   FROM Barème
                                    ) as T        
ON (Barème.DateDébut = T.Date1)
WHERE DateDébut=Date1
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/11/2011, 21h45   #6
Invité régulier
 
Femme Tiffany Pitel
Étudiant
Inscription : novembre 2011
Messages : 13
Détails du profil
Informations personnelles :
Nom : Femme Tiffany Pitel
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : novembre 2011
Messages : 13
Points : 7
Points : 7
Merci beaucoup, je teste ça dès que j'en ai l'occasion et je te tiens au courant.
Le truc c'est que théoriquement je n'ai pas le droit d'utiliser les assistants et en plus je ne sais même pas m'en servir...

Mon DM est plutôt long alors on se recroisera certainement!

Merci
Tifany.Pitel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2011, 23h40   #7
Invité régulier
 
Femme Tiffany Pitel
Étudiant
Inscription : novembre 2011
Messages : 13
Détails du profil
Informations personnelles :
Nom : Femme Tiffany Pitel
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : novembre 2011
Messages : 13
Points : 7
Points : 7
Par défaut Super!

Ca y est je suis rentrée chez moi et je n'ai tout simplement pas pu résister à l'envie de tester la requête!! =P
Donc ca y est, finalement ca marche!! Je suis tout de même contente car je n'était pas très loin, plutôt même en bon chemin. Je savais que quelque chose clochait mais je ne savais pas quoi...

Je te remercie encore d'avoir eu le courage de lire le pavé que j'ai posté au début me je préférait etre précise.
Et puis, comme je l'ai dit juste avant le dm comporte 23 questions et qui sont d'un niveau très très largement supérieur aux questions habituelles qu'on a en TD alors je risque de sacrément réfléchir mais je pense que je reviendrait soliciter votre aide...

Merci mille fois encore ^^
Tifany.Pitel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h51.


 
 
 
 
Partenaires

Hébergement Web