La commande PRINT RECORD fait planter

Product :4D - 4D Server v15.4 >OS : Mac OS X

Bonjour,

Je souhaite créer le document pdf d’un état concernant des personnes, de deux façons différentes :

La première, au cours de laquelle je choisis avec un contrôle manuel une ou quelques personnes parmi N, fonctionne sans problème :

FORM SET OUTPUT([GEASP];“A4_GEASP”)

OuvreFenetreBasGauche (800;100)

CREATE SET([GEASP];“Selection”)

PAGE SETUP([GEASP];“A4_GEASP”)
FIRST RECORD([GEASP])
While (Not(End selection([GEASP])))
MESSAGE(“Création du document du Dr “+[GEASP]SENIOR)
$s_NomDoc:=$s_DossierPDF+[GEASP]SENIOR+“G”+String(i_Millesime-2000)+”_”+s_semestre+".pdf"
SET PRINT OPTION(Destination option;3;$s_NomDoc)
PRINT RECORD([GEASP];>)
ERASE WINDOW
NEXT RECORD([GEASP])
End while

La seconde méthode, qui vise à imprimer toutes les personnes de façon automatique, plante à la ligne PRINT RECORD :

: ($1=->[GEASP])
$s_NomDoc:=$s_DossierPDF+[RESSOURCES]NOM+" “+[RESSOURCES]PRENOM+“G”+String(i_Millesime-2000)+”_"+s_Semestre+".pdf"
FORM SET OUTPUT([GEASP];“A4_GEASP”)
SET PRINT OPTION(Destination option;3;$s_NomDoc)
PRINT RECORD([GEASP];>)

La fenêtre TRACE confirme la fiche courante sélectionnée dans le fichier [GEASP]. Chose étonnante, 4D quitte systématiquement si j’introduis les paramètres * ou > et fonctionne normalement lorsque je ne mets que le nom du fichier (mais qui me fait perdre l’automatisme de la fonction).

Qui aura la réponse à cette singularité ?

Merci d’avance pour votre expertise.

Pas sûr de piger le but : tu veux obtenir un pdf par enregistrement, un pdf unique pour tous, autre chose ?

Oui, je veux créer un document pdf pour chaque personne.

La première méthode (qui fonctionne) le fait pour une ou quelques personnes sélectionnées manuellement et ne produit un document que pour des données issues de la table [GEASP].

La seconde doit créer automatiquement des documents pdf pour l’ensemble des personnes d’une sélection pré-enregistrée. Cette sélection de personnes est issue de la table [RESSOURCES]. Pour créer les documents pdf, la procédure va chercher les infos dans d’autres tables dont la table [GEASP]. Une sous-procédure sous-traite cette partie en sélectionnant la table appelée via un pointeur passé en paramètre.
Dans la partie du code cité dans mon message, le pointeur $1 pointe vers la table [GEASP]. L’appel de la ligne PRINT RECORD([GEASP]) fonctionne, mais me fait perdre l’automatisme puisque la boite de dialogue apparaît. Dès que j’ajoute [;*] ou [;>], 4D quitte systématiquement.

A te lire …

C’est pas cool…
Tu as tenté une autre version (15.3 ou 15.5) ?

C’est pareil en 15.5 !

J’ai trouvé !!!

La cause du problème résidait dans une erreur concernant la définition du chemin d’accès du document.

De façon surprenante, cela ne déclenche pas une erreur, mais provoque un crash de 4D.

Problème résolu à mon niveau donc.

Merci Arnaud.

Si 4D plante ce n’est pas normal aussi faudrait-il ouvrir un ticket.

: Philippe DESMARCHELIER

La cause du problème résidait dans une erreur concernant la
définition du chemin d’accès du document.
Comme dit Éric Juhel, je t’ai servi de canard : être bienfaisant qui, par sa seule présence, incite le développeur à trouver la cagade de son code :wink:

J’ai toujours beaucoup de problèmes avec les chemins et beaucoup moins depuis que je me ponctue mon code de canards préventifs, genre :
assert(tester chemin accès(leCheminQueJaiÉlucubré)=est un document))

: Arnaud DE MONTARD

…/…
Comme dit Éric Juhel, je t’ai servi de canard : être bienfaisant qui,
par sa seule présence, incite le développeur à trouver la cagade de
son code :wink:

Bonjour,

On n’est pas vendredi, mais vendredi j’ai piscine.

Chers forumiens, chères forumiennes entendez bien qu’ici “l’être bienfaisant” c’est le canard. :sunglasses:

Autrement pour la petite histoire, “la théorie du canard” qui m’est chère là où je travaille, n’est pas un vain concept.
Elle m’a été transmise à Marseille par un des ces petits jeunes qui viennent petit à petit mettre le nez dans l’environnement 4D.

L’avantage, d’expliquer votre code à un canard en plastique plutôt qu’à un de vos collègues, est sa capacité d’écoute et sa patience. Vous êtes certains qu’il ne vous coupera pas dans votre idée. :wink:

D’autant plus que si Arnaud est un super collègue, il est loin d’être le canard idéal. :sunglasses:

Cette méthode a été décrite dans l’ouvrage The Pragmatic Programmer: From Journeyman to Master de Andrew Hunt et David Thomas publié en 1999.

Dans cet ouvrage, David Thomas décrit qu’il avait travaillé avec un étudiant qui transportait en permanence sur lui un canard en caoutchouc jaune, lui décrivant chacun de ses algorithmes défectueux.

[]23831990;“Your comment here…”[/]

: Eric JUHEL

Cette méthode a été décrite dans l’ouvrage The Pragmatic Programmer:
From Journeyman to Master de Andrew Hunt et David Thomas publié en
1999.

The Pragmatic Programmer ici en PDF :
https://www.nceclusters.no/globalassets/filer/nce/diverse/the-pragmatic-programmer.pdfhttps://www.nceclusters.no/globalassets/filer/nce/diverse/the-pragmatic-programmer.pdf>