Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[WD 5.5b] - erreur incompréhensible sur HVueVersFichier

2 réponses
Avatar
Patrick_Coque
Salut à tout le monde,



J'ai un petit problème que je ne m'explique pas,

et comme je sais qu'après un certain temps, il arrive

que l'on ne discerne plus ce qui est évident et qui devrait sauter aux yeux,

je place donc mon bout de code ci-dessous et vous prie de m'excuser
pour la longueur du post, mais je préfère détailler afin de ne pas susciter
trop de réponses du genre 'donne-nous un bout de code' ou 'sois plus
précis'.



Voici, en gros, ce qui doit s'y passer:

Dans une vue qui a été créée ailleurs dans le programme (VUEDESCODES),
cette vue est basée sur le fichier TARIFOFF.
je recherche une série d'enregistrements que je stocke dans une table
mémoire (TBTARIF).

Ensuite, je parcours cette table du premier au dernier record, et, si la
colonne AMODIFIER est à VRAI,
alors je lis dans la vue l'enregistrement en rapport et je modifie ses
limites de validité
(TDATEDEBUT et TDATELIMITE)



Ensuite, je modifie la vue HMODIFIE (VueDesCodes).



Tout se passe bien pour les 5 ou 6 premiers records ainsi traités, puis,

alors que la routine est en train de boucler dans son POUR . FIN,
je sors en erreur avec le message suivant:





"ERREUR A LA LIGNE 91 DE LA PROCEDURE BTTARIF.SOR"

"LE MECANISME DE SECURITE D'HYPERFILE A ETE DECLENCHE"

"ERREUR 51 : erreur sur une fonction d'accès aux vues"

"Numéro interne = 129"

"Module = HFVUE,CPP,1236"

"Paramètres = Hdl = 263b1b0"

"Message = des erreurs se sont produites pdt l'exécution d'un commit"

"pendant HvueVersFichier/HViewToFile"



La ligne 91 correspondant à la ligne Hvueversfichier(VueDesCodes)
en fin de procédure ci-dessous.

Je ne vois pas où est le problème, d'où mon post.

J'ai suivi en step/step sous debugger, et n'ai rien vu d'anormal.

Le décours du code est bien identique à chaque bouclage du POUR.FIN.



Notez que si je mets une routine d'exception pour intercepter l'erreur,
il me mentionne le code '131123' comme Exception.Code



Si vous avez une idée, elle sera la bienvenue.

D'avance merci.

Patrick ;-(



Code incriminé :





POUR l=1 a TableOccurrence("TBTARIF")

PostErreur:

TableSelectPlus("TBTARIF",l)

si AMODIFIER[TBTARIF]=vrai alors

pasErreur=vrai

HLitRecherche(VueDesCodes,"TACLEUNIK",TARUNIK[l])

TARIFOFF.TDATEDEBUT=CLEDEBUT[l]

TARIFOFF.TDATELIMITE=CLEFIN[l]



// on va d'abord, si ce code n'avait pas de
lien vers TARIFINT, créer le TARIFINT qui lui sera associé

si TARIFOFF.T0CLEUNIK=0 alors

HLitDernier("TARIFINT","T0CLEUNIK")

HRAZ("TARIFINT")

HAjoute("TARIFINT")

Si HDoublon() alors


Info(MessTraduit(3)+H.commentaire)

Fin

Si HErrIntegrite() alors


Erreur(MessTraduit(4)+rc+rc+H.commentaire)

Fin

HLitDernier("TARIFINT","T0CLEUNIK")

//lienTARIFINTmom=TARIFINT.T0CLEUNIK

TARIFOFF.T0CLEUNIK=TARIFINT.T0CLEUNIK

fin





HModifie(VueDesCodes)

TARCODEFAUTIF--

si TARDEBUT[l]..couleurFond=irougefonce alors

CORRDEBUT[l]=CLEDEBUT[l]

CORRDEBUT[l]..couleurfond=ivertfonce

CORRDEBUT[l]..couleur=iblanc

fin

si TARFIN[l]..couleurFond=irougeclair alors

CORRFIN[l]=CLEFIN[l]

CORRFIN[l]..couleurfond=ivertclair

CORRFIN[l]..couleur=inoir

fin

Hvueversfichier(VueDesCodes)

Multitache()

FIN

FIN

2 réponses

Avatar
philippe chaissac
Salut,

A mon avis, il me semble étrange de faire un hvueversfichier() à chaque
itération. C'est peut-être la source du problème.
N'est-il pas possible de sortir cet appel de la boucle, et de mettre à
jour le fichier à la fin du traitement ?

--
philippe chaissac
Avatar
Patrick_Coque
Salut Philippe,

j'ai suivi ton conseil, mais l'erreur subsiste.
Cependant, en continuant à chercher et à fouiller l'aide,
j'en suis arrivé à la conclusion qu'il s'agit de cas de doublons.
En effet, j'ai intercepté l'erreur, et, comme le conseille l'aide de WinDev,
j'ai relancé un parcours de la vue en demandant l'affichage de H.Erreur.
Cette dernière m'a fourni toute une série de '0', mais aussi des '99',
ce qui paraît correspondre à un problème de doublons
d'après le répertoire des codes d'erreur de l'aide.
Hors, la vue est 'insensible' à cela, et ce n'est que lors de l'update du
fichier
que le doublon devient détecté et cause d'erreur.
Je m'oriente donc vers une solution où la modification apportée
serait réalisée non plus sur la vue, mais directement sur le fichier,
afin de réaliser directement un traitement de HDoublon et HErrIntegrite.

J'espère que c'est la bonne voie.

Je confirmerai, le cas échéant.

Merci encore de l'aide apportée.

Patrick ;-))


"philippe chaissac" a écrit dans le message de
news:3f82a76d$0$20617$
Salut,

A mon avis, il me semble étrange de faire un hvueversfichier() à chaque
itération. C'est peut-être la source du problème.
N'est-il pas possible de sortir cet appel de la boucle, et de mettre à
jour le fichier à la fin du traitement ?

--
philippe chaissac