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

Accès aux données Discussion :

Récupération données avec Linq


Sujet :

Accès aux données

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Points : 122
    Points
    122
    Par défaut Récupération données avec Linq
    Salut à toutes et à tous,

    Pour un développement qui m'a été demandé, je dois récupérer des données, mais je coince.
    (Bien entendu) je ne peux pas modifier la structure de la base de données (mal montée malheureusement).

    Soit un Dataset récupérant les données de la base de données et contenant, entre autre, 4 tables :

    Depenses Contrats ContratsVsFactures Factures
    NumContrat --<-- NumContrat --<-- NumContrat
    NoFacture -->-- NoFacture
    DateDepense DateFacture
    Dépense 1
    Dépense 2


    Mon problème est qu'on me demande les dépenses par facture.
    Donc si on a 3 factures pour un contrat, par exemple,
    pour la 1ère facture il me faudra la somme des dépenses 1 et 2 de ce contrat depuis le début jusqu'à la DateFacture de la 1ère facture
    pour la 2ème facture il me faudra la somme des dépenses 1 et 2 de ce contrat entre la date de la 1ère facture et la date de la 2ème facture
    pour la 3ème facture il me faudra la somme des dépenses 1 et 2 de ce contrat entre la date de la 2ère facture et la date de la 3ème facture

    Ça fait un bon moment que je cherche sans trouver la solution, c'est pourquoi je fais appel aux gourous du forum.

    Il me semble qu'il me faut commencer par extraire tous les contrats de la facture,
    Ensuite il me faut trouver toutes les factures concernant chaque contrat de la facture (pour en extraire les dates entre lesquelles je dois chercher),
    Ensuite je trie cette liste de contrats/factures par date de facturation,
    Ensuite, pour chaque contrat, il me faut récupérer la date de la facture que je cherche (sera la date de fin) et la date de la ligne précédente (sera la date du début de la somme des dépenses),
    Enfin, pour chaque contrat, il me faut faire la somme des dépenses 1 et dépense 2 de la table Dépense pour lesquels le contrat = contrat de la liste précédente et entre les dates de début et de fin.

    Selon vous, est-ce que ma logique de travail est bonne ?
    Si oui, je n'ai pas réussi à monter la requête pour extraire cela.

    Comment devrais-je faire ?

    Merci de vos z'avis z'avisés
    Il n'y a pas de problèmes. Il n'y a que des solutions.
    Malheureusement, elles sont parfois un peu dur à trouver ...


    Aucune touche n'a été maltraitée pour réaliser ce texte.

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2013
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2013
    Messages : 51
    Points : 74
    Points
    74
    Par défaut
    Ce que l'on te demande est un report. Un rapport, le plus facile, si tu es assez confiant et que tu as les droits tu peux extraire les données avec une procédure stocké qui retournera le résultat surtout si il y a beaucoup de factures (voir des millions...)

    Le SQL va te permettre d'obtenir ce que tu as besoins.

    Évidement tu peux refaire une requête linq, mais tu risque d'avoir des problèmes de perfomence.

    Avec des sum et group by et les bonnes jointures tu devrais facilement arrivé à le faire.

    Mais souvent des factures il y en a beaucoup donc je crois que le procedure stocké ou table valuate function serait plus approprié.

    Ta logique semble bien. je n'a pas creuser en profondeur, mais si tu as besoins d'aide montre moi ce que tu as fais pour le moment.

  3. #3
    Membre expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Points : 3 173
    Points
    3 173
    Par défaut
    C'est une requète assez simple, encore faut-il que vous nous donniez le nom des tables et colonnes afin que nous puissions vous aider à faire la requète.
    Prendre conscience, c'est transformer le voile qui recouvre la lumière en miroir.
    MCTS Database Development
    MCTS Database Administration

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 244
    Points : 122
    Points
    122
    Par défaut
    Bonjour et merci de vos réponses.
    L'avertissement de réponse était tombé dans mes pourriels, raison du délai.

    Voici mes tables et leurs champs pertinents :
    Factures
    NoFacture
    DateFacture
    MontantFacture

    FacturesVsContrats
    NoFacture
    NumContrat
    Montant
    Frais

    Contrats
    NumContrat
    Client
    Cout (champs calculé que j'ajoute pour calculer le coût du contrat)

    Temps
    IDemploye
    NumContrat
    Date
    Cout
    Deplacement

    Depenses
    IDemploye
    NumContrat
    Date
    Cout

    Je me permet de vous rappeler le but que je cherche à atteindre.
    Sortir une liste des factures entre 2 dates, tout en calculant les montants des contrats impliqués mais en ne prenant que les montants entre 2 factures si ce contrat se retrouve sur plusieurs factures.

    Exemple :
    Facture 10, le 18/12/2015, concernant le contrat 120 et 118 (admettons que cette facture soit la première des contrats 118 et 120).
    Facture 12, le 20/12/2015, concernant le contrat 119 (admettons que cette facture soit la première du contrat 119).
    Facture 14, le 15/01/2016, concernant le contrat 119.
    Facture 15, le 15/01/2016, concernant le contrat 120.
    Facture 16, le 01/02/2016, concernant le contrat 119.
    Facture 17, le 02/02/2016, concernant le contrat 120.



    Je dois donc trouver
    Facture 10 : calculer le champs Cout de la table contrats qui est la somme des champs Temps/Cout + Temps/Deplacement + Depenses/Cout pour les contrats 118 et 120 dont les dates sont antérieures ou égale au 18/12/2015
    Facture 12 : calculer le champs Cout de la table contrats qui est la somme des champs Temps/Cout + Temps/Deplacement + Depenses/Cout pour le contrat 119 dont les dates sont antérieures ou égale au 20/12/2015
    Facture 14 : calculer le champs Cout de la table contrats qui est la somme des champs Temps/Cout + Temps/Deplacement + Depenses/Cout pour le contrat 119 dont les dates sont antérieures ou égale au 15/01/2016 et postérieures au 20/12/2015 (puisque ce contrat est repris dans la facture 12)
    Facture 15 : calculer le champs Cout de la table contrats qui est la somme des champs Temps/Cout + Temps/Deplacement + Depenses/Cout pour le contrat 120 dont les dates sont antérieures ou égale au 15/01/2016 et postérieures au 18/12/2015 (puisque ce contrat est repris dans la facture 10)
    Facture 16 : calculer le champs Cout de la table contrats qui est la somme des champs Temps/Cout + Temps/Deplacement + Depenses/Cout pour le contrat 119 dont les dates sont antérieures ou égale au 01/02/2016 et postérieures au 15/01/2016 (puisque ce contrat est repris dans la facture 14)
    Facture 17 : calculer le champs Cout de la table contrats qui est la somme des champs Temps/Cout + Temps/Deplacement + Depenses/Cout pour le contrat 120 dont les dates sont antérieures ou égale au 02/02/2016 et postérieures au 15/01/2016 (puisque ce contrat est repris dans la facture 15)

    Merci de votre aide et de vos avis pour m'aider à trouver la solution à mon problème,
    Jean-Marc
    Il n'y a pas de problèmes. Il n'y a que des solutions.
    Malheureusement, elles sont parfois un peu dur à trouver ...


    Aucune touche n'a été maltraitée pour réaliser ce texte.

Discussions similaires

  1. [XL-2003] Cellules : récupération données avec chemin de fichier dynamique
    Par lolymeupy dans le forum Excel
    Réponses: 6
    Dernier message: 24/03/2015, 16h18
  2. [CakePHP] Probleme récupération données avec foreach
    Par kiradeus dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 25/04/2012, 11h39
  3. [Vxi3] Récupération données avec classement
    Par justine' dans le forum Webi
    Réponses: 2
    Dernier message: 21/11/2011, 18h19
  4. [MySQL] Problème récupération données avec apostrophe
    Par Nata31 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 21/07/2006, 17h26
  5. Réponses: 13
    Dernier message: 20/03/2003, 09h11

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