[]
Nombre de membres 1 membre
Connectés : ( personne )
 

La Charte du Forum - La Charte du Forum

Forum - Forum
Problèmes Access des débutants - Problèmes Access des débutants


clos par 3Stone le 24/03/2011 : 16:44  Sujet n° 457  numérotation d'un champ via requête

le 06/01/2011 : 21:24
par dari67

Anonyme

visiteur

Bonsoir et meilleurs voeux à toutes et tous !Grâce au "mémos de STONE3 j'ai trouvé la solution au calcul dans un état ayant un s/état vide. Bravo !Je développe une petite base pour la gestion d'une assosciation (adhérents et compta). Les adhérents à jour des cotisations 2010 bénéficient d'une attestation fiscale. Cette dernière doit recevoir une numérotation de 1 à x. pour chaque année fiscale à venir.J'ai une requête qui me filtre à partir de la table des adhérents les enregistrements concernés. J'ai créer une table "tblAttestationfiscale" avec les champs: N° (NumAuto+clé primaire) ID ( reçoit le N° adhérent) DATE_COTISATION (reçoit la date du paiement de la cotisation en 2010) et le champ N°ATTESTATION et c'est à ce dernier que je souhaite affecter un n° démarrant à 1A partir d'une requête ajout basée sur ma première requête j'arrive à affecter tous les champs ci-dessus sauf le [N°ATTESTATION].MERCI d'avance pour votre aide , je suis débutant et ne maîtrise pas le vba, comment résoudre ma problématique via mes requêtes.J'espère vous lire prochainement.TB soirée.Richard
Ecrire à dari67  sujet clos  Haut

[]   

DébutPrécédent [ 1 2 ] SuivantFin
Réponse n° 1
--------
le 08/01/2011 : 03:11
par 3Stone

Anonyme

Administrateur

Bonjour,

Avec une simple fontion de domaine, cela devrait le faire...

Le principe serait donc de récupérer la plus grande valeur, mais de la cotisation en cours. Si on ne la trouve pas, c'est que c'est la première de l'année.

Pour récupérer le plus grand numéro:

 
Code :
=DMax("NoAttestation";"tblAttestationFiscale";"Year("[Date_Cotisation]=" & Year(Date))
 
S'il n'y a pas encore de cotisation pour l'année, cette fonction renvoie NULL, ce qu'il faut corriger par la fonction "NullToZero" qui s'écrit Nz()

 
Code :
=Nz(DMax("NoAttestation";"tblAttestationFiscale";"Year("[Date_Cotisation]=" & Year(Date));0)
 

On récupère donc soit le plus grand numéro ou... zéro (0)

Il reste maintenant à incrimenter cette valeur :

 
Code :
=Nz(DMax("NoAttestation";"tblAttestationFiscale";"Year("[Date_Cotisation]=" & Year(Date));0) + 1
 
Cordialement,
Pierre(3stone)
  clos par 3Stone le 24/03/2011 : 16:44  Haut
Réponse n° 2
--------
le 10/01/2011 : 14:25
par dari67

Anonyme

visiteur

Bonjour et merci Pierre pour votre réponse,

J'ai inséré votre fonction dans la ligne mise à jour du champ NoAttestation dans une requête MàJ, mais on me retourne le message suivant:" La synthase de l'expression entrée n'est pas valide" / "Vous avez peut-être entré une opérande sans opérateur"

Désolé de vous casser les pieds ...  help me !

Très bonne journée.

Richard

  clos par 3Stone le 24/03/2011 : 16:44  Haut
Réponse n° 3
--------
le 10/01/2011 : 15:28
par 3Stone

Anonyme

Administrateur

Bonjour,

Déjà, je vois un problème de copié/collé...
 
Code :
=Nz(DMax("NoAttestation";"tblAttestationFiscale";"Year([Date_Cotisation])=" & Year(Date));0) + 1
 
Pour le reste, il faut adapter les noms, bien sûr.

Cordialement,
Pierre(3stone)
Ecrire à 3Stone   clos par 3Stone le 24/03/2011 : 16:44  Haut
Réponse n° 4
--------
le 11/01/2011 : 21:13
par dari67

Anonyme

visiteur

Bonsoir,

Merci pour votre réactivité, j'ai saisi votre code rectifié, je n'ai plus de message d'erreur, par contre l'exécution de la requête ne donne aucun résultat. J'obtiens "chaîne vide" sur l'ensemble des enregistrements concernés et décomptés.

Dans la requête le début de votre ligne de commande se transforme autom.en

Nz(MaxDom(  et la fin se transforme en    & Année ("date")

le premier ;"Year ([    reste inchangé.

Bizarre !

Help me !

  clos par 3Stone le 24/03/2011 : 16:44  Haut
Réponse n° 5
--------
le 12/01/2011 : 13:55
par 3Stone

Anonyme

Administrateur

Bonjour,

 
Code : xhtml
le début de votre ligne de commande se transforme autom.en
 
Oui, dans l'interface utilisateur, Access veux faire croire qu'il "parle" français n et traduit quelques fonctions dans la langue locale. Mais il est plus simple de les écrire en Anglais, et de laisser à Access de quoi s'amuser.

Il aurait fallu donner l'expression au complet, mais la "fin" n'est pas correcte:

 
Code :
Year( Date() )    =>   Année( Date() )
 
Il ne faut pas de guillemets à "Date".

Cordialement,
Pierre(3stone)
  clos par 3Stone le 24/03/2011 : 16:44  Haut
Réponse n° 6
--------
le 12/01/2011 : 22:49
par dari67

Anonyme

visiteur

Bonsoir,

Merci pour votre patience. J'ai fait cette dernière rectification. J'obtiens  1 dans chaque enregistrement. L'incrémentation +1 n'est pas prise en compte.

l'expression complète est:

Nz(MaxDom("N°attestationFisc";"T_ATTESTATION_FISCALE";Year"([DATE_PAIEMENT])="& Année(Date()));0)+1

Help me !

Cordialement.

Richard

  clos par 3Stone le 24/03/2011 : 16:44  Haut
Réponse n° 7
--------
le 13/01/2011 : 02:41
par 3Stone

Anonyme

Administrateur

Bonjour,

Oui... mais ce n'est pas a "peut près" qu'il faut l'écrire...
 
Code :
Nz(MaxDom("N°attestationFisc";"T_ATTESTATION_FISCALE";Year"([DATE_PAIEMENT])="& Année(Date()));0)+1
 
 
Code :
Nz(MaxDom("[N°attestationFisc]" ; "T_ATTESTATION_FISCALE" ; "Year([DATE_PAIEMENT])=" & Année(Date());0)+1
 
  • Les crochets à cause du caractère barbare "°"
  • Les guillemets avant Year
  • Les parenthèses à la fin

Cordialement,
Pierre(3stone)
  clos par 3Stone le 24/03/2011 : 16:44  Haut
Réponse n° 8
--------
le 13/01/2011 : 13:43
par dari67

Anonyme

visiteur

Bonjour et merci,

J'ai suivi vos recommandations mais j'ai du rajouter une parenthèse fermante après Année(Date()) );0)+1.

L'exécution de ma requête avec cette expression me retourne 1 dans chaque champ N°attestationFisc de tous les enregistrements filtrés.

J'ai donc modifié la condition en rajoutant +1 dans Year([DATE_PAIEMENT]+1)= puisque je compare l'égalité de l'année N à N-1

J'obtiens alors un 1 dans le champ concerné dans chaque enregistrement. En ré-exécutant la requête j'obtiens 2 et ainsi de suite.

Ce n'est pas mon résultat escompté, je souhaite lors de l'exécution de ma requête màj, le champ concerné soit incrémenté de +1 dans chaque nouvel enregistrement. soiut 1 2 3 4 5 etc. et pour chaque nouvelle année.

Help me !

Bien cordialement.

Richard

  clos par 3Stone le 24/03/2011 : 16:44  Haut
DébutPrécédent [ 1 2 ] SuivantFin
actif sujet actif   clos sujet clos   Important! Important!   Nouveau Nouveau message   -   Rectifier Rectifier message   Clôturer Clôturer sujet   Remonter Remonter
[]
Catégories de discussion  Forum 



Haut