2010-11-01 15 views
0

Je prévois de créer un formulaire d'assistance simple. L'un des attributs dont il a besoin est un nombre unique. Comment puis-je créer un identifiant unique, en commençant par une chaîne de caractères? Exemple: KL0001 et KL0002générer l'ID du client: préfixé avec des caractères alpha

Il doit s'agir d'un nombre unique.

+1

La partie "KL" est-elle toujours la même? – dotariel

+0

oui c'est en effet – Chris

+4

Le "KL" s'applique à chaque CustomerID unique? Si oui, pourquoi avez-vous besoin de le stocker? Vous ne stockez plus le nom du champ dans le champ lui-même, alors pourquoi stocker quelque chose qui est le même pour chaque enregistrement? Cela ressemble à un problème de couche de présentation, et vous pouvez l'inclure sur vos impressions et peut-être dans les formulaires, mais il ne semble pas nécessaire de les stocker. Et si cela avait un sens, il ne devrait pas être stocké dans le même champ avec le numéro, de toute façon ... –

Répondre

1

Vous pouvez utiliser un champ NuméroAuto standard pour stocker la partie numérique, puis une colonne Calculée distincte qui formate le résultat en préfixant "KL" et en remplissant le champ NuméroAuto avec les zéros nécessaires.

Exemple:

SELECT "KL" & Fmt(autonum_field, "0000") AS unique_identifier 
FROM YourTable; 
+0

Je n'utiliserais pas de champ Autonumber parce que si l'utilisateur est en étoile pour entrer l'enregistrement et annule la valeur de numérotation automatique est "perdu". –

+0

Il est à espérer que cela fonctionne, mais au fil des ans, j'ai vu un certain nombre de messages où l'autonumber est révélé aux utilisateurs/gestion et il commence soudainement à signifier quelque chose et à partir de là la vie se complique. En règle générale, les numéros d'appel/clés de substitution ne doivent pas être affichés aux utilisateurs: http://www.mvps.org/access/tencommandments.htm – Fionnuala

+0

@Remou - Je ne suis pas en désaccord avec vous. Cependant, j'essaie de ne pas introduire de complexité dans le design de quelqu'un d'autre si on ne sait pas si c'est nécessaire ou non. Moi aussi, j'hésiterais à utiliser des clés de substitution, mais là encore, je refuserais aussi d'utiliser Access;) – dotariel

0

Le problème avec l'utilisation d'un autonumber est, entre autres, si quelqu'un commence à entrer dans le dossier du autonumber est affecté. Ensuite, si l'utilisateur annule l'ajout de l'enregistrement, la valeur de numérotation automatique est perdue. Il est donc préférable d'attendre que l'utilisateur ait fini de saisir l'enregistrement et dans l'événement AfterInsert de formulaires, exécutez le code conformément à l'article suivant de la base de connaissances.

ACC2000: How to Create a Multiuser Custom Counter

Cela dit que je serais toujours utiliser un champ NuméroAuto dans la table afin qu'il soit plus facile de travailler avec des tables enfants.

+0

Oui, l'OP n'a pas indiqué les numéros nécessaires pour être séquentielle. Mais d'après mon expérience, dès que quelqu'un a besoin d'une séquence de numérotation personnalisée, tous ont besoin d'une solution sans lacunes. Les compteurs de haricots aka les comptables aiment vraiment ça. Ainsi, nous devons également commencer à penser à marquer la transaction comme étant supprimée ou inactive plutôt que de supprimer l'enregistrement. –

+0

Il peut s'agir d'une exigence gouvernementale qui stipule que les factures doivent être séquentielles et que toute lacune doit être justifiée. En jours de papier, les factures incorrectement typées devaient souvent être conservées. – Fionnuala

+2

L'OP a seulement déclaré que la valeur devait être unique. Vous supposez que c'est une exigence gouvernementale. Que faire si l'exigence est pour une base de données de film? Les écarts sont-ils importants? – dotariel