Bonsoir à tous,
Et déjà désolé pour ce long post. J'ai une table avec une rubrique conteneur multivaluée destinée à recevoir jusqu'à 9 fichiers images (jpg, png ou pdf). Les fichiers sont conservés en externe dans un stockage ouvert. Les fichiers ont des noms très variables et je souhaitais créer un script qui renomme les fichiers sur base d'un autre champ de la même table lorsque chaque fichier est ajouté à un formulaire. Je pensais que ça allait être assez simple mais je me suis trompé. Voici comment j'ai procédé :
- la table (t_anneeacad) contient la rubrique (r_certificats) de type conteneur avec 9 répétitions, et stockage ouvert.
- la table (t_anneeacad) contient la rubrique (r_matricule) que je souhaite utiliser pour renommer le fichier.
- le formulaire contient la rubrique r_certificats avec l'affichage des 9 répétitions, et définie comme déclencheur de mon script SurModificationObjet avec le paramètre : Obtenir(NuméroRépétitionActive). L'idée est donc de lancer l'éxécution du script lorsqu'un fichier est glissé dans la champ du formulaire et d'envoyer au script le numéro de la répétition.
- le script est rédigé de cette façon (désolé pour le manque d'indentation):
Si [ Obtenir ( ParamètreScript ) = 1 ]
Définir variable [$$extension ; valeur: Fin(ObtenirAttributConteneur ( t_anneeacad::r_certificats[1]; "Filename");Longueur(ObtenirAttributConteneur ( t_anneeacad::r_certificats[1]; "Filename")) - Position ( ObtenirAttributConteneur ( t_anneeacad::r_certificats[1]; "Filename"); "."; Longueur(ObtenirAttributConteneur ( t_anneeacad::r_certificats[1]; "Filename")); -1 )+1)
Définir rubrique [ t_anneeacad::r_certificats ; Base64Decode ( Base64Encode ( t_anneeacad::r_certificats[1] ) ; t_anneeacad::r_matricule & "_TP1" & $$extension ) ]
Sinon Si [ Obtenir ( ParamètreScript ) = 2 ]
Définir variable [$$extension ; valeur: Fin(ObtenirAttributConteneur ( t_anneeacad::r_certificats[2]; "Filename");Longueur(ObtenirAttributConteneur ( t_anneeacad::r_certificats[2]; "Filename")) - Position ( ObtenirAttributConteneur ( t_anneeacad::r_certificats[2]; "Filename"); "."; Longueur(ObtenirAttributConteneur ( t_anneeacad::r_certificats[2]; "Filename")); -1 )+1)
Définir rubrique [ t_anneeacad::r_certificats[2] ; Base64Decode ( Base64Encode ( t_anneeacad::r_certificats[2] ) ; t_anneeacad::r_matricule & "_TP2" & $$extension ) ]
etc ... jusqu'à la 9ème répétition.
Fin de si
Pour debbugé j'ai ajouté l'ouverture d'une boîte de dialogue au début du script pour controler le paramètre transmis ... et ce n'est pas le bon, c'est toujours 0 ! Ce qui me fait dire que le problème vient du formulaire.
Je serais très heureux d'avoir vos lumières.
Olivier