OVH Cloud OVH Cloud

incrémenter un champ de type numérique

2 réponses
Avatar
Denis CHABANNIER
Bonjour,
je bloque sur quelque chose de très simple à mon avis.

J'ai une table avec 2 champs :

- [Saison] (valeurs : été 2005, hiver 2005,.....)
- [Ordre] (numérique : 1, 2, 3....). Ce champ me permet de trier
l'affichage
des saisons par ordre décroissant dans mes formulaires.

Comment faire lorsque j'ajoute un enregistrement (une nouvelle saison), pour
que le champ Ordre prenne comme valeur le numéro d'ordre le plus grand dans
la table + 1. Ex : si l'ordre le plus grand est 26, il doit me créer ma
nouvelle saison avec le numéro d'ordre : 27.... ?? (mais je ne veux pas que
ce champ soit un numéro auto)

Merci
Denis

2 réponses

Avatar
Jessy Sempere [MVP]
Bonjour

Pourquoi tu ne veux pas d'un numéro auto, ce serait le moyen le
plus simple et le plus sûr pour faire ce que tu souhaites...

Le problème c'est que tu devras soit passer par une requête
mise à jour, soit passer forcément par un formulaire pour
créer tes nouvelles saison.

Pour le deuxième cas, si tu utilises un formulaire, tu peux regarder le
code qui suit et t'en inspirer :

************************************************
Public Function NumAuto(strTbl, strForm, strFldAuto)
'Génère une nouveau NumAuto
Dim rst As Recordset
Dim lngRecord As Long
lngRecord = 0
If Forms(strForm).Controls(strFldAuto) = 0 Then
Set rst = CurrentDb.OpenRecordset(strTbl, dbOpenDynaset)
With rst
If Not .BOF Then .MoveLast: lngRecord = .Fields(strFldAuto)
End With
Forms(strForm).Controls(strFldAuto) = lngRecord + 1
End If

End Function
************************************************

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
"Denis CHABANNIER" a écrit dans le message news:
On50Ve$
Bonjour,
je bloque sur quelque chose de très simple à mon avis.

J'ai une table avec 2 champs :

- [Saison] (valeurs : été 2005, hiver 2005,.....)
- [Ordre] (numérique : 1, 2, 3....). Ce champ me permet de trier
l'affichage
des saisons par ordre décroissant dans mes formulaires.

Comment faire lorsque j'ajoute un enregistrement (une nouvelle saison),
pour

que le champ Ordre prenne comme valeur le numéro d'ordre le plus grand
dans

la table + 1. Ex : si l'ordre le plus grand est 26, il doit me créer ma
nouvelle saison avec le numéro d'ordre : 27.... ?? (mais je ne veux pas
que

ce champ soit un numéro auto)

Merci
Denis





Avatar
Fred
Utilise la fonction DMax
NouveauNuméro=DMax("[Ordre]","MaTable")+1

Fred
"Denis CHABANNIER" a écrit dans le message de news:
On50Ve$
Bonjour,
je bloque sur quelque chose de très simple à mon avis.

J'ai une table avec 2 champs :

- [Saison] (valeurs : été 2005, hiver 2005,.....)
- [Ordre] (numérique : 1, 2, 3....). Ce champ me permet de trier
l'affichage
des saisons par ordre décroissant dans mes formulaires.

Comment faire lorsque j'ajoute un enregistrement (une nouvelle saison),
pour
que le champ Ordre prenne comme valeur le numéro d'ordre le plus grand
dans
la table + 1. Ex : si l'ordre le plus grand est 26, il doit me créer ma
nouvelle saison avec le numéro d'ordre : 27.... ?? (mais je ne veux pas
que
ce champ soit un numéro auto)

Merci
Denis