2009-05-11 7 views
1

J'ai un Access 2000 rapport basé sur une requête comme celui-ciAccess Report - Semaine de la date de fin

SELECT 
... 
FROM Clients AS wc INNER JOIN ... 
WHERE ((wo.OfferStatusID)=3) AND 
((DatePart("ww",[wo.StatusTimeStamp]))=DatePart("ww",[Enter Week End Date])) 
AND ((Year([wo.StatusTimeStamp]))=Year(Date()))); 

La clause where vous permet d'entrer la «Semaine date de la fin et il trouve tous les enregistrements pour la semaine du dimanche au samedi qui contient la date de fin. Mon problème est que je dois inclure la date de fin de samedi sur le rapport de sorte que l'en-tête se lit '... pour la semaine se terminant le 09/09/09' et je ne peux pas comprendre comment obtenir cette date sans le requête me demandant une seconde fois.

Existe-t-il un moyen de forcer Access à retourner le paramètre entré comme un autre champ dans les résultats ou un autre moyen d'obtenir cette date de fin de semaine?

Répondre

4

continue à fouiner dans le concepteur de requêtes j'ai découvert que je pourrais ajouter à la clause SELECT et obtenir la valeur entrée ajoutée à chaque ligne:

[Enter Week End Date] AS WeekEndDate 

Cela fonctionne, mais je suis toujours ouvert à d'autres suggestions.

+0

C'est aussi bon que ça :-) –

0

Vous pouvez empiler deux requêtes (l'une étant la source de l'autre). Ce serait joli MS Access'y. Cependant, si vous l'avez maintenant, je m'en tiendrai à ce que vous avez. C'est probablement plus propre.

0

Une autre approche consiste à utiliser un formulaire pour saisir les paramètres de requête en premier et faire référence au contrôle de formulaire dans la requête. Par exemple, avec votre exemple, créez un formulaire appelé frmGetDateParam et ajoutez une zone de texte appelée txtDate. Changer le format à une date, peut-être ajouter une validation, n'a pas d'importance. Ajoutez un bouton de commande au formulaire qui ouvre le rapport. Ensuite, modifiez votre requête pour ressembler à ceci: -

SELECT 
... 
FROM Clients AS wc INNER JOIN ... 
WHERE ((wo.OfferStatusID)=3) AND 
((DatePart("ww",[wo.StatusTimeStamp]))=DatePart("ww",Forms!frmGetDateParam!txtDate)) 
AND ((Year([Forms!frmGetDateParam!txtDate]))=Year(Date()))); 

Vous pouvez également référencer les formes frmGetDateParam txtDate comme un champ sur votre rapport!. Le seul inconvénient de cette approche est que si vous essayez d'ouvrir la requête/le rapport sans que le formulaire de paramètre soit ouvert, la requête vous demandera toujours la valeur de la date.

Questions connexes