Formation les contraintes avancées sous Microsoft Access, tutoriel & guide de travaux pratiques en pdf.
Contraintes CHECK (X=TRUE)
La forme CHECK (X=TRUE) permet de mettre en place n’importe quelle condition qui ne serait pas basée sur la valeur des données saisies. En fait, il s’agit simplement de tester si la condition à gauche (X) du signe = est vraie. Dès lors toutes les fantaisies sont possibles.
Ainsi, il est possible par exemple de limiter le nombre de lignes dans une table. Dans l’exemple suivant, il est interdit de saisir plus d’un enregistrement dans la table tblLimite.
ALTER TABLE tblLimite ADD CONSTRAINT NbLigneMaxi CHECK ( ( SELECT Count(limite)<2 FROM tblLimite ) =TRUE )
Et puis, pourquoi pas, ne pas interdire la modification des données tous les lundis :
ALTER TABLE tblLimite ADD CONSTRAINT InterditLundi CHECK (Weekday(date())<>2=TRUE )
Contraintes avancées sous Microsoft Access par Christophe WARIN (Mon espace perso)
Comme vous le voyez, la puissance du code SQL permet de satisfaire quasiment à toutes les exigences. Attention cependant : il s’agit de code SQL Access et non de code VBA. Vous ne pouvez donc pas faire appel aux éléments propres à VBA, tels que les fonctions personnalisées d’un module par exemple. De plus sous Access 2007, les champs à valeurs multiples ne peuvent pas intégrer la clause CHECK.
Suppression des contraintes
Les contraintes ainsi créées n’étant pas répertoriées dans l’interface graphique d’Access, il est nécessaire, pour les supprimer, d’utiliser la même méthode que pour leur création, à savoir une requête SQL exécutée avec une connexion ADO DB. La syntaxe de l’ordre SQL est la suivante :
ALTER TABLE <nomdelatable> DROP <nomdelacontrainte>
Ce qui donne en VBA :
Sub SuppressionContrainte() Dim oCnx As ADODB.Connection Dim strSQL As String Set oCnx = Application.CurrentProject.Connection strSQL = « ALTER TABLE tblLimite DROP CONSTRAINT LimiteMontant » oCnx.Execute strSQL End Sub
Pour pouvoir supprimer une table, il est nécessaire de supprimer toutes les contraintes s’y rattachant.
Modification d’une contrainte
La syntaxe :
ALTER TABLE <nomdelatable> ALTER CONSTRAINT …
n’étant pas reconnue, il est impossible de modifier le code de définition d’une contrainte. La solution : supprimer et recréer.