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
    Membre � l'essai
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2016
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Alg�rie

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : F�vrier 2016
    Messages : 4
    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 619
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 619
    Billets dans le blog
    65
    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 ;

  3. #3
    Membre � l'essai
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2016
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Alg�rie

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : F�vrier 2016
    Messages : 4
    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 619
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 619
    Billets dans le blog
    65
    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

  5. #5
    Expert confirm�
    Avatar de anapurna
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    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 491
    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

  6. #6
    R�dacteur/Mod�rateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 619
    Billets dans le blog
    65
    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

  7. #7
    Expert confirm�
    Avatar de anapurna
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    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 491
    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

+ 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