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 16/11/2010, 21h33   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 128
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 128
Points : 13
Points : 13
Par défaut Requête pour partager les frais

Bonjour à toutes et à tous,

Je suis en train de créer une bdd concernant les frais que mon associé et moi avons lors de l'exécution d'un chantier.

J'ai crée une table avec comme champs : Nom - Date - Type de frais - Montant
J'ai une requête qui fait la somme de Montant trié par Nom

Ce que je voudrais faire, c'est une requête qui calcule par rapport à notre façon de fonctionner. A savoir, que les dépenses soient partagées exactement en deux. Donc je voudrais faire un calcul qui me soustrait le total dépensé par nous deux et que ça soit divisé par deux. J'ai essayé de l'ajouter à ma requête existante mais ça fonctionne pas.

Comment puis je faire ? Une nouvelle requête ? Mais comment ?

Merci d'avance pour votre aide. Ci joint le début de fichier que j'ai fait.
chatomon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2010, 21h56   #2
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 395
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 395
Points : 4 409
Points : 4 409
bonjour,

Citation:
Envoyé par chatomon Voir le message
Je suis en train de créer une bdd concernant les frais que mon associé et moi avons lors de l'exécution d'un chantier.
Dans ce cas ne manquerait-il pas un champ (clé étrangère) NumeroChantier dans ta table des frais ? (on doit sommer des frais en regroupant par chantier, non ?).

De plus je pense qu'il faut pouvoir généraliser au cas où un seul des deux associés paye les frais d'un chantier, ou prévoir le cas d'un futur troisième associé. Non ?
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 12h47   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 128
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 128
Points : 13
Points : 13
Bonjour,

Merci pour ta réponse.

Voici les modifications que j'ai faites pour effectivement généraliser la bdd.

Par contre, je ne comprends pas ce que tu veux dire par clé étrangère. C'est quoi ?

Comment puis je faire par faire une requête par associé (peu importe le chantier) et une autre par rapport au chantier et par associé ?

Merci pour votre aide.

PS : Que c'est dur access après ne plus y avoir touché depuis quelques années
chatomon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 18h48   #4
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 395
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 395
Points : 4 409
Points : 4 409
encore une question pour lever un doute

si dans la table Frais j'ai qu'un seul des deux associés qui paye des frais:

Code :
1
2
3
chantier       Nom     ...    Montant    
chantier1      toto            100
chantier1      toto            200
est-ce que seul toto règle les frais:
Code :
1
2
chantier       Nom     ...    Montant    
chantier1      toto            300
ou bien les frais sont aussi partagés

Code :
1
2
3
chantier       Nom     ...    Montant    
chantier1      toto            150
chantier1      titi            150
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 19h10   #5
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 128
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 128
Points : 13
Points : 13
Bonjour f-leb,

Merci pour ta réponse.

En fait, les frais sont partagés. Disons que l'idée de base est tout diviser par deux tant les recettes que les dépenses. Pour les recettes, c'est simples

En fait si Toto paie 300 et que Titi paie 100, Titi devra 100 à Toto.

Merci encore
chatomon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 19h29   #6
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 395
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 395
Points : 4 409
Points : 4 409
si je décompose,

R_TotalFraisChantier:
Code sql :
1
2
3
SELECT Chantiers.N° AS NumChantier, Sum(Nz([Montant],0)) AS TotalFraisChantier
FROM Chantiers LEFT JOIN Frais ON Chantiers.N° = Frais.Chantier
GROUP BY Chantiers.N°;
qui retourne:
Code :
1
2
3
4
NumChantier	TotalFraisChantier
1	              0
2	              947
3	              466
puis R_FraisPartage:
Code sql :
1
2
3
SELECT Associes.Associes, Chantiers.Chantier, [TotalFraisChantier]/2 AS FraisPartagé
FROM Associes, R_TotalFraisChantier INNER JOIN Chantiers ON 
R_TotalFraisChantier.NumChantier = Chantiers.N°;
qui retourne:

Code :
1
2
3
4
5
6
7
Associes	Chantier	FraisPartagé
Mustapha	Ain Sebaa	0
Dimitri	        Ain Sebaa	0
Mustapha	Tamesna     	473.5
Dimitri        	Tamesna     	473.5
Mustapha	Kénitra Hassan  233
Dimitri	        Kénitra Hassan  233
ça roule ?
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2010, 22h37   #7
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 128
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 128
Points : 13
Points : 13
Merci f-leb,

Je regarde tout cela demain matin.
Ca me paraît très clair. Faut juste que je fasse un calcul de différence entre ce que chaque associé a payé par rapport à l'autre, ce qui permettra alors de savoir ce que doit l'un à l'autre.

Merci beaucoup.

Je reviens sur le sujet demain
chatomon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 18h30   #8
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 128
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 128
Points : 13
Points : 13
Merci beaucoup, ça fonctionne nickel. Reste quelques petites choses à peaufiner mais là je devrais y arriver

Par contre, comment puis je faire pour apurer lorsque les associés ont réglés les différences ? Admettons que un associé doit 500 à l'autre et que cela a été réglé ? En fait, je ne voudrais pas que l'apurement modifie les chiffres "comptables" car j'aimerais peaufiner la bdd afin de pouvoir calculer exactement les revenus et dépenses.

Merci encore
chatomon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 18h55   #9
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 128
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 128
Points : 13
Points : 13
Voilà les modifications faites tant pour le nom des tables que quelques détails (je travaille pas en euros, je suis au Maroc donc Dh sans les centimes)

Sur ce base (et c'est encore là que je bloque) je voudrais avoir une requête (qui finira dans un état avec une belle phrase bien clair pour mon associé )
qui me calcule ce que doit un associé par rapport à un autre.

En clair dans l'exemple de la bdd ci joint, un associé doit 1.000 à l'autre. Je me base sur le calcul du montant dépensé par l'un MOINS le montant dépensé par l'autre DIVISE par 2.
J'arrive pas à faire cette partie.

Autre petite chose concernant ce point, sera t il possible de créer un état avec un résumé total des dépenses (résumé depuis le dernier règlement entre les associés) qui mentionnera qui doit à qui et combien ?

Merci encore
chatomon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2010, 15h52   #10
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 128
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 128
Points : 13
Points : 13
Bonjour,

Grâce à l'aide du forum, j'ai réussi à avancer par mal sur la partie "Partage de frais" de la BDD mais je bloque sur un point.

J'ai une requête qui me donne ci-dessus

Code :
1
2
3
4
5
6
7
8
 
Nom	          Chantier	        Somme De Montant
Mustapha	Ain Sebaa	         1116,00
Dimitri	Ain Sebaa	         1920,00
Mustapha	Tamesna	            46,00
Dimitri	Tamesna	           901,00
Mustapha	Kénitra Hassan II	     53,00
Dimitri	Kénitra Hassan II	    413,00
Je voudrais créer une autre requête qui me calcule par chantier la différence entre ce que Mustapha et Dimitri ont payé. En clair, je voudrais soustraire 1920-1116 et diviser le résultat par deux pour le chantier de Ain Sebaa, soustraire 901 - 46 et diviser par deux, ........ .

Je n'arrive pas à sélectionner les valeurs de chacun des associés et à les calculer.

Merci d'avance pour votre aide.

PS : Sur mon idée, la requête va diviser par deux (vu qu'il y a deux associés) mais comment puis je faire pour automatiser le calcul en fonction du nombre d'associés dans une table ?

Merci
chatomon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2010, 18h23   #11
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 395
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 395
Points : 4 409
Points : 4 409
bonjour,

sous quelle forme tu veux le résultat ?

Comme ça ? :

Code :
1
2
3
4
Nom	          Chantier	        Somme De Montant    ARegler
Mustapha	Ain Sebaa	         1116,00            +402 
Dimitri	        Ain Sebaa	         1920,00            -402
...
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/11/2010, 18h26   #12
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 128
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 128
Points : 13
Points : 13
Bonjour f-leb,

Oui c'est comme cela que je l'envisageais. Je pense que ça me permettra après de faire un état qui me fera une phrase type en fonction de négatif ou du positif du résultat.

Merci
chatomon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2010, 19h30   #13
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 395
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 395
Points : 4 409
Points : 4 409
par exemple, une requête R_TotalFraisChantier qui ramène par chantier:

Code :
1
2
3
4
N°	TotalFraisChantier
1	3036
2	...
3	...
une requête R_frais sur la table des frais qui ramène:
Code :
1
2
3
4
Chantier	Nom	     SommeDeMontant
Ain Sebaa	Mustapha     1 116.00 €
Ain Sebaa	Dimitri	     1 920.00 €
...
et une dernière requête de sélection R_Frais------R_TotalFraisChantier avec jointure sur le chantier qui ramène:

Code :
1
2
3
4
Chantier	Nom	 SommeDeMontant     TotalFraisChantier
Ain Sebaa	Mustapha    1 116.00 €	           3 036.00 €
Ain Sebaa	Dimitri	    1 920.00 €	           3 036.00 €
...
il suffit d'y rajouter une colonne avec la formule pour calculer [ARegler]
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2010, 22h58   #14
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 128
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 128
Points : 13
Points : 13
Bonsoir f-leb

Tout d'abord merci pour ta réponse.

C'est exactement ce que j'ai fait mais j'ai un problème dans le résultat, ça me donne des montants qui ne correspondent pas à ce que je demande.

Dès que j'ajoute une colonne, soit j'ai des montants que je ne comprends soit ça ajoute des lignes (en fait, je pense que ça ne fait pas le regroupement)

Bref, je comprends pas ce qu'access me fait (ou ce que je lui demande de faire de manière erronée )
chatomon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 10h03   #15
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 395
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 395
Points : 4 409
Points : 4 409
bonjour chatomon,

il doit y avoir un problème dans les regroupements.

La 1ère requête R_TotalFraisChantier est un regroupement sur Tbl_Frais.chantier.

La 2ème requête R_frais est un regroupement sur Tbl_Frais.chantier et Tbl_Frais.Nom.

La dernière requête qui fait le bilan sur les deux requêtes précédente:R_Frais------R_TotalFraisChantier avec jointure sur le chantier,
est une simple requête de sélection sans regroupement.

Où que ça coince ?
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 12h32   #16
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 128
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 128
Points : 13
Points : 13
Bonjour f-leb,

Je ne peux pas te dire où ça coince, je comprends rien aux chiffres donnés par access.

J'ai crée une requête R_FraisDuParAssocie en ajoutant le champ de l'autre requête et ça me donne des chiffres venu de je ne sais où.

J'ai essayé d'enlever le regroupement dans le champs que j'ai ajouté mais ça m'indique une erreur.

Bref je coince de partout

Merci encore pour ton temps passé et ton aide.
chatomon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 13h53   #17
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 395
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 395
Points : 4 409
Points : 4 409
bon, je m'y perd un peu dans ton fichier

Ci-joint le fichier avec les requêtes de mon message #13.

J'y ai rajouté une requête R_NbrAssociesParChantier qui retourne le nombre d'associés ayant participé aux frais par chantier:

R_NbrAssociesParChantier:
Code sql :
1
2
3
4
5
6
SELECT Tbl_Chantiers.N°, count(*) AS NbrAssocies
FROM Tbl_Chantiers 
INNER JOIN 
(SELECT DISTINCT Tbl_Frais.Chantier, Tbl_Frais.Nom FROM Tbl_Frais)  AS U 
ON Tbl_Chantiers.N°=U.Chantier
GROUP BY Tbl_Chantiers.N°;

Tu cliques sur R_bilan pour récapituler les frais.
Attention, j'ai rajouté un associé "toto" pour les tests

Est-ce que cela convient à tes besoins ?
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 14h51   #18
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 128
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 128
Points : 13
Points : 13
Re bonjour f-leb,

Merci pour ton fichier. Si toi tu t'y perds, aie aie aie

En fait dans le message 16, c'est la dernière version de ce que j'ai fait.

Le problème est sur R_FraisDuParAssocie où les calculs sont fantaisistes dès que j'ajoute le champ FraisPartages de R_FraisPartages

En fait, je n'arrive pas à avoir un résultat cohérent (et mathématique) de la soustraction du champ Sommedemontant de la R_FraisParAssocie moins le champ FraisPartagé de la R_FraisPartage

Un résultat comme tu le mentionnes dans ton message 11 serait parfait.

Merci encore
chatomon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 15h33   #19
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 395
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 395
Points : 4 409
Points : 4 409
Citation:
Envoyé par chatomon Voir le message
Un résultat comme tu le mentionnes dans ton message 11 serait parfait.
c'est bien ce que j'étais en train de faire

Tu reprends la requête R_Bilan de mon fichier joint:
Code :
1
2
3
Nom	   Chantier	 SommeDeMontant	   TotalFraisChantier	NbrAssocies	
Mustapha   Ain Sebaa	  1 116.00 € 	    3 036.00 €      	 2
Dimitri	   Ain Sebaa	  1 920.00 €        3 036.00 €	         2
Tu as tous les éléments pour faire le calcul en rajoutant une colonne:
Code :
ARegler: [TotalFraisChantier]/[NbrAssocies]-[SommeDeMontant]
pour obtenir le résultat:
Code :
1
2
3
Nom	   Chantier	 SommeDeMontant	   TotalFraisChantier	NbrAssocies	 ARegler
Mustapha   Ain Sebaa	  1 116.00 € 	    3 036.00 €      	 2               402 €
Dimitri	   Ain Sebaa	  1 920.00 €        3 036.00 €	         2              -402 €
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2010, 16h06   #20
Candidat au titre de Membre du Club
 
Inscription : mai 2009
Messages : 128
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 128
Points : 13
Points : 13
Merci à toi pour cette explication.

Je vais voir comment je peux l'intégrer dans ma bdd. Je reviens sur le sujet plus tard

Merci encore à toi.
chatomon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h57.


 
 
 
 
Partenaires

Hébergement Web