Carte du site
 Remerciements
 Netiquette
 Bugs
 Tables
 Requêtes
 Formulaires
 États (rapports)
 Modules
 APIs
 Chaînes
 Date/Time
 Général
 Ressources
 Téléchargeables

 Termes d'usage

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

© 1998-2001, Dev Ashish, All rights reserved. Optimized for Microsoft Internet Explorer