| |
Membre enregistré 357 messages |
|
Posté le 17 mars 2023 - 06:28 |
Bonjour les copains !
Je sèche, surement une bêtise, mais je sèche. Et je dois trouver d'urgence une solution. J'ai un fichier de visites, avec un ID_MEDECIN et un ID_PATIENT. J'affiche un agenda à partir de ce fichier de visite basé sur la requête paramétrée REQ_LISTE_VISITE. Voila ma pièce de code
Procedure RafraichitAgenda(I8_Medecin est un entier sur 8 octets, I8_Patient est un entier sur 8 octets )
REQ_LISTE_VISITE.PARAM_MEDECIN = (I8_Medecin = 0) ? Null SINON I8_Medecin REQ_LISTE_VISITE.PARAM_PATIENT = (I8_Patient = 0) ? Null SINON I8_Patient REQ_LISTE_VISITE.ExécuteRequête()
AGD_AGENDA.Affiche() Pour débugger, j'affiche dans le titre de l'agenda les paramètres passés, ils sont corrects.
MAIS : Quels que soient les paramètres que je passe à cette procédure, l'agenda me montre toujours toutes les visites de tous les médecins et de tous les patients. Comme si les paramètres de la requête paramétrée était réinitialisée à NULL par l'instruction Affiche().
Au secours !! Merci d'avance Bernard
-- Développeur Indépendant en Free-lance. Contactez moi par MP ou mel pour avoir mes conditions d'engagements.Message modifié, 17 mars 2023 - 06:31 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 472 messages |
|
Posté le 17 mars 2023 - 09:09 |
Salut @bernard, En effet, ça aurait dû fonctionner. Quand c'est comme ça, je mets d'abord les paramètres dans des variables. Ensuite j'évite la nouvelle écriture des fonctions (xxx.fonction) Ce qui donne ceci
Monparmed est une chaîne= (I8_Medecin = 0) ? Null SINON I8_Medecin REQ_LISTE_VISITE.PARAM_MEDECIN = Monparmed Monparpatient est une chaîne = (I8_Patient = 0) ? Null SINON I8_Patient REQ_LISTE_VISITE.PARAM_PATIENT = Monparpatient SI HExécuteRequête(REQ_LISTE_VISITE) ALORS AgendaAffiche(AGD_Agenda) FIN
Si mes variables ne sont pas bonnes Alors je met l'écriture standard du si alors sinonMessage modifié, 17 mars 2023 - 09:12 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 287 messages |
|
Posté le 17 mars 2023 - 09:46 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 287 messages |
|
Posté le 17 mars 2023 - 09:46 |
Je t'invite à remplir l'agenda par programmation toi même. Tu seras moins limitée et plus performant car tu aura la main mise totale.
-- #DKR |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 357 messages |
|
Posté le 17 mars 2023 - 10:15 |
Popoy a écrit :
Salut @bernard, En effet, ça aurait dû fonctionner. ........................... Si mes variables ne sont pas bonnes Alors je met l'écriture standard du si alors sinon En fait, mon écriture est correcte car le nombre d'enregistrements renvoyés par la requête est bien celui attendu (mareq.nbenr()) C'est sans doute le champ AGENDA qui doit poser le problème.
-- Développeur Indépendant en Free-lance. Contactez moi par MP ou mel pour avoir mes conditions d'engagements. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 357 messages |
|
Posté le 17 mars 2023 - 10:16 |
404 ERROR a écrit :
Oui, je l'avais bien lu, mais cette phrase est un peu absconse, ça veut dire quoi "réinitialisée" ? Que les paramètres sont effacés ?
-- Développeur Indépendant en Free-lance. Contactez moi par MP ou mel pour avoir mes conditions d'engagements. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 357 messages |
|
Posté le 17 mars 2023 - 10:17 |
404 ERROR a écrit :
Je t'invite à remplir l'agenda par programmation toi même. Tu seras moins limitée et plus performant car tu aura la main mise totale.
-- #DKR Donc je remplace la ligne "MonAgenda.afffiche" par une boucle du style : pour tout REQ_MAREQUETE MonAgenda.ajoute(.....)
FIN
C'est lourd, mais je vais essayer.
-- Développeur Indépendant en Free-lance. Contactez moi par MP ou mel pour avoir mes conditions d'engagements. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 357 messages |
|
Posté le 17 mars 2023 - 11:20 |
bernard SOBRA a écrit :
404 ERROR a écrit : Je t'invite à remplir l'agenda par programmation toi même. Tu seras moins limitée et plus performant car tu aura la main mise totale. #DKR
Donc je remplace la ligne "MonAgenda.afffiche" par une boucle du style : pour tout REQ_MAREQUETE MonAgenda.ajoute(.....)
FIN
C'est lourd, mais je vais essayer.
Ben 20 lignes de code plus loin, c'est de loin la meilleure méthode !! C'est vrai que ca met de la souplesse et surtout ca marche mieux que l'option de lier l'agenda à une requête.
MERCI A VOUS TOUS !!
-- Développeur Indépendant en Free-lance. Contactez moi par MP ou mel pour avoir mes conditions d'engagements. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 287 messages |
|
Posté le 17 mars 2023 - 11:43 |
Bon dev hésite pas si tu as d'autres questions
-- #DKR |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 472 messages |
|
Posté le 17 mars 2023 - 11:58 |
Merci, j'ai appris qu'il vaut mieux remplir le champ agenda par programmation. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 147 messages |
|
Posté le 17 mars 2023 - 12:27 |
Bonjour Bernard,
Lors de la création de ton champ agenda, si tu as laissé la case "Générer le code d'initisalisation..." cochée, alors tu as du code dans l'initialisation du champ :
MaSource.ParamAnnee = "2023" MaSource.ParamNumeroSemaine = "3"
PROCEDURE INTERNE MAJPremierAffichage() ExécuteTraitement(PLN_REQ_PlanningSemaineCherche, trtChangementPériodePlanning) FIN MaFenêtre..Traitement[trtInit] += MAJPremierAffichage
tu remplace les valeurs par tes variables :
MaSource.PARAM_MEDECIN = Monparmed MaSource.PARAM_PATIENT = Monparpatient
PROCEDURE INTERNE MAJPremierAffichage() ExécuteTraitement(PLN_REQ_PlanningSemaineCherche, trtChangementPériodePlanning) FIN MaFenêtre..Traitement[trtInit] += MAJPremierAffichage et l'affichage seul ( AgendaAffiche(AGD_Agenda) ) devrait suffire non ?
-- Thierry TILLIER Développeur WINDEV -WEBDEV Formation WINDEV : https://coursdinfo-video.teachizy.fr/ Livre WINDEV : https://amzn.eu/d/6xTow1z Tuto WINDEV sur ma chaîne Youtube |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 357 messages |
|
Posté le 17 mars 2023 - 16:36 |
Merci Thierry, excellente réponse comme d'habitude. J'aime bien le bout de code :
MaFenêtre..Traitement[trtInit] += MAJPremierAffichage
J'avoue que je n'avais jamais fait cela....
-- Développeur Indépendant en Free-lance. Contactez moi par MP ou mel pour avoir mes conditions d'engagements. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 357 messages |
|
Posté le 18 mars 2023 - 10:21 |
@THIERRY ---------- A propose :
MaFenêtre..Traitement[trtInit] += MAJPremierAffichage Cette pièce de code ou son pendant est-elle documentée dans la doc PcSoft ?
Question subsidiaire : la "bulle" d'un RDV de l'agenda n'est pas au format MarkDown, et n'accepte pas non plus les fonctions habituelles des libellés type gstylo/gpolice... Je viens de faire le test. Peut on quand même mettre en évidence un morceau de texte à l'intérieur de cette bulle ? (HTML / RTF ?)
-- Développeur Indépendant en Free-lance. Contactez moi par MP ou mel pour avoir mes conditions d'engagements. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 287 messages |
|
Posté le 18 mars 2023 - 10:30 |
De mon coté j'arrive bien à utiliser "gPoliceGras" dans la bulle
Mon agenda est remplit par programmation avec comme affichage une fenêtre interne personnalisée
-- #DKR |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 357 messages |
|
Posté le 18 mars 2023 - 11:12 |
404 ERROR a écrit :
De mon coté j'arrive bien à utiliser "gPoliceGras" dans la bulle
Mon agenda est remplit par programmation avec comme affichage une fenêtre interne personnalisée
Moi je suis sous Webdev, donc pas de fenêtre interne je crois. Merci quand même.
-- Développeur Indépendant en Free-lance. Contactez moi par MP ou mel pour avoir mes conditions d'engagements. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 147 messages |
|
Posté le 18 mars 2023 - 11:34 |
bernard SOBRA a écrit :
MaFenêtre..Traitement[trtInit] += MAJPremierAffichage
Cette pièce de code ou son pendant est-elle documentée dans la doc PcSoft ?
Non, c'est du code généré automatiquement lorsque la case "générer le code d'initialisation" est cochée.
J'attirais surtout ton attention sur cette partie :
MaSource.PARAM_MEDECIN = Monparmed MaSource.PARAM_PATIENT = Monparpatient
-- Thierry TILLIER Développeur WINDEV -WEBDEV Formation WINDEV : https://coursdinfo-video.teachizy.fr/ Livre WINDEV : https://amzn.eu/d/6xTow1z Tuto WINDEV sur ma chaîne Youtube |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 357 messages |
|
Posté le 18 mars 2023 - 11:41 |
@Thierry
OK, merci, ca je connaissait.
-- Développeur Indépendant en Free-lance. Contactez moi par MP ou mel pour avoir mes conditions d'engagements. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 147 messages |
|
Posté le 18 mars 2023 - 11:48 |
Le code
PROCEDURE INTERNE MAJPremierAffichage() ExécuteTraitement(PLN_REQ_PlanningSemaineCherche, trtChangementPériodePlanning) FIN MaFenêtre..Traitement[trtInit] += MAJPremierAffichage
Donne la possibilité de préparer plusieurs traitements dans la procédure interne et de les exécuter en remplissant le tableau de traitement de la fenêtre avec
MaFenêtre..Traitement[trtInit] += MAJPremierAffichage
-- Thierry TILLIER Développeur WINDEV -WEBDEV Formation WINDEV : https://coursdinfo-video.teachizy.fr/ Livre WINDEV : https://amzn.eu/d/6xTow1z Tuto WINDEV sur ma chaîne Youtube |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 357 messages |
|
Posté le 19 mars 2023 - 05:48 |
THIERRY TILLIER a écrit :
MonObjet..Traitement[trtInit] += MAJPremierAffichage
Est ce une façon d'ajouter une procédure indépendante qui sera exécuté à chaque évènement trtinit de l'objet concerné ? Peut-on imaginer par exemple ajouter une procédure interne (ou locale) sur un trtclic ? Pour mutualiser un code identique sur chaque objet concerné ?
MonObjet..Traitement[trtClic] += MAJProcédurePersoInterne
Ou encore, pour mutualiser l'interface (mettre en fond rouge lors de la saisie et blanc lors de la fin de saisie d'une zone
MaPage.MonChamp.Traitement[trtEntrée] += MaProcedureLocaleEntreeEnSaisie MaPage.MonChamp.Traitement[trtSortie] += MaProcedureLocaleSortieEnSaisie
-- Développeur Indépendant en Free-lance. Contactez moi par MP ou mel pour avoir mes conditions d'engagements. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 511 messages |
|
Posté le 19 mars 2023 - 14:37 |
bernard SOBRA a écrit :
THIERRY TILLIER a écrit : MonObjet..Traitement[trtInit] += MAJPremierAffichage
Est ce une façon d'ajouter une procédure indépendante qui sera exécuté à chaque évènement trtinit de l'objet concerné ? Peut-on imaginer par exemple ajouter une procédure interne (ou locale) sur un trtclic ? Pour mutualiser un code identique sur chaque objet concerné ? MonObjet..Traitement[trtClic] += MAJProcédurePersoInterne
Ou encore, pour mutualiser l'interface (mettre en fond rouge lors de la saisie et blanc lors de la fin de saisie d'une zone MaPage.MonChamp.Traitement[trtEntrée] += MaProcedureLocaleEntreeEnSaisie MaPage.MonChamp.Traitement[trtSortie] += MaProcedureLocaleSortieEnSaisie
-- Développeur Indépendant en Free-lance. Contactez moi par MP ou mel pour avoir mes conditions d'engagements.
salut, j'ai testé, ton idée, ca fonctionne parfaitement et même mieux, on peut utiliser "moimême"
MoiMême.Traitement[trtEntrée] += en_vert MoiMême.Traitement[trtSortie] += en_rouge
Procedure en_vert() MoiMême..CouleurFond=VertPastel
Procedure en_rouge() MoiMême..CouleurFond=RougePastel
cool comme principe de mutualisation
-- JoséMessage modifié, 19 mars 2023 - 14:38 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 357 messages |
|
Posté le 22 mars 2023 - 07:06 |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 4 162 messages |
|
Posté le 22 mars 2023 - 07:56 |
Bonjour, Cette méthode est décrite dans le chapitre "Procédure (type de variable)"
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |