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

Bases de données Delphi Discussion :

[Access] Extraire les données d'une semaine qui est à cheval sur deux mois


Sujet :

Bases de données Delphi

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut [Access] Extraire les données d'une semaine qui est à cheval sur deux mois
    Bonjour,
    Voila j'ai un prog. avec bd access sous delphi7,
    Le client demande d'extraire les données par période (sem,mois,années), j'ai crée mes requêtes SQL et tous fonctionne a merveille apart l'extraction de la semaine (dont la semaine est entres deux mois) en sachant que le debut de la semaine chez nous est le dimanche.
    un bout de mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    with ADOQuery1 do
      begin    
        Close;
        SQL.Clear;
        SQL.Add('Select * from Consultations');
        SQL.Add('where (Dentiste=:dent');
        SQL.Add('and (DatePart ("ww", [LaDate])=:tdy1 and DatePart ("m", [LaDate])=:mois1 and DatePart ("yyyy", [LaDate])=:annee1)');
                if DayOfWeek(PlannerCalendar1.Date)=1 then
        begin parameters.ParamValues['tdy1']:=WeekOf((PlannerCalendar1.Date)+1); end
        else begin parameters.ParamValues['tdy1']:=WeekOf(PlannerCalendar1.Date);end;
        parameters.ParamValues['mois1']:=MonthOf(PlannerCalendar1.Date);
        parameters.ParamValues['annee1']:=YearOf(PlannerCalendar1.Date);
        open;
    par ex mai 2018 sa première semaine contient le 29 et 30 avril donc si j’exécute ma requête les donnes de ces dates sont pas extraites merci d'avance !

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour et bienvenue,

    pourquoi ne pas exprimer la requête différemment ?

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select * from Consultations where Dentiste=:dent 
                     and LaDate between :debutsemaine and :finSemaine
    - je ne suis pas un fan de Access loin de là, donc la deuxième ligne de la requête est peut être à modifier en fonction de votre colonne,
    - :finSemaine pourrait être remplacé par :debutsemaine+7, mais ça dépend si les composants d'accès SQL permettent la réutilisation de paramètres

    il vous suffit maintenant au niveau de votre code de trouver le premier jour de la semaine en fonction de la date PlannerCalendar1.Date,
    je n'ai plus trop la mémoire des possibilités de Delphi 7 à ce sujet,
    debutsemaine:= StartOfTheWeek(PlannerCalendar1.Date); donne le lundi de la semaine et non le dimanche
    il faut donc avant transformer PlannerCalender1.Date en un jour "neutre" de semaine par exemple un mardi, mercredi et seulement ensuite
    utiliser debutsemaine:= StartOfTheWeek(PlannerCalendar1.Date) -1 ;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci Sergio,

    J'ai effectivement changer la structure de la requête c'est plus correcte surtout avec la semaine ou l'année change
    mais sinon delphi + SQL db access Ouffff c trop chiant.

    Voila le principe pour ceux qui ont la même demande avec un dimanche comme début de semaine

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL.Add('where (LaDate between :debutsemaine and :finsemaine)';
     
         Parameters.ParamByName('debutsemaine').DataType:=ftDate;
         Parameters.ParamByName('finsemaine').DataType:=ftDate;
          if DayOfWeek(PlannerCalendar1.Date)=1 then
        begin Parameters.ParamByName('debutsemaine').Value:=StartOfTheWeek(PlannerCalendar1.date)+6;
              Parameters.ParamByName('finsemaine').Value:=EndOfTheWeek(PlannerCalendar1.date)+6; end
        else begin Parameters.ParamByName('debutsemaine').Value:=StartOfTheWeek(PlannerCalendar1.date)-1;
        Parameters.ParamByName('finsemaine').Value:=EndOfTheWeek(PlannerCalendar1.date)-1;end;

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    mais sinon delphi + SQL db access Ouffff c trop chiant.
    n'étant ni fan d'ADO, ni d'Access je ne peux que confirmer

    J'aurais procédé quelque peut différemment en ne calculant que la date de début de semaine sachant que la fin de semaine est égale à Date de début + 7
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    je ne vois pas bien l’intérêt d'avoir autant de date

    en SQL comme en développement il faut différencier les données choisie de ce que tu affiche
    tu as une multitude de choix avec la fonction DATEPART
    il faut juste savoir ce que tu veut afficher pour choisir le bon trie

    SELECT Dentiste,...,LaDate
    ,DATEPART(ISOWK,LaDate) AS 'ISO WEEK'
    ,DATEPART(DAY, LaDate) As 'DAY'
    ,DATEPART(MONTH,LaDate) As 'MONTH'
    ,DATEPART(YEAR,LaDate) As 'YEAR'
    FROM CONSULTATIONS
    WHERE Dentiste=:dent
    une fois le choix fait a toi d'afficher
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par anapurna Voir le message
    je ne vois pas bien l’intérêt d'avoir autant de date
    je suis d'accord il y en a une de trop

    tu as une multitude de choix avec la fonction DATEPART
    par contre je ne suis pas d'accord avec l'utilisation de la fonction DATEPART ISO WEEK puisque une des premières spécifications est:
    Citation Envoyé par kavinsky31
    ma semaine standard commence le dimanche
    , de plus il y aurait un bug sur cette fonction du moins était-ce le cas encore début 2016 (étonnant de la part de MS ) selon la lecture de ceci
    où, étrangement, les liens sur les rapports de bugs finissent sur une page 404 (MS mauvais joueur )
    Pour obtenir la bonne semaine à partir d'une date il faudrait utiliser : DatePart("ww", DATEDEPART, 1,2) Voir ici
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 421
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 421
    Points : 5 820
    Points
    5 820
    Par défaut
    salut

    bin en fait il faut qu'il choisisse le calendrier qui l’intéresse le plus et l'année qui va avec ^^
    la plupart des bases de donnée gère les deux type de semaine
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

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

Discussions similaires

  1. Probleme avec les dates
    Par guitariste dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 15/07/2007, 11h03
  2. [EJBQL] [EJB2] probleme avec les dates
    Par amine1980 dans le forum Java EE
    Réponses: 2
    Dernier message: 16/02/2007, 17h09
  3. [SQL Server 2000]Probleme avec les dates !
    Par ChristopheOce dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/10/2006, 15h58
  4. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 16h55
  5. Grop probleme avec les date
    Par stinger000 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/04/2006, 13h49

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