Detecter plusieurs utilisation a un endroit

Product :4D - 4D Server
4D : v14
OS : Windows

Bonjour,
Le casse pied est de retour (coucou arnaud “mon sauveur” :mrgreen: )
Bon le titre est un peu foireux mais je n’avais pas d’autre idées. :evil:
J’ai une question ,mais je ne sais pas si cela est faisable.
J’ai un endroit où sont stocker des factures.
Imaginons que “A” clique sur le bouton de création d’une facture dans cet endroit.
Quelques instant après “B” souhaite crée une facture dans ce même endroit ,mais que “A” n’a pas fini de crée sa facture.
Comment puis-je détecter que “A” crée déjà une facture ,pour pouvoir avertir “B” que une facture est déjà en cour de création par ?
Voilà,voilà j’espère que j’ai été clair :mrgreen:
Merci d’avance pour vos réponse.
Cordialement

Un “endroit”, ce n’est pas très parlant. Quand on parle base de données, “l’endroit” en question est une table des factures : ce n’est pas le cas ? Ta base 4D est en client/serveur ou en monoposte ?

Oui après re-lecture je suis pas très compréhensible.:oops::oops::oops:
Donc cela est un client/serveur et cet “endroit” c’est une “table” qui ce nomme dossier avec un des champs “facture”
Cordialement

Bien, merci.
Alors la question qui me vient est pourquoi B devrait être empêché de créer une facture si A le fait déjà ? C’est peut être une contrainte particulière à ton programme, mais elle m’étonne car dans mes applications je n’ai jamais eu à interdire que 2 postes ne créent simultanément une facture.
En dehors de ça, du point de vue technique, regarde la fonction http://doc.4d.com/4Dv16/4D/16/Semaphore.301-3036037.fr.htmlsémaphore> et l’exemple 2 : en imaginant que “MAJPrix” soit remplacé par “CreationFacture”, tu as ta solution.

Merci pour ta réponse.
Je pose la question car cela m’est arrivé pour une raison inconnu que 2 personne créant une facture dans ce dossier (peut-être en même temps ? ) ce retrouve avec le même numéro de facture sans explication (alors qu’elle sont incrémentale).
Je vois ma question comme l’ajout d’une sécurité
Cordialement

Ça veut seulement dire que ton numéro incrémental est mal géré. Je ne connais qu’une façon de faire ça, l’enregistrement “compteur”. Au moment où ta facture doit passer de l’état ajout à l’état enregistré, tu pioches un numéro dans cet enregistrement et tu y stockes l’incrément en même temps. C’est cette étape là qui ne doit jamais pouvoir être conduite par deux utilisateurs simultanément, mais elle est très courte.

En gros :

debut transaction
chercher compteurFacture //test verrou
compteurFacture:= compteurFacture + 1
facture.numero:=compteurFacture
stocker enregistrement facture
stocker enregistrement compteurFacture
valider transaction

le seul endroit critique est là où j’ai commenté “test verrou” : si l’enregistrement n’est pas libre, un autre poste est en train de se faire délivrer un numéro ; il suffit normalement d’attendre un pouillème de seconde avant de retenter.

D’accord merci je vais tester cela.
Tu me sauve encore arnaud :mrgreen: cela va devenir une habitude j’ai l’impression :pray:
cordialement

Attention au travail fictif en ce moment…
Ok, je =>[] :mrgreen: