Si vous avez décidé qu'il est inapproprié de stocker les mois en tant que dates réelles (et il pourrait certainement être - je ne suis pas critique cette décision), vous souhaitez optimiser les performances en stockant vos données dans un format le plus efficace possible. C'est probablement le stockage du mois sous la forme d'un nombre entier.
À des fins d'affichage, par exemple dans des rapports, ou sur un formulaire, vous pouvez afficher le nom du mois en utilisant le format. Il est un peu délicat, car il n'y a pas de conversion directe (où « MonthField » fait référence au champ où vous stockez l'entier mois):
Format(DateSerial(Year(Date()), MonthField, 1), "mmmm")
Une alternative serait d'avoir une table qui mappe un entier mois à le nom du mois, mais cela ajoute une jointure, et si le champ peut être vide, vous devez avoir une jointure externe, ce qui est beaucoup plus coûteux en termes de performances qu'une jointure interne. N'oubliez pas que vous utiliserez l'instruction Format() uniquement dans la couche de présentation, c'est-à-dire en tant que source de contrôle d'un contrôle sur un formulaire ou un état. Sur les formulaires, vous utiliseriez probablement une zone de liste déroulante à deux colonnes à cet effet, de sorte que l'utilisateur verrait le nom du mois, mais la valeur stockée serait en fait le mois entier. Dans ce cas, un tableau peut avoir un sens, mais je ne suis pas certain qu'il aurait un réel avantage à saisir une liste de valeurs - ce n'est pas comme si c'était une donnée volatile, c'est-à-dire ce qui est la principale raison pour laquelle vous utiliseriez une table à la place d'une liste de valeurs)!
EDIT:
Comme @HansUp l'a souligné, il y a une fonction MonthName() en VBA (je ne savais pas que ça existait!), De sorte que fait tout le chemin ci-dessus plus compliquée qu'elle doit être - vous pouvez l'utiliser dans la couche de présentation sans avoir besoin d'une table ou de l'instruction compliquée Format().
OK. Y a-t-il un autre moyen de prendre la conversation dans le champ d'ordre (comme 'ordre par mois (' '..field name'') asc')? – Karthik
Je ne suis pas un expert en Access - mais je m'attendrais à ce que vous puissiez commander par un calcul et que le calcul puisse être '1 /' + month + '/ 2010' ou similaire - à savoir une commande par date. –
La suggestion de la table de recherche fonctionnera beaucoup mieux, car le tri sur une expression ne peut pas utiliser les index. –