Bonjour à tous,
J'ai une appli avec une vingtaine de tables, quelques centaines de champs, et des FieldByName([champ]).value = éparpillés dans tout le code.
Problème : les utilisateurs veulent à présent des droits d'accès restreints sur certains champs de certaines tables, définis pour différents groupes. Donc je mets les champs interdits en "readonly" à l'ouverture de l'appli en fonction du groupe courant.
Mais beaucoup de fonctions communes (BeforeInsert entre autres) plantent à présent parce que des champs sont "readonly".
La solution de base consisterait à faire manuellement un test avant chaque FieldByName pour savoir si le groupe courant a droit ou non de modifier ce champ, mais ça me prendrait des jours.
Alors je cherche une fonction qui serait appelée automatiquement au moment où l'on exécute un FieldByName et qui me permettrait de tester si le champ de la table est "readonly", et de rejeter l'affectation de valeur dans ce cas.
J'ai essayé avec
TTable.BeforeEdit
TDatasource.OnDataChange
TDatasource.OnUpdateData
TField.OnChange
TField.OnSetText
TField.OnValidate
et ça ne fonctionne pas, car toutes ces fonctions sont appelées après l'affectation de la valeur au champs.
Auriez-vous une idée pour résoudre ce problème ??
Pour info : D7 enterprise avec SQL Serveur 2k et ODBC
(je ne dois pas être le seul à galérer pour gérer des droits d'accès !?!)
Merci.
Partager