Bonjour
Je souhaite après le changement de liste déroulante AGENCE la zone de test ANCIENS SOLDE affiche la dernière valeur saisi dans la table dans la zone de teste NOUVEAU SOLDE
Pièce jointe 342160
Version imprimable
Bonjour
Je souhaite après le changement de liste déroulante AGENCE la zone de test ANCIENS SOLDE affiche la dernière valeur saisi dans la table dans la zone de teste NOUVEAU SOLDE
Pièce jointe 342160
Bonjour.
Quelque chose comme :
Donne le 1er enregistrement de l'agence dont la date est strictement inférieur à la date courante.Code:=DFirst("NOUVEAU SOLDE"; "ECMQ"; "[Date]=#" & Format(DMax("[Date]"; "ECMQ"; "[Date]<#" & Format([Me].[Date]; "aaaa\-mm\-jj") & "# and [AGENCE]=""" & [Me].[Agence] & """"); "aaaa\-mm\-jj") & "# and [AGENCE]=""" & [Me].[Agence] & """")
Tu pourrais simplifier un peu la formule en ajoutant une clef unique (Champ [Clef], numero automatique) à ta table ECMQ. Cela donnerai
Aussi il est recommandé de ne pas nommer de champ "Date" car il y aussi une fonction qui s'appele Date() et qui retourne la date courante.Code:=DFirst("NOUVEAU SOLDE"; "ECMQ"; "[Clef]=" & DMax("[Clef]"; "ECMQ"; "[Date]<#" & Format([Me].[Date]; "aaaa\-mm\-jj") & "# and [AGENCE]=""" & [Me].[Agence] & """"); "aaaa\-mm\-jj")
Acces (et surtout toi) pourrait ne pas savoir si c'est le champ ou la fonction qui est utilisé.
Et comme on est sur les noms internes, il est prudent de se limiter à :
- Lettres majuscules ou minuscules sans accent ni "décoration" (pas de ç).
- Les chiffres.
- Le tiret bas (_)
Ne pas utiliser les caractères non alphanumériques comme le # ou le - ni l'espace.
Si tu as besoin de textes plus agréables pour un humain, utilise un formulaire et des étiquettes o:u tu pourras te faire plaisir avec des accents et autres caractères.
A+
Hello,
Pour ma part, je préfère passer par les requêtes SQL.
Dans ta liste déroulante 'Ancien solde', tu peux entrer dans la propriété de la liste déroulante => 'Données' => 'Contenu' la requête SQL suivante :
A la place du "A", tu mets la formule suivante : [Formulaires]![Nomdetonformulaire]![Nomdelalistedéroulanteagence]![Texte]Code:
1
2
3
4
5
6
7 SELECT EMCQ.[NOUVEAU SOLDE] FROM EMCQ INNER JOIN (SELECT Max(EMCQ.Date) AS MaxDeDATE, EMCQ.AGENCE FROM EMCQ GROUP BY EMCQ.AGENCE HAVING (((EMCQ.AGENCE)="A"))) AS Date_recente ON EMCQ.AGENCE = Date_recente.AGENCE GROUP BY EMCQ.[NOUVEAU SOLDE];
En mettant le nom de ton formulaire et le nom de l'objet de ta liste déroulante agence (cette formule est de mémoire à ajuster pour filtrer sur la valeur d'un contrôle d'un formulaire.
Ah oui et rajoute un requery sur ta liste déroulante lorsque la valeur de ta première liste est changée.
Voili Voilà