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

[Wx] Attention truc sale

7 réponses
Avatar
patrice
Bonjour

Attention, je viens de m'apercevoir d'un truc tres sale.
Les fonctions Hsupprimer et Hajoute (entre autre) modifie le contexte
hyperfile des autres fichiers.

Je m'explique:

Boucle Fichier1
hajoute(fichier2)
hlitsuivant(fichier1)

d'apres la doc ca doit marcher, mais en pratique chez moi ca ne marche pas.
un Hsauveposition+ hretour a régler le probleme.
J'en suis resté la.

Ce matin je vois un truc bizarre: un click sur bouton supprimer, supprime 2
ligne .
Le code:
Si htrouve(fichier1)
hlitrecherchepremier(fichier2.id,fichier1.idfichier2)
hsupprime(fichier2)
hsupprime(fichier1)

en fait, fichier2 est lié a fichier1 par une contrainte d'intégrité
La suppression de fichier2 supprimer fichier1, et positionne le contexte de
fichier1 sur la fiche suivante
(d'ou la bug)

Donc pour résumer:
attention aux contraintes d'intégrité, elle font varier le contexte des
autres fichiers

D'ailleurs on retrouve un peu la meme bug dans la saisie assistée des champs
clés qui font varié le contexte du fichier courant.

7 réponses

Avatar
Romuald.besset
patrice a écrit :
Bonjour

Attention, je viens de m'apercevoir d'un truc tres sale.
Les fonctions Hsupprimer et Hajoute (entre autre) modifie le contexte
hyperfile des autres fichiers.

Je m'explique:

Boucle Fichier1
hajoute(fichier2)
hlitsuivant(fichier1)

d'apres la doc ca doit marcher, mais en pratique chez moi ca ne marche pas.
un Hsauveposition+ hretour a régler le probleme.
J'en suis resté la.

Ce matin je vois un truc bizarre: un click sur bouton supprimer, supprime 2
ligne .
Le code:
Si htrouve(fichier1)
hlitrecherchepremier(fichier2.id,fichier1.idfichier2)
hsupprime(fichier2)
hsupprime(fichier1)

en fait, fichier2 est lié a fichier1 par une contrainte d'intégrité
La suppression de fichier2 supprimer fichier1, et positionne le contexte de
fichier1 sur la fiche suivante
(d'ou la bug)

Donc pour résumer:
attention aux contraintes d'intégrité, elle font varier le contexte des
autres fichiers

D'ailleurs on retrouve un peu la meme bug dans la saisie assistée des champs
clés qui font varié le contexte du fichier courant.




Bonjour

Qu'il est facile d'associer des mots forts en public ! A coups sûr vous
n'en mesurez pas l'impact tant sur votre crédibilité que sur votre
outil. Il est utile de faire attention.

Concernant votre soucis, votre erreur réside dans la simple application
de la règle de suppression que vous avez fixé lors de la description des
relations. Si la suppression des éléments liés est autorisée alors oui,
elle aura lieu dans les fichiers liés et elle en modifiera le contexte.

Votre conclusions est donc hative et mérite correction :
"Attention au paramétrage des règles de gestion qui peuvent conduire à
des modifications dans les fichiers liés sans programmation. C'est
d'ailleurs leur intéret !"

Bonne suite.
++ R&B
www.WDForge.org
Avatar
patrice
"Romuald.besset" a écrit dans le message de
news:di5cqi$81d$
Concernant votre soucis, votre erreur réside dans la simple application
de la règle de suppression que vous avez fixé lors de la description des
relations. Si la suppression des éléments liés est autorisée alors oui,
elle aura lieu dans les fichiers liés et elle en modifiera le contexte.

Votre conclusions est donc hative et mérite correction :
"Attention au paramétrage des règles de gestion qui peuvent conduire à
des modifications dans les fichiers liés sans programmation. C'est
d'ailleurs leur intéret !"



Bonjour

Je comprends bien votre remarque.
Mais le problème n'est pas la "modification des fichiers lié sans
programmation", mais la modification de variable publique (contexte
hyperfile) sans programmation, ni meme une quelconque indication dans le
manuel.
Doncs amha, ca reste (pour moi) un truc sale.
Avatar
mnobs
patrice wrote:
Bonjour

Je comprends bien votre remarque.
Mais le problème n'est pas la "modification des fichiers lié sans
programmation", mais la modification de variable publique (contexte
hyperfile) sans programmation, ni meme une quelconque indication dans le
manuel.
Doncs amha, ca reste (pour moi) un truc sale.




pas vraiment, l'exemple de la contrainte d'intégrité ne se fait pas
automatiquement, mais manuellement dans l'analyse. En plus, le
problème ne provient non plus de la contrainte, mais du mauvais code:
faire un hSupprime sur un hLitRecherche.. non testé (fichier2) va
forcément supprimer n'importe quoi.

Si htrouve(fichier1) // ok
hlitrecherchepremier(fichier2.id,fichier1.idfichier2) //
pas ok
hsupprime(fichier2) //!!!!!! pas de vérification de
hLitRecherche
hsupprime(fichier1)

Salutations
Mat
Avatar
patrice
a écrit dans le message de
news:

pas vraiment, l'exemple de la contrainte d'intégrité ne se fait pas
automatiquement, mais manuellement dans l'analyse. En plus, le
problème ne provient non plus de la contrainte, mais du mauvais code:
faire un hSupprime sur un hLitRecherche.. non testé (fichier2) va
forcément supprimer n'importe quoi.



Si htrouve(fichier1) // ok
hlitrecherchepremier(fichier2.id,fichier1.idfichier2) //
pas ok
hsupprime(fichier2) //!!!!!! pas de vérification de
hLitRecherche
hsupprime(fichier1)




Bonjour

Je ne suis pas d'accord.
Premierement, j'ai écrit de facon simplifiée, tout les codes de retour
étaient testés
Deuxiemement , ce qui arrive dans la réalitée est :
Si htrouve(fichier1) // ok
hlitrecherchepremier(fichier2.id,fichier1.idfichier2) // OK
hsupprime(fichier2) //OK ca marche
hsupprime(fichier1) // OK ca marche mais ne supprime pas le bon
en fait
si c'était comme décrit dans la doc, le hsupprime(fichier1) aurait du
renvoyer une erreur
comme quoi l'enregistrement courant n'existait plus.
Avatar
Pascal F
Dans son message précédent, patrice a écrit :
a écrit dans le message de
news:

pas vraiment, l'exemple de la contrainte d'intégrité ne se fait pas
automatiquement, mais manuellement dans l'analyse. En plus, le
problème ne provient non plus de la contrainte, mais du mauvais code:
faire un hSupprime sur un hLitRecherche.. non testé (fichier2) va
forcément supprimer n'importe quoi.



Si htrouve(fichier1) // ok
hlitrecherchepremier(fichier2.id,fichier1.idfichier2) //
pas ok
hsupprime(fichier2) //!!!!!! pas de vérification de
hLitRecherche
hsupprime(fichier1)




Bonjour

Je ne suis pas d'accord.
Premierement, j'ai écrit de facon simplifiée, tout les codes de retour
étaient testés
Deuxiemement , ce qui arrive dans la réalitée est :
Si htrouve(fichier1) // ok
hlitrecherchepremier(fichier2.id,fichier1.idfichier2) // OK
hsupprime(fichier2) //OK ca marche
hsupprime(fichier1) // OK ca marche mais ne supprime pas le bon
en fait
si c'était comme décrit dans la doc, le hsupprime(fichier1) aurait du
renvoyer une erreur
comme quoi l'enregistrement courant n'existait plus.



et en mettant:
hsupprime(fichier1,hnumenrencours) ?

--
Pascal

Ne garder que le prénom pour me joindre
Avatar
Real Phil
> Je ne suis pas d'accord.
Premierement, j'ai écrit de facon simplifiée, tout les codes de retour
étaient testés
Deuxiemement , ce qui arrive dans la réalitée est :
Si htrouve(fichier1) // ok
hlitrecherchepremier(fichier2.id,fichier1.idfichier2) // OK
hsupprime(fichier2) //OK ca marche
hsupprime(fichier1) // OK ca marche mais ne supprime pas le


bon
en fait
si c'était comme décrit dans la doc, le hsupprime(fichier1) aurait du
renvoyer une erreur
comme quoi l'enregistrement courant n'existait plus.


========================================================
Pourquoi ne pas essayer cette méthode qui devrait fonctionner à tous les
coups sans confondre Windev.

Si htrouve(fichier1)
CodeCherché = fichier1.idfichier2
HSupprime(fichier1) // fonctionnera à tous les coups puisque trouvé
HLitrecherchepremier(FICHIER2,fichier2.id,CodeCherché)
Si HTrouve(FICHIER2) ALORS
hsupprime(fichier2)
FIN
FIN
Avatar
Michel HERRSCHER
et une requete cascadée ?...


Dans un message Real Phil disait :

Je ne suis pas d'accord.
Premierement, j'ai écrit de facon simplifiée, tout les codes de
retour étaient testés
Deuxiemement , ce qui arrive dans la réalitée est :
Si htrouve(fichier1) // ok
hlitrecherchepremier(fichier2.id,fichier1.idfichier2)
// OK hsupprime(fichier2) //OK ca marche
hsupprime(fichier1) // OK ca marche mais ne supprime pas
le bon en fait
si c'était comme décrit dans la doc, le hsupprime(fichier1) aurait du
renvoyer une erreur
comme quoi l'enregistrement courant n'existait plus.


======================================================== >
Pourquoi ne pas essayer cette méthode qui devrait fonctionner à tous
les coups sans confondre Windev.

Si htrouve(fichier1)
CodeCherché = fichier1.idfichier2
HSupprime(fichier1) // fonctionnera à tous les coups puisque
trouvé HLitrecherchepremier(FICHIER2,fichier2.id,CodeCherché)
Si HTrouve(FICHIER2) ALORS
hsupprime(fichier2)
FIN
FIN



--
Michel HERRSCHER CONSULTANT
Président WINDASSO - Association des utilisateurs WxxDEV(c)
Tel : +33450870912 Fax:+33450871741
http://www.windasso.org