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 :

Date fin de mois chaque mois [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut Date fin de mois chaque mois
    bonjour,

    Ci joint une requete pour vous montré les champs que j'ai


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT OPERATION.COMMERCIALISATION_OPERATION, OPERATION.NOM_OPERATION, LOGEMENT.NUM_LOGE, LOGEMENT.CONTRAT_RESA, LOGEMENT.PRIXLOG_IMMO, LOGEMENT.MONTANT_CA_ESTIME
    FROM OPERATION INNER JOIN LOGEMENT ON OPERATION.NUM_OPERATION = LOGEMENT.NUM_OPERATION;
    j'ai besoin de faire une requête par NOM_OPERATION puis pour une ligne a la date de chaque fin du mois a partir de la date COMMERCIALISATION jusqu’à la date du mois en cours et enfin un cumul CA qui me prend le cumul des NUM_LOGE qui sont réservé en fonction de la date du CONTRAT_RESA et de la date du fins de mois ou l'on ce trouve et ceci on affiche le PRIXLOG_IMMO cumulé de l'ensemble des logement concernet par contre si le lot n'est pas réserve on prend le prix MONTANT_CA_ESTIME

    exemple
    OPERATION.COMMERCIALISATION = 01/05/2017

    lot / date resé / PRIXLOG_IMMO / MONTANT_CA_ESTIME
    A01 / 01/06/2017 / 100 / 110
    A02 / 20/07/2017 / 120 / 140
    A03 / 10/09/2017 / 50 / 60


    donc sa donnerai
    31/05/2017 / 110+140+60
    30/06/2017 / 100 +140+60
    31/07/2017 / 100+120+60
    31/08/2017 / 100+120+60
    30/09/2017 / 100+120+50
    31/10/2017 / 100+120+50
    ...
    31/05/2018 / 100+120+50


    je ne sais comment généré une 1er requete avec les dates de fin du chaque mois a partir de la date OPERATION.COMMERCIALISATION jusqu'a la fin du mois en cours puis gére les calcul en fonction du mois ou nous nous trouvons.


    Pouvez vous m'aidé?

    merci

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut
    Une ébauche de solution serait de créer une table de référence avec toutes les dates de fin de mois au format jj/mm/aaaa.

    Pour remplir cette table, on peut utiliser une procédure vba

    Ensuite à voir comment utiliser cette table pour ton problème.
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  3. #3
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut,
    Une proposition de formulation de calculs pour votre req
    Calcul du CA chaque fin de mois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CalculCA: VraiFaux(EstNull([CONTRAT_RESA]);[CAESTIME];[PRIXLOG]) <-- QBE
    IIf(IsNull([CONTRAT_RESA]),[CAESTIME],[PRIXLOG]) AS CalculCA <-- SQL
    Calcul Fin de mois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FinMois: VraiFaux(EstNull([CONTRAT_RESA]);SérieDate(Année(Date());Mois(Date())+1;1)-1;SérieDate(Année([CONTRAT_RESA]);Mois([CONTRAT_RESA])+1;1)-1) <-- QBE
    IIf(IsNull([CONTRAT_RESA]),DateSerial(Year(Date()),Month(Date())+1,1)-1,DateSerial(Year([CONTRAT_RESA]),Month([CONTRAT_RESA])+1,1)-1) AS FinMois <-- SQL
    Dans les 2 formules je fais un test sur le champ CONTRAT_RESA qui peut ou non contenir une date.
    Si le champ est vide, on calcule fin de mois du mois en cours (31/05/2018) sinon on calcule fin de mois de CONTRAT_RESA
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut
    exemple
    OPERATION.COMMERCIALISATION = 01/05/2017

    lot / date resé / PRIXLOG_IMMO / MONTANT_CA_ESTIME
    A01 / 01/06/2017 / 100 / 110
    A02 / 20/07/2017 / 120 / 140
    A03 / 10/09/2017 / 50 / 60

    donc sa donnerai
    31/05/2017 / 110+140+60
    30/06/2017 / 100 +140+60
    31/07/2017 / 100+120+60
    31/08/2017 / 100+120+60
    30/09/2017 / 100+120+50
    31/10/2017 / 100+120+50
    ...
    31/05/2018 / 100+120+50
    Merci de confirmer les règles de gestion ci-dessous

    30/06/2017 / 100 +140+60 --> Pourquoi passe-t-on a 100 pour A01
    31/07/2017 / 100+120+60 -->On passe a 120 pour A02 car existe une résa pour le mois de juillet et valable pour les mois suivants
    30/09/2017 / 100+120+50 --> On passe a 50 pour A03 car existe une résa pour le mois de septembre et valable tous les mois suivants
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut
    30/06/2017 / 100 +140+60 --> Pourquoi passe-t-on a 100 pour A01
    on passe a 100 pour le A01 en juin car nous avons une réservation en juin a 100€.

    Nous avons au début du programme un prix de base par exemple 110 pour le A01 mais en fonction de comment on le vends on peux être a plus ou a moins donc le CA cumulé varie entre de début du projet et chaque mois en fonction des dates

  6. #6
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut
    Je te propose cette solution

    • Créer une requête stockée nommée par exemple qryProd qui permet d'obtenir les données suivantes => Lot dateResa PRIXLOG_IMMO MONTANT_CA_ESTIME. Dans mon exemple j’ai utilisé une table tblProd à la place de la requête qryProd
    • Création d'une table de toutes les date de fin de mois depuis le début de l'activité = tblDateFinMois
    • La requête suivante pour le calcul des sommes. Il faudra remplacer la table tblProd par qryProd



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT tblDateFinMois.dateFinMois, (SELECT Sum(iif ((dateResa) <=(dateFinMois), PRIXLOG_IMMO,MONTANT_CA_ESTIME)) FROM tblProd) AS sumPrixLog
    FROM tblDateFinMois
    WHERE (((tblDateFinMois.dateFinMois)>=#1/1/2017#))
    ORDER BY tblDateFinMois.dateFinMois;
    Avec #01/01/2017# Opération commercialisation
    Exemple

    tblDateFinMois

    dateFinMois
    31/12/2017
    31/01/2018
    28/02/2018
    31/03/2018
    30/04/2018
    31/05/2018
    30/06/2018

    tblDateFinMois
    lot dateResa PRIXLOG_IMMO MONTANT_CA_ESTIME
    A01 01/01/2018 100 110
    A02 20/02/2018 120 140
    A03 10/03/2018 50 60

    Résultat requête

    dateFinMois sumPrixLog
    31/12/2017 310
    31/01/2018 300
    28/02/2018 280
    31/03/2018 270
    30/04/2018 270
    31/05/2018 270
    30/06/2018 270
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  7. #7
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut
    super merci je pense que je vais pouvoir bien avance

    merci a tous encore

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    981
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 981
    Points : 1 028
    Points
    1 028
    Billets dans le blog
    36
    Par défaut
    Une fois ta solution développée, merci de la partager dans ce forum.

    Et n’oublie pas de cliquer sur le pouce vert des réponses qui t’ont aidé
    Mal nommer un objet, c'est ajouter au malheur de ce monde, car le mensonge est justement la grande misère humaine, c'est pourquoi la grande tâche humaine correspondante sera de ne pas servir le mensonge
    Poésie 44, n° 17 - Albert Camus

    Mes réponses vous ont aidés, un clic sur leur pouce vert
    Bonjour chez vous

  9. #9
    Débutant  
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2007
    Messages : 745
    Points : 202
    Points
    202
    Par défaut
    ok merci encore

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

Discussions similaires

  1. [VxiR2] Du 12 mois flottant mois par mois?
    Par EmmanuelleC dans le forum Designer
    Réponses: 4
    Dernier message: 13/04/2011, 12h01
  2. [Dates] Compte à rebours chaque mois
    Par isa150183 dans le forum Langage
    Réponses: 1
    Dernier message: 01/06/2007, 19h03
  3. [Dates] calendrier : premier jour de chaque mois
    Par vodasan dans le forum Langage
    Réponses: 2
    Dernier message: 21/02/2007, 07h26
  4. Réponses: 1
    Dernier message: 22/11/2006, 19h34
  5. Acer gridvista et moi et moi et moi
    Par gagarin dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 28/03/2006, 17h00

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