Wednesday, August 30, 2006

Base de données (Back-end/Front-end)

Pour tous les programmeur, désirant faire des bon programmes
l'informatique est riche, selon vos connaissances, chaqu'un peut exceller en ceci ou en cela.
Aujourd'hui nous parlerons sur comment construire une base de données ou les données (back-end) sont séparées de l'interface client (front-end). Selon Richrad.J

Le truc est de construire la collection de tables, de relations et les requêtes dans une instance de Access puis ensuite de créer les formes dans la même instance.
Une fois le developement terminé, dupliquer cette instance et enlever toutes les tables de la copie qui sera l'interface client (front-end).

Laisser les formes dans la base de données elle-même pour continuer le developement plus tard.

La base de données (back-end) doit résider sur une machine connue et stable. Les autres machines y ayant accès doivent 'mapper' (je ne connais pas le mot francais) le lieu exact de cette base avec une lettre, toujours la même. Pour cela utiliser l'Explorer de la machine client et le menu "Tools / Map Network Drive..." et sélectionner une lettre (toujours la même) pour cette réference.

La collection de formes (front-end (interface client)) doit faire reference au back-end en utilisant le menu "file/Get external data/Lin tables..."
Creer des liens pour chaque demande de données des formes.

Copier le front-end sur autant de machines que nécessaire et 'mapper' la source de données.

A propos des permissions et access, la base de données elle-même doit contenir des tables qui controlent ces accès.
Une table pour les usagers (nom, mot-de-passe-usager, permission).
Un truc est d'utliser un chiffre sans décimales et de faire des masques bit. Ainsi un Long en VB (4 bytes) donnerait 32 flags différents. dont les valeurs pourraient être 1,2,4,8,16, etc...

La base de données elle-même doit contenir une forme pour ajouter, modifier ou enlever ces usagers et une aute pour manager ces permissions.

Quand un usager se connecte à la base de données, il utilise un nom et son mot de passe qui permet au programe de l'identifier. Lors du log-on, si le nom est dans la liste des approuvés (et que le mot de passe correspond), le client peut se connecter.
Lors de la demande de données, chaque requête doit contenir une condition selon laquelle la permission pour ce genre de résultat doit être remplie de style WHERE UserFlag OR FLAG_ doit être vrai.

Ex.: Des flags fictifs pourraient être:
1: droit de voir la page d'accès, les menus et certaine synthèses simples.
2: droit de voir les rapports compilés détailés
4: droit d'imprimer les rapports
8: droit de voir les données de base brutes.

Le financier en chef a le droit de voir toutes les feuilles de calculs, son flag est de 15 (addition de tout les flags)
Un administrateur en chef peut voir et imprimer tout les rapports, son flag est de 7
Un visiteur peut voir seulement et son flags est de 1.

Pour vérifier un flag, l'opération bitwise suivante doit être faite comme suit = FlagListéSousLeNomDeCetUsager OR FLAG_3. Cette _expression retourne VRAI.

A moins de savoir plus exactement de quoi il est besoin, je ne peut que rester dans le général.
Le bon coté de la chose est que Access peut donner accès à 255 usagers simultanement. Se rappeler toutefois que la base de données elle-même ne doit pas dépasser 2Gigs, ce qui pourrait vous obliger à séparer vos tables dans plusieurs instances qui peuvent cependant être localisées au même endroit sous des noms différents.