I. Introduction▲
Après avoir saisi dans un formulaire les dates de début et de fin de la location, on souhaiterait savoir quel matériel est disponible en magasin durant cette période.
Pour cela, on va l'indiquer dans la liste de choix du matériel. On réduira ainsi les risques d'erreurs de saisie.
II. Tables nécessaires▲
Commençons pas décrire la structure des tables principales.
II-A. T_Materiel▲
Table permettant d'enregistrer les informations concernant le matériel.
Nom du champ | Type de données | Description |
---|---|---|
IdMateriel | NuméroAuto | Identifiant du matériel |
RefMateriel | Texte | Référence du matériel |
DesignationMateriel | Texte | Désignation du matériel |
PrixHT | Monétaire | Prix hors taxe; |
... | ... | ... |
II-B. T_Location▲
Table permettant d'enregistrer les informations relatives à la location, comme la période d'emprunt de l'article ou l'identifiant du client.
Nom du champ | Type de données | Description |
---|---|---|
IdLocation | NuméroAuto | Identifiant de la location |
DateDemande | Date/Heure | Date de la demande du client |
IdClient | Entier long | Identifiant du client |
DateDebut | Date/Heure | Date de début de la location |
DateFin | Date/Heure | Date de fin de la location |
... | ... | ... |
II-C. T_Detail_Location▲
Les données concernant le détail de la location, comme la liste des matériels empruntés et leur prix, sont enregistrées dans une table supplémentaire.
Nom du champ | Type de données | Description |
---|---|---|
IdDetailLocation | NuméroAuto | Identifiant du détail de la location |
IdLocation | Entier long | Clé étrangère liée au champ IdLocation de la table T_Location |
IdMateriel | Entier long | Clé étrangère liée au champ IdMateriel de la table T_Materiel |
... | ... | ... |
III. Requêtes nécessaires▲
III-A. R_Materiel_Loue▲
Commençons par décrire la requête permettant de sélectionner le matériel non disponible durant la période saisie dans le formulaire.
Elle est basée sur les tables T_Location et T_Detail_Location, reliées entre elles par les champs IdLocation. Elle sélectionne uniquement le matériel dont la période de location est comprise entre les dates de début et de fin saisies dans le formulaire.
Paramètres de la requête permettant de filtrer les données sur une période donnée
Paramètre | Type | Description |
---|---|---|
Forms!F_Location!DateDebut | Date/Heure | Zone de texte située sur le formulaire F_Location liée au champ DateDebut de la table T_Location |
Forms!F_Location!DateFin | Date/Heure | Zone de texte située sur le formulaire F_Location liée au champ DateFin de la table T_Location |
... | ... | ... |
Expressions conditionnelles
Expression | Colonne | Description |
---|---|---|
<=nz(Forms!F_Location!DateFin;#01-01-3000#) | DateDebut | nz renvoie une date très lointaine si le paramètre est à null. Cela revient donc à ne pas mettre de condition. |
>=nz(Forms!F_Location!DateDebut;#01-01-1000#) | DateFin | nz renvoie une date très ancienne si le paramètre est à null. Cela revient donc à ne pas mettre de condition. |
III-B. R_Materiel▲
Décrivons maintenant la requête permettant d'afficher la disponibilité du matériel durant la période choisie sur le formulaire.
Elle comporte une jointure gauche entre la table T_Materiel et la requête R_Materiel_Loue, et affiche une croix en face de chaque matériel loué.
Le champ calculé permettant d'afficher une croix en face de chaque matériel loué :
Loué
:
VraiFaux
(
EstNull
(
[R_Materiel_Loue].
[idMateriel]);""
;"X"
)
Si la valeur de la colonne idMateriel, du côté de la table T_Materiel, n'est pas présente dans la requête R_Materiel_Loue, le champ idMateriel de cette requête est à null, et dans ce cas on affiche une chaîne vide, sinon, on affiche une croix.
IV. Liste de choix du matériel▲
La liste de choix cmbMateriel située dans le sous-formulaire affiche les disponibilités du matériel pour la période choisie sur le formulaire.
Propriétés principales de la liste déroulante :
Propriété | Valeur | Description |
---|---|---|
Source contrôle | IdMaterie | Champ de la table T_Detail_Location lié à la liste déroulante |
Contenu | R_Materiel | Requête alimentant la listen |
Nbre colonnes | 4 | Nombre de colonnes prise en compte dans la liste |
Colonne liée | 1 | Indice de la colonne liée au champ source de la liste |
Largeurs colonnes | 0cm;3cm;10cm;2cm | Largeurs des colonnes, la 1re colonne étant masquée |
Vaide si | [cmbMateriel].[Column](3)="" | La saisie est acceptée si le matériel choisi n'est pas marqué d'une croix. |
Message si erreur | Matériel indisponible ! | Si le matériel choisi est marqué d'une croix on affiche "Matériel indisponible !". |
La 1re colonne étant masquée, on est contraint pour ne pas effacer l'information concernant la référence de l'article choisi, d'afficher tous les matériels dans la liste.
On prévoira également de rafraîchir cette liste de choix après la mise à jour des dates de début et de fin de la location, mais aussi sur activation d'un enregistrement :
Private
Sub
Form_Current
(
)
Me.SF_Detail_Location.Form
!cmbMateriel.Requery
End
Sub
V. Conclusion▲
Ce type de liste est donc relativement facile à réaliser et offre en plus une indication importante à l'utilisateur. A noter que suivant le même principe on aurait pu aussi afficher la disponibilité de chambres d'hôtel ou de voitures de location.
VI. Base de données à télécharger▲
La base jointegestion-materiel.zip est au format accdb, elle contient le formulaire permettant la saisie du matériel de location.