14 Replies Latest reply: Mar 27, 2017 8:57 AM by Nathalie Roche RSS

    variables interactives

    Nathalie Roche

      Bonjour,

      J'ai créé dans mon script une variable durée calculant la durée d'une modalité de soin selon les dates de début et de fin de la modalité:

      DD as "DEMod",

      DF as "DFMod",

          Case

          When MODALITE.DF Is Null And MODALITE.DD >= '01/01/2016' and MODALITE.DD <= '31/08/2016' Then To_Date('31/08/2016', 'dd/mm/yyyy') - MODALITE.DD

           When MODALITE.DF Is Null And MODALITE.DD < '01/01/2016' Then To_Date('31/08/2016', 'dd/mm/yyyy') - To_Date('31/12/2015', 'dd/mm/yyyy')

           When MODALITE.DF >= '31/08/2016' And MODALITE.DD >= '01/01/2016' and MODALITE.DD <= '31/08/2016'Then To_Date('31/08/2016', 'dd/mm/yyyy') - MODALITE.DD

           When MODALITE.DF >= '31/08/2016' And MODALITE.DD < '01/01/2016' Then To_Date('31/08/2016', 'dd/mm/yyyy') - To_Date('31/12/2015', 'dd/mm/yyyy')

           When MODALITE.DF <= '31/08/2016' And MODALITE.DD >= '01/01/2016' and MODALITE.DD <= '31/08/2016' Then MODALITE.DF - MODALITE.DD

           When MODALITE.DF <= '31/08/2016' and MODALITE.DF >= '01/01/2016' And MODALITE.DD < '01/01/2016' Then MODALITE.DF - To_Date('31/12/2015', 'dd/mm/yyyy')

        End As "DuréeMod2016",

       

      Seulement comme j'ai plusieurs années, je répète donc ce bout de code sur les années voulues. De plus la période est fixe, ici de janvier à août. Pensez-vous qu'il serait possible de rendre tout cela un peu plus intéractif: laisser l'utilisateur le choix des date de la période ?

       

      Merci!

      Nathalie

        • Re: variables interactives
          Sébastien Fatoux

          Quand tu dis "Laisser l'utilisateur le choix des dates de la période", si il y a plusieurs utilisateur qui veulent avoir chacun leurs périodes et pouvoir les modifier rapidement dans l'interface, ceci ne pourra pas se faire dans le script.

           

          Mais si tu as un utilisateur, ou plusieurs utilisateurs qui vont tous utiliser la même période, ces période pourront être définie dans un fichier Excel qui sera chargé dans l'application et on pourra rendre ça dynamique dans le script

            • Re: variables interactives
              Nathalie Roche

              Bonjour Sébastien,

              Merci pour cette réponse.

              En fait, l'utilisateur étant principalement moi, voir deux collègues en plus, mais je voudrais éviter d'aller à chaque fois dans le code pour changer la période, histoire de répondre plus vite aux demandes.

               

              Quand tu parles d'un fichier Excel, c'est à dire? Avec toutes les dates possibles?

                • Re: variables interactives
                  Sébastien Fatoux

                  Bonjour,

                   

                  Voici un exemple de ce qui peut être réalisé.

                   

                  J'ai créer vos champs DuréeModyyyy, mais je pense qu'il est plus simple de travailler avec les champs AnnéeMod et DuréeMod qui ne vont changer de nom en fonction des années considérées.

                   

                  Si vous désirez changer  les années ou la période à considérer, vous pouvez modifier les variable depuis l'interface et relancer le chargement. Attention, n'oubliez pas de commenter l'initialisation des variables dans le script.

                   

                  Le calcul de la durée se faisant après cout, vous pouvez commenter dans votre code la partie de la requete effectuant le calcul.

                   

                  // table simulant vosdonnées
                  Modalité:
                  LOAD * INLINE [
                  IDMod, DEMod, DFMod, Info
                  1, 01/03/2014, 25/05/2014, Modalité hors des années considérés
                  2, 01/05/2014, , Modalité sans date de fin couvrant toutes les années considérées
                  3, 05/06/2014, 18/03/2015, Modalité commançant avant une année considérée et se terminant dans une année considérée
                  4, 04/01/2015, 06/03/2015, Modalité commançant et se terminant dans la même année considéré
                  5, 22/03/2015, 05/03/2016, Modalité commançant et se terminant dans deux années considérés différente
                  6, 01/03/2016, 09/05/2017, Modalité commançant dans une année considérée et se terminant dans une année non considérée
                  ]
                  ;

                  // Ces variables pourront être commentée après la première exécution,
                  // elles pourront être modifiées depuis l'interface
                  SET vsYears = '2015,2016'; // Années à considérer
                  SET vsPeriodFrom = '01/01'; // Début de la période
                  SET vsPeriodTo = '31/08'; // Fin de la période

                  // Initialisation de la table Durée
                  Durée:
                  LOAD *
                  Inline [IDMod, YearMod, DuréeMod];

                  FOR Each tmpYear in $(vsYears)
                  LET tmpPeriodFrom = Date#('$(vsPeriodFrom)/$(tmpYear)');
                  LET tmpPeriodTo = Date#('$(vsPeriodTo)/$(tmpYear)');

                  Concatenate(Durée)
                  LOAD
                       
                  IDMod,
                       
                  $(tmpYear) as YearMod,
                       
                  if(DFMod > '$(tmpPeriodTo)' or Len(DFMod)=0, '$(tmpPeriodTo)', DFMod)
                        -
                  if(DEMod < '$(tmpPeriodFrom)', '$(tmpPeriodFrom)', DEMod) as DuréeMod,
                       
                  if(DFMod > '$(tmpPeriodTo)' or Len(DFMod)=0, '$(tmpPeriodTo)', DFMod)
                        -
                  if(DEMod < '$(tmpPeriodFrom)', '$(tmpPeriodFrom)', DEMod) as DuréeMod$(tmpYear)
                  Resident Modalité
                  Where  ( DEMod >= '$(tmpPeriodFrom)' and  DEMod <= '$(tmpPeriodTo)' )
                         
                  or ( DFMod >= '$(tmpPeriodFrom)' and  DFMod <= '$(tmpPeriodTo)' )
                         
                  or ( DEMod < '$(tmpPeriodFrom)' and  (DFMod > '$(tmpPeriodTo)' or Len(DFMod)=0) );

                  NEXT

                  // Suppression des variables temporaires
                  SET tmpYear = ;
                  SET tmpPeriodFrom = ;
                  SET tmpPeriodTo = ;

              • Re: variables interactives
                Jean Eude

                Bonjour,

                 

                Moins "jolie" et moins performant mais tu peux :

                - mettre une liste de sélection ou zone de saisis dans ton interface

                - l'utilisateur sélectionne ça date de début et date de fin

                - puis avec des déclencheurs vous impactez la sélection sur vos data (vous recalculez DuréeMod2016 à chaque fois)