PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Erreur lors de la mise à jour d'une date
Erreur lors de la mise à jour d'une date
Débuté par NouveauDev, 12 déc. 2017 15:44 - 3 réponses
Posté le 12 décembre 2017 - 15:44
Bonjour,

Au démarrage de mon application, j'ai plusieurs threads qui s'exécutent.
Une fois le traitement terminé d'un thread, il modifie la date de mise à jour à la date du jour.

Par exemple, le thread 1 : On vérifie dans la table BASE que DATE_THREAD1 est différente de la date du jour.
Si DATE_THREAD1 est identique à la date du jour alors on ne fait rien et on passe au thread suivant. Sinon on exécute le thread1 et on modifie la date thread1 à la date du jour.

Je met à jour comme cela : BASE.THREAD1=DateDuJour
Hmodifie(BASE)
Hferme(BASE)

Le souci est que mon traitement plante à chaque fois au moment de mettre à jour la date.
Je précise qu'aucun autre utilisateur ne navigue dans la base et n'utilise l'application.

Voici l'erreur :

Le mécanisme de sécurité assisté de l'application a été déclenché.
Modifications à valider dans le fichier <BASE>.
Vous ne savez pas quelle option choisir ? Cliquez sur OK.

Valeur des rubriques : DATE_THREAD1
lues à l'origine : 11/12/2017 07:37:56
Défini par un autre
utilisateur : 12/12/2017 15:11:49
Vous voulez écrire dans le fichier : 11/12/2017 07:37:56

Merci pour votre aide.
Membre enregistré
948 messages
Popularité : +30 (92 votes)
Posté le 12 décembre 2017 - 18:55
Coucou,

Je demande le 50/50 et du coup plus de detail sur ton thread, le code et la maniere ou les thread passe au suivant (comment tu lances tes thread aussi ? tu fait des copies de context ou du prend juste les info de connection ?

Si tu fait

SI PAS HModifie(BASE) ALORS
Erreur(HErreurInfo(hErrComplet))
FIN


Te renvoie quoi le message ?

--
In üs we trust - Joyeux noël
Message modifié, 12 décembre 2017 - 18:56
Posté le 13 décembre 2017 - 08:01
Bonjour et merci pour votre réponse.

J'ai lancé l'exécution des threads dans La fin d'initialisation de ma fenêtre.
ThreadExécute("Thread1", threadNormal, ProcedureMAJ)
ThreadExécute("Thread2", threadNormal, MAJDONNES)
ThreadExécute("Thread3", threadNormal, MAJBDD)

Quand un utilisateur se connecte, je regarde dans BASE si la date de maj est égale à la date du jour. Si c'est le cas, le thread ne s'exécute pas sinon on l'exécute.

J'ai modifié la date de MAJ pour une des rubrique et j'ai mis le code
SI PAS HModifie(BASE) ALORS
Erreur(HErreurInfo(hErrComplet))
FIN

Tout s'est bien passé et tout se passe bien visiblement quand mes thread son exécutés un par un.

Je pense que le souci est que je modifie plusieurs rubrique à la fois dans le même fichier.
Posté le 13 décembre 2017 - 09:15
Merci beaucoup pour votre aide.

J'ai mis mes 3 procédures dans un seul thread et je n'ai plus de souci.