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

WinDev Discussion :

Champ Agenda / Récupérer le nombre d'occurences d'un Rendez-vous avec répétition [WD17]


Sujet :

WinDev

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 187
    Points : 69
    Points
    69
    Par défaut Champ Agenda / Récupérer le nombre d'occurences d'un Rendez-vous avec répétition
    Bonsoir,

    Je n'arrive pas à récupérer le nombre de répétition d'un RDV dans le champ AGENDA.

    J'ai essayé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    gtabTabrdv est un tableau de RendezVous
     
    FEN_Agenda.gtabTabrdv=AgendaListeRendezVous(FEN_Agenda.AGD_Agenda,agRdvSélectionné)
     
    Info(FEN_Agenda.gtabTabrdv[1].Répétition..NbOccurrence)
    Cela me renvoie un résultat "0".

    Merci d'avance pour votre aide.

  2. #2
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 768
    Points
    1 768
    Par défaut
    Citation Envoyé par jer64 Voir le message
    Je n'arrive pas à récupérer le nombre de répétition d'un RDV dans le champ AGENDA.
    1 - Qu'est-ce que tu entends par "répétition" ???

    Citation Envoyé par jer64 Voir le message
    J'ai essayé le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    gtabTabrdv est un tableau de RendezVous
     
    FEN_Agenda.gtabTabrdv=AgendaListeRendezVous(FEN_Agenda.AGD_Agenda,agRdvSélectionné)
     
    Info(FEN_Agenda.gtabTabrdv[1].Répétition..NbOccurrence)
    Cela me renvoie un résultat "0".

    2 - la syntaxe que tu utilises avec AgendaListeRendezVous() et agRdvSélectionné permet de récupérer les informations d'un rendez-vous particulier en l’occurrence "le" rendez-vous sélectionné. Donc pas une liste de rendez-vous...

    Précise ce que tu veux faire...
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 187
    Points : 69
    Points
    69
    Par défaut
    Bonjour,

    En fait je crée au départ un rendez-vous avec répétition chaque jour ou chaque semaine ou chaque mois ou année.

    Mon problème vient du fait que lorsque je programme la suppression de ce RDV, je laisse le choix à l'utilisateur de ne supprimer que l'occurrence sélectionnée ou toutes.

    Pour toutes les occurrences, je supprime simplement l'enregistrement dans ma BDD.

    Pour une occurrence en particulier ou une occurrence et les suivantes ou précédentes, j'ai besoin de connaître sa position et surtout si c'est la première ou dernière occurence.

    Exemple: Un rendez-vous tous les mardi à 16H à partir du mardi 10 décembre 2013 jusqu'au mardi 4 février 2014. Si l'utilisateur veut supprimer ou modifier seulement le rdv du mardi 4 février 2014....

    Voilà j'espère être arrivé à être clair.

    Merci d'avance.

  4. #4
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 768
    Points
    1 768
    Par défaut
    Citation Envoyé par jer64 Voir le message
    En fait je crée au départ un rendez-vous avec répétition chaque jour ou chaque semaine ou chaque mois ou année.

    Mon problème vient du fait que lorsque je programme la suppression de ce RDV, je laisse le choix à l'utilisateur de ne supprimer que l'occurrence sélectionnée ou toutes.

    Pour toutes les occurrences, je supprime simplement l'enregistrement dans ma BDD.

    Pour une occurrence en particulier ou une occurrence et les suivantes ou précédentes, j'ai besoin de connaître sa position et surtout si c'est la première ou dernière occurence.

    Exemple: Un rendez-vous tous les mardi à 16H à partir du mardi 10 décembre 2013 jusqu'au mardi 4 février 2014. Si l'utilisateur veut supprimer ou modifier seulement le rdv du mardi 4 février 2014....
    Si je comprends bien, en base tu enregistres le rdv répétitif et pas les rdv de la répétition.
    On voit le détail des rdv répétitif seulement dans l'affichage de l'agenda.

    Si je ne m'abuse dans le champ agenda il n'y a pas de sélection multiple, donc forcément il ne peut y avoir qu'un rdv sélectionné.
    Dans ton c'en est heureux, comment aurait tu gérait une sélection multiple sur plusieurs rdv répétitifs différents ?

    Donc quand dans le champ agenda 1 rdv est sélectionné, tu dois être capable de savoir à quel rdv répétitif il est rattaché.

    Ensuite d'après ce que j'ai compris tu veux que l'utilisateur ait 3 types d'action possiblent :
    1 - Suppression du seul rdv sélectionné
    2 - Suppression de tous les rdv précédent, jusqu'au rdv sélectionné
    3 - Suppression de tous les rdv à partir du rdv sélectionné

    Pour faire ces opérations tu n'as pas besoin de récupérer des renseignements supplémentaires du champ agenda tu a tout ce qu'il te faut avec l'identification du rdv répétitif du rdv sélectionné.

    1 - Suppression du seul rdv sélectionné -> 2 solution éclater le rdv répétitif sur 2 rdv répétitif ou gérer un fichier d'exclusion de rdv, j'opte pour la 1ère
    . suppression dans le champ agenda de tout les rdv du rdv répétitif sélectionné
    . modification en base du rdv répétitif sélectionné : du rdv début initial au rdv précédent à celui sélectionné
    . ajout en base du 2ème rdv répétitif : du rdv suivant celui sélectionné au rdv fin initial
    . ajout dans le champ agenda de toutes les répétitions de rdv des rdv répétitif précédemment modifié/ajouté

    2 - Suppression de tous les rdv précédent, jusqu'au rdv sélectionné
    . suppression dans le champ agenda de tout les rdv du rdv répétitif sélectionné
    . modification en base du rdv répétitif sélectionné : du rdv début initial au rdv précédent à celui sélectionné
    . ajout dans le champ agenda de toutes les répétitions de rdv des rdv répétitif précédemment modifié

    3 - Suppression de tous les rdv à partir du rdv sélectionné
    . suppression dans le champ agenda de tout les rdv du rdv répétitif sélectionné
    . modification en base du rdv répétitif sélectionné : du rdv suivant celui sélectionné au rdv fin initial
    . ajout dans le champ agenda de toutes les répétitions de rdv des rdv répétitif précédemment modifié

    Pour les actions 2 et 3 tu peux ne supprimer dans le champ agenda que les rdv avant ou après le rdv sélectionné, ça évite de faire l'action d'ajouter dans le champ agenda toutes les répétitions de rdv du rdv répétitif modifié.
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 187
    Points : 69
    Points
    69
    Par défaut
    Merci de l'attention que tu portes à mon problème.

    Je confirme qu'un RDV répétitif tient sur un seul enregistrement dans la table de ma BDD. La répétition ne fait qu'apparaître dans le champ agenda. Pour ce faire j'ai dans ma table une colonne qui prend un code 0 ou 1 pour signaler au programme la répétition.

    Pour les suppressions de RDV je le fais fonctionner de la manière que tu m'as indiqué mais je bug dans certain cas :

    Quand l'utilisateur crée un RDV répétitif, il choisit une date de fin de répétition qui ne correspond pas obligatoirement au dernier RDV pour les répétitions hebdo, mensuelles ou annuelles.

    Ex : un rdv tous les 25 de chaque mois, l'utilisateur peut très bien mettre une fin de répétition au 31/03 pour un rdv créé le 25/12.

    Suppression d'un seul rdv : j'éclate mon enregistrement en 2, ca c'est OK mais si je sélectionne le rdv dans mon exemple du 25/03, je vais avoir un enregistrement qui démarre le 25/12 jusqu'au 25/02, et un autre qui démarre le 25/04 jusqu'au 31/03. Et la c'est le bug car je n'aurais dû que modifier l'enregistrement d'origine. Pour éviter ce problème que l'on retrouve sur les autres modes de suppression, il me semble plus facile de connaître la position de mon rdv sélectionné et faire un traitement spécifique si c'est le dernier ou premier rdv de la répétition.

    PS : J'utilise MySQL en mode natif sans Analyse

  6. #6
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 768
    Points
    1 768
    Par défaut
    Citation Envoyé par jer64 Voir le message
    Je confirme qu'un RDV répétitif tient sur un seul enregistrement dans la table de ma BDD. La répétition ne fait qu'apparaître dans le champ agenda. Pour ce faire j'ai dans ma table une colonne qui prend un code 0 ou 1 pour signaler au programme la répétition.

    Pour les suppressions de RDV je le fais fonctionner de la manière que tu m'as indiqué mais je bug dans certain cas :

    Quand l'utilisateur crée un RDV répétitif, il choisit une date de fin de répétition qui ne correspond pas obligatoirement au dernier RDV pour les répétitions hebdo, mensuelles ou annuelles.

    Ex : un rdv tous les 25 de chaque mois, l'utilisateur peut très bien mettre une fin de répétition au 31/03 pour un rdv créé le 25/12.

    Suppression d'un seul rdv : j'éclate mon enregistrement en 2, ca c'est OK mais si je sélectionne le rdv dans mon exemple du 25/03, je vais avoir un enregistrement qui démarre le 25/12 jusqu'au 25/02, et un autre qui démarre le 25/04 jusqu'au 31/03. Et la c'est le bug car je n'aurais dû que modifier l'enregistrement d'origine. Pour éviter ce problème que l'on retrouve sur les autres modes de suppression, il me semble plus facile de connaître la position de mon rdv sélectionné et faire un traitement spécifique si c'est le dernier ou premier rdv de la répétition.

    PS : J'utilise MySQL en mode natif sans Analyse
    Désolé mais je ne vois pas où est le problème dans la mesure que lorsque tu sélectionnes la cellule du rdv tu es capable de connaître l'id du rdv répétitif et la date du rdv sélectionné dans l'agenda. Par conséquent tu dois pourvoir faire les 3 types de suppressions que tu souhaites.

    Après l'exemple que tu prends c'est le cas où le rdv à supprimer seul est à la fin de la répétition.Tu auras le même problème en début de répétition.
    Dans ces cas il ne te faut pas diviser le rdv en 2 puis qu'il s'agit de supprimer les bornes externes de la période, en fait tu vas réduire la période.
    Pour cela tu peux utiliser les mêmes procédures que pour les suppressions avant/après selon le cas.
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 187
    Points : 69
    Points
    69
    Par défaut
    Pour les rdv en début de période je suis d'accord car il suffit de comparer la date de début du rdv sélectionner avec la date de début de période. Mais pour le dernier rdv c'est plus compliqué car si je compare la date de début du rdv selectionner avec la date de fin de période je risque d'avoir un décalage pour les rdv hebdo, mensuels et annuels.

    Mais tu viens de me donner une idée, il suffit pour savoir si je suis sur le dernier rdv de la période de comparer per différence la date de début de la sélection avec la date de fin de période.

    Pour les rdv hebdo : différence <=7 jours

    Pour les rdv mensuels : difference<=31 jours ou 30 (problème de la gestion des mois ???)

    Pour les rdv annuels : différence<=365 jours ou 366 (problème de gestion des années bissextiles)

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 187
    Points : 69
    Points
    69
    Par défaut
    Bon ça marche par comparaison.

    Ex : pour les rdv périodiques par semaine je vérifie si la date de début de mon rdv sélectionné est inférieur à 7 jours de la date de fin de répétition, si c'est le cas je redonne une valeur date de fin de répétition égale à la date de mon rdv sélectionné. Et tout se passe bien.

    Pour les rdv périodiques mensuel et annuel ca marche aussi mais cela pose problème avec les mois en 30 ou 31 jours et avec les années bissextiles.

    D'où le fait que cela serait plus simple si je pouvais connaître la position de mon rdv sélectionné.

    En fait, il faudrait pouvoir vérifier si le rdv est le premier ou le dernier.

    Merci d'avance.

  9. #9
    Membre chevronné Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 881
    Points : 1 768
    Points
    1 768
    Par défaut
    Citation Envoyé par jer64 Voir le message
    Bon ça marche par comparaison.

    Ex : pour les rdv périodiques par semaine je vérifie si la date de début de mon rdv sélectionné est inférieur à 7 jours de la date de fin de répétition, si c'est le cas je redonne une valeur date de fin de répétition égale à la date de mon rdv sélectionné. Et tout se passe bien.

    Pour les rdv périodiques mensuel et annuel ca marche aussi mais cela pose problème avec les mois en 30 ou 31 jours et avec les années bissextiles.

    D'où le fait que cela serait plus simple si je pouvais connaître la position de mon rdv sélectionné.

    En fait, il faudrait pouvoir vérifier si le rdv est le premier ou le dernier.

    Merci d'avance.
    Peut-être que ça serait plus simple si tu pouvais connaître la position du rdv sélectionné, mais windev ne le fournira pas, rien n'est prévu pour ça.

    Pour savoir si le rdv sélectionné est le dernier de la répétition, il suffit de calculer la date du rdv qui doit suivre le rdv sélectionné (suivant la fréquence) et si ce prochain rdv est supérieure à la date de fin du rdv répétitif c'est que le rdv sélectionné est le dernier de la répétition...
    Bon dev
    Laurent

    - C’est génial.
    - Non c’est bizarre.
    - Justement quand c’est simple y’a des milliers de réponses et quand c’est bizarre y’en a aucune.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 187
    Points : 69
    Points
    69
    Par défaut
    Je te remercie pour ton aide et je vais faire comme tu dis.

    Merci pour tout.

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

Discussions similaires

  1. [XL-2003] Récupérer le nombre d'occurence d'une valeur
    Par Contact2012 dans le forum Excel
    Réponses: 4
    Dernier message: 04/10/2010, 18h51
  2. nombre d'occurences de toutes les valeurs d'un champ
    Par petitours dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 24/01/2008, 20h31
  3. Réponses: 1
    Dernier message: 16/07/2007, 08h26
  4. Réponses: 4
    Dernier message: 07/09/2006, 15h02
  5. Récupérer un nombre dans un champs texte
    Par mandou36 dans le forum Access
    Réponses: 18
    Dernier message: 05/09/2006, 19h11

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