OVH Cloud OVH Cloud

bloquer certains enregistrements dans une table

5 réponses
Avatar
Fabrice
Bonjour à tous,

Est-ce qu'il est possible de bloquer la saisie ou la modification de
certains enregistrements d'une table, lorsque je saisis ou modifie un
enregistrement dans un formulaire (formulaire qui est basé sur une autre
table que celle que je souhaite bloquer) ?

Merci de votre aide et bon début de semaine
Fabrice

5 réponses

Avatar
Fabrice
Bonjour Anor,

Merci de ta réponse. En fait, je me suis mal expliqué. Les utilisateurs
saisissent et modifient les enregistrements dans un formulaire (liée bien
sûr à une table). Mais j'aimerais que lorqu'il saisisse ou modifie un
enregistrement dans ce formulaire, une autre table (accessible également via
un formulaire) soit bloquée en écriture. Ces deux tables ne sont pas en
relation directe, mais elles contiennent un champ en commun pour filtrer les
enregistrements à bloquer.

Est-ce que c'est plus clair ?

Merci de ton aide
Fabrice



"Anor" a écrit dans le message de
news:%
Bonjour,

| Bonjour à tous,
|
| Est-ce qu'il est possible de bloquer la saisie ou la modification de
| certains enregistrements d'une table, lorsque je saisis ou modifie un
| enregistrement dans un formulaire (formulaire qui est basé sur une
| autre table que celle que je souhaite bloquer) ?
|
| Merci de votre aide et bon début de semaine
| Fabrice

Ce n'est pas clair :
Tu veux dire que des gens saisissent directement dans une table ?
pas bon ça ....ou tu veux éviter des modifs "pirates"...

Qu'appelles-tu "lorsque" ? pendant la saisie ou après ?

Certains enregistrements et pas d'autres, donc tu veux utiliser la valeur
d'un champ

de l'enregistrement modifié pour autoriser ou non la modif, c'est ça, mais
à comparer avec quoi

:
le fait que le formulaire soit en cours de saisie (dirty) ou une valeur
d'un controle

affiché dans le formulaire ?

--
à+
Arnaud
-------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
petit à petit, www.anor.fr.st fait son nid
-------------------------------------------




Avatar
Fabrice
Merci de ta réponse,

Je trouve très intéressante cette idée : "On peut toujours réussir à s'en
sortir avec une table des champs à bloquer un code qui met dans cette table
le nom du champ et sa valeur dès que sa propriété dirty survient et efface
cette valeur ensuite." C'est une idée à creuser...

Sinon qu'est-ce que tu entends par "sur timer, mettre un feu rouge / feu
vert bien visible" ?

Encore merci et bonne journée
Fabrice

"Anor" a écrit dans le message de
news:
Bonjour ,

| Bonjour Anor,
|
| Merci de ta réponse. En fait, je me suis mal expliqué. Les
| utilisateurs saisissent et modifient les enregistrements dans un
| formulaire (liée bien sûr à une table). Mais j'aimerais que lorqu'il
| saisisse ou modifie un enregistrement dans ce formulaire, une autre
| table (accessible également via un formulaire) soit bloquée en
| écriture. Ces deux tables ne sont pas en relation directe, mais elles
| contiennent un champ en commun pour filtrer les enregistrements à
| bloquer.
|
| Est-ce que c'est plus clair ?
|
| Merci de ton aide
| Fabrice
|

Ma première idée était dans l'événement before update du formulaire à
bloquer,

de mettre

If Forms!LeForm.Dirty = True Then
msgbox "attendez que la saisie soit terminée dans l'autre form !!"
Cancel = True
End If


Mais :
- ça ne fonctionnerait pas entre 2 bases frontales différentes ni en
réseau d'ailleurs sur un

mdb commun

- ça bloque toute validation

on peut donc tester la valeur d'un contrôle dans form B pour dire à Form A
la même chose,

mais même problème pour l'utilisation réseau.

Je ne vois pas de solution simple car je ne sais pas commun regarder un
"enregistrement dirty"

dans une table
pour en extraire la valeur d'un champ donné.

On peut toujours réussir à s'en sortir avec une table des champs à
bloquer,

un code qui met dans cette table le nom du champ et sa valeur dès que sa
propriété dirty

survient
et efface cette valeur ensuite.

Le formulaire pourrait aller tester le contenu de cette table de blocages
avant de valider la

saisie,
ou sur timer, mettre un feu rouge / feu vert bien visible !!

J'espère que ça te donnera des idées sans te mettre sur la mauvaise
voie...


--
à+
Arnaud
-------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
petit à petit, www.anor.fr.st fait son nid
-------------------------------------------




Avatar
Anor
re.


| Merci de ta réponse,
|
| Je trouve très intéressante cette idée : "On peut toujours réussir à
| s'en sortir avec une table des champs à bloquer un code qui met dans
| cette table le nom du champ et sa valeur dès que sa propriété dirty
| survient et efface cette valeur ensuite." C'est une idée à creuser...

Disons qu'il faut penser à tout, y compris aux plantages.
Cette table devrait être vidée lors du premier démarrage,
mais dans le cas de bases fractionnées dorsale / frontales, ça se complique un peu...

| Sinon qu'est-ce que tu entends par "sur timer, mettre un feu rouge /
| feu vert bien visible" ?

un délire : un contrôle qui change de couleur dans le formulaire de saisie
en fonction du résultat d'une fonction de domaine ou
d'un comptage du nombre de lignes renvoyées par une requête sur la fameuse
table sur événement timer toutes les x secondes ...

ça serait intéressant de faire une comparaison :
dcount ("*","tblverrouillage")
ou
select count * from latable

je teste ça et je reviens mais le select est sûrement plus rapide ;-)

| Encore merci et bonne journée
| Fabrice

--
pareil
Arnaud
-------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
petit à petit, www.anor.fr.st fait son nid
-------------------------------------------
Avatar
Anor
Bonjour,

| ça serait intéressant de faire une comparaison :
| dcount ("*","tblverrouillage")
| ou
| select count * from latable
| je teste ça et je reviens mais le select est sûrement plus rapide ;-)

je suis nul : je sais faire un comptage avec dcount, mais je ne sais pas
faire la même chose en SQL pur ....

Alors évidemment,
dcount dans la table
est plus rapide que
dlookup dans une requête SQL "SELECT Count(*) FROM LaTable;"

--
à+
Arnaud
-------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
petit à petit, www.anor.fr.st fait son nid
-------------------------------------------
Avatar
Fabrice
Merci de ton aide Arnaud,

Je vais tester ça avec le système d'une table contenant les critères des
enregistrements à verrouiller.

Merci encore et bonne fin de journée
Fabrice
"Anor" a écrit dans le message de
news:ed1k$
Bonjour,

| ça serait intéressant de faire une comparaison :
| dcount ("*","tblverrouillage")
| ou
| select count * from latable
| je teste ça et je reviens mais le select est sûrement plus rapide ;-)

je suis nul : je sais faire un comptage avec dcount, mais je ne sais pas
faire la même chose en SQL pur ....

Alors évidemment,
dcount dans la table
est plus rapide que
dlookup dans une requête SQL "SELECT Count(*) FROM LaTable;"

--
à+
Arnaud
-------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
petit à petit, www.anor.fr.st fait son nid
-------------------------------------------