Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/11/2010, 14h15   #1
Membre à l'essai
 
Inscription : novembre 2009
Messages : 115
Détails du profil
Informations personnelles :
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : novembre 2009
Messages : 115
Points : 20
Points : 20
Par défaut Numéro auto personnalisé

Bonjour,

Je suis le tuto pour une numérotation personnalisé du num-auto (ICI) et je voudrais des renseignements complémentaires :
J'ai donc ma table avec les champs suivants :
- IDDevisclients : NumeroAuto - clé primaire
- indice : Numérique - N° du devis à incrémenter
- datedevis : Date - Date de création du devis
- numdevisclients : Champ calculé numéro perso

Je voudrais lorsque je fais "nouveau devis" avoir dans ma zone de texte "numdevisclients", le numéro perso (ex : DE201011001)
DE = Devis
2010 = Année
11 = Mois
001 = nombre de devis

Dans le tuto :
Citation:
Les deux appels suivants retournent le même résultat, pour des valeurs du champ [Indice] ne dépassant pas 999.
Je met le format dans le format de mon champ indice de ma table ?

Et mon champ calculé "numdevisclients" :
Code :
1
2
3
"FA" & 
Right$(Year([datedevis]);2) & 
String$(2-Len(Month([datedevis]));"0") & Month([datedevis]) & String$(3-Len([indice]);"0") & [Indice]
merci par avance

@+
scoobydoos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 16h43   #2
Membre à l'essai
 
Inscription : novembre 2009
Messages : 115
Détails du profil
Informations personnelles :
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : novembre 2009
Messages : 115
Points : 20
Points : 20
Par défaut [AC-2010] Numéro auto personnalisé

Bonjour,

J'ai déjà réussi à faire mon numéro perso mais il me manque l'indice qui ne s'incrémente pas.

Déjà une vue de mon champ calculé "numdevisclients" :
Code :
"DE" & Année([datedevis]) & Chaîne$(2-NbCar(Mois([datedevis]));"0") & Mois([datedevis]) & Chaîne$(3-NbCar([indice]);"0") & [indice]
Une petite info en passant, lorsque j'ai tapé le code et une fois validé et enregistré, Access m'a traduit automatiquement les variables en anglais :
Year = Année
Month = Mois
String$ = Chaine$
len = NbCar

Pouvez-vous me décrypter les 2 expressions suivantes svp car je n'arrive pas à voir ce qu'elles retournent :
Code :
(1) Chaîne$(2-NbCar(Mois([datedevis]));"0")
Code :
(2) Chaîne$(3-NbCar([indice]);"0")
Chaine = Répéte le premier caractère d'une chaine n fois
NbCar = Nbre de caractère contenu dans une expression type chaine
C'est à dire :
(1) si il y a 1 caractère comme mois, on ajoute un 0 ?
(2) si il y a 1 caractère, on ajoute deux 0 si 2 caractères on ajoute un 0

J'ai bon ?

Par contre, je n'arrive pas à comprendre comment l'indice s'incrémente tout seul ?
Pouvez-vous m'aider ? Peut-être l'auteur du Tuto M. Christophe WARIN ?

Merci par avance

@+
scoobydoos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2010, 20h33   #3
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 404
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 404
Points : 4 427
Points : 4 427
bonsoir scoobydoos,

bon, je débute avec la nouvelle version 2010 et ses macros de données, mais je vais essayer de t'aider quand même en espérant ne pas me tromper.

Citation:
Par contre, je n'arrive pas à comprendre comment l'indice s'incrémente tout seul ?
En suivant le tuto, on voit qu'il te faut donc une requête qryNouvelIndice:
Code sql :
1
2
3
SELECT Max(Indice)+1 AS NOUVELINDICE, Year(DateFacture) AS ANNEE, Month(DateFacture) AS MOIS
FROM TblFacture
GROUP BY Year(DateFacture), Month(DateFacture);

Ensuite en mode création de tables pour la table Facture, tu cliques sur le bouton "créer des macros de données", puis tu sélectionnes l'évènement "Avant modification".

Dans la fenêtre de rédaction, il faut soigneusement saisir la macro:


si tout se passe bien, lorsque tu valides une nouvelle ligne le champ [indice] se remplit tout seul.


Citation:
Envoyé par Scoobydoos
J'ai bon ?
Tu as bien compris
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 10h35   #4
Membre à l'essai
 
Inscription : novembre 2009
Messages : 115
Détails du profil
Informations personnelles :
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : novembre 2009
Messages : 115
Points : 20
Points : 20
Par défaut [AC-2010] Numéro auto personnalisé

Bonjour,

Comment sais-tu qu'il fallait faire une macro dans la table ?
Il fait du vba mais je ne sais où il met son code ? Si tu peux me le dire...

Bref j'ai fait comme tu m'as dit mais il me met une erreur lorsque je valide ma ligne : "L'indentificateur [indice] est introuvable"
J'ai bien mon champ pourtant.
Mon SQL :
Code :
1
2
3
SELECT Max(indice)+1 AS NouvelIndice, year(datedevis) AS Année, Month(datedevis) AS Mois
FROM [Devis clients]
GROUP BY year(datedevis), Month(datedevis);
Et ma macro ci-joint.

merci par avance

@+
Images attachées
Type de fichier : jpg macro.JPG (26,4 Ko, 6 affichages)
scoobydoos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 15h10   #5
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 404
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 404
Points : 4 427
Points : 4 427
regarde et compare l'indentation de nos deux codes,

tu as mis le bloc
Code :
définirchamp([Indice];vindice)
à l'intérieur du bloc
Code :
Rechercher un enregistrement dans...
alors qu'il ne devrait pas l'être.
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 16h01   #6
Membre à l'essai
 
Inscription : novembre 2009
Messages : 115
Détails du profil
Informations personnelles :
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : novembre 2009
Messages : 115
Points : 20
Points : 20
Bonjour,

Effectivement c'était subtil et c'est vrai que ca fonctionne...
Par contre, il faudra attendre que j'arrive quelques choses pour que le numéro s'affiche ?
En fait sur mon formulaire nouveau devis, je veux lorsque je l'ouvre que le numéro de devis apparaisse direct.

Au fait tu m'as répondu à ma question sur la macro ? C'est à titre de curiosité...

merci par avance

@+
scoobydoos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2010, 18h03   #7
Expert Confirmé Sénior
 
Avatar de f-leb
 
Homme Fabien
Enseignant
Inscription : janvier 2009
Messages : 2 404
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 41
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : janvier 2009
Messages : 2 404
Points : 4 427
Points : 4 427
re,

Citation:
Envoyé par scoobydoos Voir le message
Par contre, il faudra attendre que j'arrive quelques choses pour que le numéro s'affiche ?
En fait sur mon formulaire nouveau devis, je veux lorsque je l'ouvre que le numéro de devis apparaisse direct.
En effet, c'est signalé dans le tuto au paragraphe: III-B. Mise en place dans un formulaire
Citation:
Envoyé par C.Warin
L'évènement de table étant déclenché après la validation des données dans le formulaire, il est impossible d'afficher en temps réel l'indice calculé dans la DataMacro vue plus haut.
il faut donc ruser:
Citation:
Envoyé par C.Warin
La mission va donc consister à présenter un numéro de facture probable et de le comparer en fin de traitement avec celui effectivement inscrit dans la base de données.

Citation:
Envoyé par scoobydoos
Comment sais-tu qu'il fallait faire une macro dans la table ?
les évènements de tables dont parlent le tuto sont des fonctionnalités qui existent depuis longtemps sur les SGBD C/S (SQL Server, Oracle, MySQL,...) et que les utilisateurs d'Access attendaient depuis longtemps. On va pouvoir faire comme les grands
f-leb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2010, 15h47   #8
Membre à l'essai
 
Inscription : novembre 2009
Messages : 115
Détails du profil
Informations personnelles :
Localisation : France, Puy de Dôme (Auvergne)

Informations forums :
Inscription : novembre 2009
Messages : 115
Points : 20
Points : 20
Bonjour,

Citation:
Dans cette optique, un champ nommé txtNumFacture possédant l'expression suivante comme source peut suffire :

=IIf([NewRecord]; "FA" & Format(Nz([DateFacture]);"yymm") & Format(Nz
(
DMax(
"Indice";
"tblFacture";
"Format([DateFacture],""yymm"")=" & Chr(34) & Format(Nz([txtDateFacture]);"yymm") & Chr(34)
)+1;1);"000");
[NumeroFacture])
"txtNumFacture" est un autre champ calculé situé dans ma table ?
Et "txtDateFacture", je ne le vois pas dans son tableau ?

merci par avance

@+
scoobydoos est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h43.


 
 
 
 
Partenaires

Hébergement Web