Catcher les erreurs dans un script d'import

SOLVED

Bonjour,

J'ai créé une fonction dédiée à un import particulier qui nécessite de supprimer des verrous en base de données.

Je parviens bien grâce à mon script à : ouvrir mon explorateur de fichiers, importer mon fichier et le traiter, supprimer les verrous en base mais je suis bloquée au niveau de la génération de la trace.

Je ne parviens pas à trouver un moyen de créer une trace qui indiquerait à minima que l'import n'a pas pu être fait et si possible, d'indiquer les erreurs de traitement.

Quand je fais des tests avec différents fichiers, certains sont exploitables, d'autres non : mon ASTATUT est toujours à 0, et FSTAT ainsi que GOK ont toujours la même la valeur.

Auriez-vous des pistes?

Voici mon code actuellement

$ACTION
Case ACTION
  When "BOUTON" : Gosub ZBOUTON
  When Default
Endcase
Return


######################################################################################
## Etiquette ajoutée par le superviseur (écran ZRAF) 27/05/2025 10:11:02 
######################################################################################
Subprog AM_ZAFFAIRE(VALEUR)
Variable Char    VALEUR()
End
######################################################################################


######################################################################################
# RAF des affaires
######################################################################################

$ZBOUTON

# Récupération du numéro de l'affaire sélectionnée
NUMAFF = [M:ZRAF]ZAFFAIRE
If NUMAFF = "" Then
Infbox "L'affaire n'a pas été renseignée, import du RAF impossible"
Endif
#Infbox 'Affaire : ' + NUMAFF

# Suppression ou consultation des verrous
Local Char WREQ(250)


WREQ = "SELECT LCKSYM_0 FROM APLLCK WHERE LCKSYM_0 LIKE '%" + NUMAFF + "%'"

For (Char LCKSYM) From "5" Sql WREQ as [ZSQL]
#infbox 'verrou' + [ZSQL]LCKSYM
If !clalev([F:ZALK]) : Local File APLLCK[ZALK] : Endif
DELETE [ZALK] WHERE LCKSYM = [ZSQL]LCKSYM
Next

# Ouverture de l'explorateur de fichier

Subprog S_COPSRV(VALEUR)

# Déclaration des variables
Variable Char    VALEUR()
Local Char FICCLI(100)         # Nom du fichier (retourné)
Local Char FICSRV(250)         # Chemin complet du fichier (retourné)
Local Integer ASTATUS

# Ouverture de l'explorateur de fichiers
Call COPSRV(FICCLI,FICSRV,ASTATUS) From ORDSYS

# Appel du modèle d'import

GSILENCE=1
Call IMPORTSIL("OPPORPJMI", [L]FICSRV) From GIMPOBJ
GSILENCE=0


Return

Je vous remercie.

Alix

Parents
  • +1
    verified answer

    Bonjour  ,

    Si tu laisse GSILENCE à 0 avant l'IMPORTSIL tu n'as pas la trace de l'import qui s'ouvre (avec ses éventuelles erreurs) ? 

    Autrement dans la doc il est dit que l'on peut retrouver le statut de l'import dans le champ [M:IMP2]STAT et que l'on peut même récupérer le msg d'erreur en clair : 

    Je pense que c'est une piste à creuser...

    Cordialement,

  • 0 in reply to Fontenay Billy

    Bonjour,

    Merci beaucoup pour votre aide.

    Effectivement, en suivant la documentation fournie et vos conseils, j'ai pu obtenir le résultat souhaité.

    If !GSERVEUR
    Call OUVRE_TRACE("Import file") From LECFIC
    Endif
    
    Call IMPORTSIL("OPPORPJMI", [L]FICSRV) From GIMPOBJ
    If !GSERVEUR
    Call FERME_TRACE From LECFIC # Close the log
    Endif
    
    Call LEC_TRACE From LECFIC
    

    Bonne journée,

    Alix

Reply
  • 0 in reply to Fontenay Billy

    Bonjour,

    Merci beaucoup pour votre aide.

    Effectivement, en suivant la documentation fournie et vos conseils, j'ai pu obtenir le résultat souhaité.

    If !GSERVEUR
    Call OUVRE_TRACE("Import file") From LECFIC
    Endif
    
    Call IMPORTSIL("OPPORPJMI", [L]FICSRV) From GIMPOBJ
    If !GSERVEUR
    Call FERME_TRACE From LECFIC # Close the log
    Endif
    
    Call LEC_TRACE From LECFIC
    

    Bonne journée,

    Alix

Children
No Data