Numérotation auto

Ziklamor Messages postés 44 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 30 novembre 2007 - 12 juin 2007 à 14:09
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 12 juin 2007 à 22:56
Bonjour,

J'ai un nouveau petit truc qui me bloque.
J'ai une base de donnée ACCESS, avec notamment une table Facture. La clé primaire est un numéro auto, et j'aimerais utiliser celui-ci dans un formulaire VB.
J'aimerais en fait que à l'ouverture de l'application, le premier "numero auto" disponible (donc vide) apparaisse dans une textbox.

Je vous donne deja ce que j'ai essayé de faire :

'Numéro de facture suivante disponible
rqt3 = "SELECT MAX Fact_num as Compte FROM Facture"
Set rst4 = cnx.Execute(rqt3, adCmdText)
max = rst4.Fields("compte").Value + 1
fact = Str(max)

Zik'

7 réponses

cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
12 juin 2007 à 14:24
Salut,

Moi je serai toi, j'utiliserai plutôt un champ dédié pour avoir un numéro chrono que la clé primaire d'une table...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
12 juin 2007 à 14:39
Le numéro auto est généré par la base de données, tu ne doit pas y toucher, et surtout, tu n'as aucune garantie qu'il soit incrémenté de 1 (tu peux très bien avoir une sequence qui incrémente de 2 ou de 36648781 si tu veux).
0
Ziklamor Messages postés 44 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 30 novembre 2007
12 juin 2007 à 14:45
Je dois utiliser ce numéro auto, car je m'en sers deja dans d'autres instructions qui y sont liées, et ca compliquerait serieusement l'affaire.

Il n'y a pas un moyen de faire apparaitre ce numero auto dans un champ ?
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
12 juin 2007 à 14:52
Comme je t'ai dit, ce numéro auto est généré par la base, il s'agit de l'id de la table, toi tu ne fais que créer les enregistrements, ta base elle a besoin de cet id pour que chaque ligne soit différentes (c'est le but de la clé primaire).

Pourquoi as-tu besoin de ce champs ??? Comme dit exploreur, il vaut mieux que tu te crée ton propre champs plutôt que d'essayer de manipuler la clé primaire !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 14
12 juin 2007 à 14:53
Salut,

C'est toi qui défini dés le départ ton numéro auto dans le champ..
Tu commences à 1, et quand tu veux créer une nouvelle facture, tu vas lire ce numéro(du moins le dernier de ta base) et fais + 1...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 4
12 juin 2007 à 22:39
Salut,
Suis pas expert en acces mais je pense que la clé primaire n'est pas séquentielle et au vu de ce que tu veux en faire "Numéro de facture " il faut savoir que selon la DGI les numéros de factures et les dates doivent se suivre.
donc je te conseille fortement d'utiliser autre chose que l'ID de ta table

Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
12 juin 2007 à 22:56
Bonsoir;
Une table annexe composée de deux champs :
l'un est la clé primaire et est le millésime
l'autre est le dernier N° de facture utilisé

c'est ce que l'on fait, par exemple, pour gérer les indicatifs/pays/téléphone. (une clé primaire pays et un indicatif)

pour un même millésime : un seul article N° de facture (le dernier, toujours mis à jour).
Voilà tout.
0