PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Détecter un enregistrement ouvert pour éviter le message "... currently used by another SPID !
Détecter un enregistrement ouvert pour éviter le message "... currently used by another SPID !
Started by ChrisD, Jun., 27 2017 6:39 PM - 2 replies
Posted on June, 27 2017 - 6:39 PM
Bonjour,

Mon application utilise la base de données SQL d'un ERP. Si un utilisateur x est dans une vente pour une visualisation des données dans l'ERP et qu'un autre ouvre cette même vente pour faire des modifications dans mon application, je voudrai l'avertir qu'un autre utilisateur a déjà ouvert le même enregistrement pour lui éviter le message d'erreur :
One or more records of latable are currently used by another SPID !
quand j'effectue un hmodifie(latable).

Au mieux, je voudrai faire savoir à l'utilisateur y qu'un autre utilisateur (x si on peut le préciser) est déjà dans la vente quand il rentre dans cette vente. J'ai pensé à exécuter la mise à jour d'une seule rubrique du fichier, en y entrant, si on peut obtenir un message non contraignant (pas d'éjection de l'application). Je cherche la solution la plus simple possible.

Merci d'avance à celui qui pourra m'aiguiller correctement

Chrisd
Registered member
177 messages
Popularité : +16 (16 votes)
Posted on June, 28 2017 - 10:32 AM
Bonjour,

Ton ERP doit gérer les verrous quelque part, le mieux est de t'appuyer dessus pour en placer un toi aussi.

Sinon, tu peux utiliser la gestion des exception de WD:

QUAND EXCEPTIONEXCEPTION DANS
matable.monchamp = "blabla"
HModifie(matable)
FAIRE
Info("L'enregistrement est en cours de modification")
FIN


Mais rien n'empêchera un autre utilisateur d'ouvrir l'enregistrement entre le moment où tu le testes et le moment où tu le modifies.

jm
Posted on June, 29 2017 - 1:56 PM
Merci Jean-Marc,

C'est aussi une bonne solution qui permet déjà de se tirer d'affaire. Entre-temps, j'ai examiné toutes les fichiers de la BD et j'en ai trouvé un qui pouvait contenir les informations souhaitées. Elle indique que l'enregistrement existant est ouvert et reprend dans une champ l'identifiant de l'enregistrement et le n° de document. J'ai donc un bout de code qui me permet de savoir si le document a déjà été ouvert quand j'ouvre le document de vente. Dommage que le nom ou l'identifiant de l'utilisateur qui a ouvert le document n'est pas indiqué. Je vais donc faire de même et inscrire dans ce fichier les informations nécessaires pour éviter tout souci.

Bien cordialement

ChrisD