Strings: Incrémente la portion numérique d'une chaîne |
Author(s) Dev Ashish |
|
Incrémente la portion numérique d'une chaîne.
(Q) J'ai un champ qui contient des valeurs du genre
"REC-1", "REC-2", "REC-3" etc. Pour de nouveaux
enregistrements, j'aimerais pouvoir automatiquement incrémenter la portion
numérique un par un.
(A) Utiliser les fonctions Right et DMax pour retourner la
plus grande valeur du champ "FOO" et la concaténer à la
fin de la portion "REC-". Vous pouvez soit utiliser
l'exemple de code suive suivant, vous placez l'expression suivante dans la propriété DefaultValue du champ, soit en
utilisant la procédure événementielle AfterUpdate du formulaire ou d'un autre
contrôle. Par exemple, si le nom du champ est "FOO" et que
celui de la table est FOOTable, l'expression serait
="REC-" & right(DMax("FOO", "FOOTable"), _
Len(DMax("FOO", "FOOTable")) - _
InStr(1, DMax("FOO", "FOOTable"), "-")) + 1
Note: Comme l'appel répété à la fonction DMax peut ralentir cette
opération sur une grande table, je ne suggère pas de l'assigner à la
propriété DefaultValue. À la place, assigner cette valeur à un contrôle
caché sur votre formulaire et qui est lié au champ FOO. De cette façon, vous
n'avez qu'à utiliser DMax qu'une fois. Par exemple,
Private Sub SomeField_AfterUpdate()
Dim strMax as string
strMax =DMax("FOO", "FOOTable")
Me.HiddenFooCtl = "REC-" & right(strMax, _
len(strMax) - _
Instr(1,strMax, "-")) +1
End Sub
|