Boite de paramètres.

Le
Albert
Bonjour / bonsoir

Dans une requête la boite de paramètres affiche "entrez une valeur de
paramètres", Date de début et date de fin.

J'aimerais pouvoir ajouter "Format aa-mm-jj" pour guider la personne qui
tape les données. Est-ce possible?

Ci-joint le text SQL de cette requête:

PARAMETERS [Date de début] DateTime, [Date de fin] DateTime;
SELECT CapitaliserNom([lastname]) & ", " & CapitaliserPrénom([firstname]) AS
NomComplet, TBLcotisation.DateCotisation, TBLcotisation.MontantCotisation,
TBLcotisation.ArgentCheque, TBLcotisation.Note1, TBLcotisation.Note2
FROM TBLmbcc RIGHT JOIN TBLcotisation ON TBLmbcc.Numéro =
TBLcotisation.Numéro
WHERE (((TBLcotisation.DateCotisation) Between [date de début] And [Date de
fin]))
ORDER BY TBLcotisation.DateCotisation;

Vos suggestions seront appréciées.

Je serai de retour dimanche.
Merci

--
albertri-at-videotron.ca.invalid
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
pascal58
Le #24417651
On 20 avr, 01:12, "Albert"
Bonjour / bonsoir

Dans une requête la boite de paramètres affiche  "entrez une valeur de
paramètres", Date de début et date de fin.

J'aimerais pouvoir ajouter  "Format  aa-mm-jj"  pour guider la pers onne qui
tape les données. Est-ce possible?

Ci-joint le text SQL de cette requête:

PARAMETERS [Date de début] DateTime, [Date de fin] DateTime;
SELECT CapitaliserNom([lastname]) & ", " & CapitaliserPrénom([firstname ]) AS
NomComplet, TBLcotisation.DateCotisation, TBLcotisation.MontantCotisation ,
TBLcotisation.ArgentCheque, TBLcotisation.Note1, TBLcotisation.Note2
FROM TBLmbcc RIGHT JOIN TBLcotisation ON TBLmbcc.Numéro =
TBLcotisation.Numéro
WHERE (((TBLcotisation.DateCotisation) Between [date de début (aa-mm-jj )] And [Date de
fin (aa-mm-jj)]))
ORDER BY TBLcotisation.DateCotisation;

Vos suggestions seront appréciées.

Je serai de retour dimanche.
Merci

--
albertri-at-videotron.ca.invalid



Bonsoir/bonjour

PARAMETERS [Date de début] DateTime, [Date de fin] DateTime;
SELECT CapitaliserNom([lastname]) & ", " &
CapitaliserPrénom([firstname]) AS
NomComplet, TBLcotisation.DateCotisation,
TBLcotisation.MontantCotisation,
TBLcotisation.ArgentCheque, TBLcotisation.Note1, TBLcotisation.Note2
FROM TBLmbcc RIGHT JOIN TBLcotisation ON TBLmbcc.Numéro =
TBLcotisation.Numéro
WHERE (((TBLcotisation.DateCotisation) Between [date de début] And
[Date de
fin]))
ORDER BY TBLcotisation.DateCotisation;


Voilà !
pascal58
Le #24417551
On 20 avr, 01:12, "Albert"
Bonjour / bonsoir

Dans une requête la boite de paramètres affiche  "entrez une valeur de
paramètres", Date de début et date de fin.

J'aimerais pouvoir ajouter  "Format  aa-mm-jj"  pour guider la pers onne qui
tape les données. Est-ce possible?

Ci-joint le text SQL de cette requête:

PARAMETERS [Date de début] DateTime, [Date de fin] DateTime;
SELECT CapitaliserNom([lastname]) & ", " & CapitaliserPrénom([firstname ]) AS
NomComplet, TBLcotisation.DateCotisation, TBLcotisation.MontantCotisation ,
TBLcotisation.ArgentCheque, TBLcotisation.Note1, TBLcotisation.Note2
FROM TBLmbcc RIGHT JOIN TBLcotisation ON TBLmbcc.Numéro =
TBLcotisation.Numéro
WHERE (((TBLcotisation.DateCotisation) Between [date de début] And [Dat e de
fin]))
ORDER BY TBLcotisation.DateCotisation;

Vos suggestions seront appréciées.

Je serai de retour dimanche.
Merci

--
albertri-at-videotron.ca.invalid



Pardon, ceci plutôt :
PARAMETERS [Date de début (aa-mm-jj)] DateTime, [Date de fin (aa-mm-
jj)] DateTime;
SELECT CapitaliserNom([lastname]) & ", " &
CapitaliserPrénom([firstname]) AS
NomComplet, TBLcotisation.DateCotisation,
TBLcotisation.MontantCotisation,
TBLcotisation.ArgentCheque, TBLcotisation.Note1, TBLcotisation.Note2
FROM TBLmbcc RIGHT JOIN TBLcotisation ON TBLmbcc.Numéro =
TBLcotisation.Numéro
WHERE (((TBLcotisation.DateCotisation) Between [date de début (aa-mm-
jj)] And [Date de
fin (aa-mm-jj)]))
ORDER BY TBLcotisation.DateCotisation;
Gloops
Le #24418291
pascal58 a écrit, le 20/04/2012 14:00 :
Pardon, ceci plutôt :
PARAMETERS [Date de début (aa-mm-jj)] DateTime, [Date de fin (aa-mm-
jj)] DateTime;



:)

Ah ben oui, on va avoir le format dans l'invite de saisie, comme ça
l'utilisateur saura comment il doit saisir !

Maintenant, on peut aussi avoir une saisie plus guidée que ça, avec u ne
zone de texte à laquelle est associée une propriété InputFormat, mais
pour avoir ça, il faut créer un formulaire pour la saisie des paramè tres.

Avantage supplémentaire : on va pouvoir saisir les deux paramètres su r
le même formulaire, plutôt que les deux questions soient posées
successivement.

Alors plutôt que des zones de texte avec un format de saisie, rien
n'empêche de mettre plutôt deux calendriers. Avec les premières ver sions
d'Access il fallait déclarer la référence qui allait bien, si je me
rappelle bien avec Access 2007 je n'ai même pas eu besoin de faire ça .

Au demeurant, si on préfère, pour chaque date on peut même présen ter une
paire calendrier / zone de texte, de façon que l'utilisateur puisse
utiliser le mode de saisie qu'il préfère. Alors si on fait ça, il f aut
bravement écrire le code pour synchroniser les informations des deux
contrôles, zone de texte et calendrier, concernés par la même date
(c'est un truc qui a tellement été fait au fil des ans qu'on doit le
trouver en plusieurs exemplaires dans les archives du newsgroup).

Un autre code qu'il serait pas mal de mettre dans le formulaire de
paramètres : vérifier que les deux dates ont bien été saisies, et
qu'elles sont bien dans l'ordre prévu. Si elles sont dans l'ordre
inverse, proposer de les remettre automatiquement dans le bon ordre.

Bon alors pour le passage des paramètres, entre le formulaire de
paramètres et la requête ...
Il y a une version simplifiée, qui si je ne m'abuse est documentée
quelque part dans l'aide :
- le formulaire de paramètres s'appelle frmParamDatesRequeteCotis
- dans la requête de cotisations, on va exprimer le critère comme cec i :
WHERE (((TBLcotisation.DateCotisation)
Between Forms!frmParamDatesRequeteCotis!txtDateDebut
And Forms!frmParamDatesRequeteCotis!txtDateFin

Etant entendu que :
- je laisse le soin au lecteur de mettre des guillemets où il faut et d e
gérer les sauts de ligne au besoin
- les contrôles du formulaire de paramètres qui contiennent les dates de
début et de fin s'appellent respectivement txtDateDebut et txtDateFin

Cette version simplifiée suppose qu'on n'appelle la requête que depui s
son formulaire de paramètres. Si on veut aussi pouvoir l'appeler depuis
un code dans un module, on peut aussi l'écrire comme ça :

(début de la requête)
PARAMETERS DateDebut DateTime, DateFin DateTime;

Dans le code, y compris celui du bouton de validation du formulaire de
paramètres :

Dim qryCotis As QueryDef
Dim Rs As Recordset
Set qryCotis = CurrentDb().QueryDefs("qryCotisations")
'tiens oui je ne m'étais pas encore occupé de lui donner un nom,
'à celle-là

With qryCotis
.Parameters("DateDebut") = DateValue("01/04/2012")
.Parameters("DateFin") = DateValue("30/04/2012")
Set Rs = .OpenRecordset()
End With

Je suis gonflé de balancer ça sans l'avoir testé.
Bon mais il est l'heure d'aller manger :)
Gloops
Le #24418501
Gloops a écrit, le 20/04/2012 19:16 :
With qryCotis
.Parameters("DateDebut") = DateValue("01/04/2012")
.Parameters("DateFin") = DateValue("30/04/2012")
Set Rs = .OpenRecordset()
End With





Alors ça marche, après on peut avoir envie de parler de la façon
d'articuler le formulaire de paramètres et la requête depuis le modul e
appelant, ça après tout ça sera à Albert de dire comment il s'en sort.

Pendant que je suis là, à toutes fins utiles j'ai testé le formulai re
comme ça, j'avais une requête qui comportait les champs DateCotisatio n
et Texte, ceci arrive juste après le code ci-dessus :

While Not Rs.EOF
Debug.Print Rs!DateCotisation, Rs!Texte
Rs.MoveNext
Wend
Rs.Close

Ah tiens j'ai oublié :
Set Rs = Nothing

Et je constate que les enregistrements qui s'affichent sont ceux du mois
d'Avril.

Bien entendu, dans une vraie application, il fallait gérer le cas où un
des champs a une valeur nulle.
Albert
Le #24422701
Bonjour Pascal58
"pascal58" news:
On 20 avr, 01:12, "Albert"
Ceci fonctionne très bien, j'avais essayé quelque chose de semblable qui ne
fonctionnait pas à cause du mauvais placement des parenthèses.
Merci beaucoup

Albert


Dans une requête la boite de paramètres affiche "entrez une valeur de
paramètres", Date de début et date de fin.

J'aimerais pouvoir ajouter "Format aa-mm-jj" pour guider la personne qui
tape les données. Est-ce possible?

Ci-joint le text SQL de cette requête:

PARAMETERS [Date de début] DateTime, [Date de fin] DateTime;
SELECT CapitaliserNom([lastname]) & ", " & CapitaliserPrénom([firstname])
AS
NomComplet, TBLcotisation.DateCotisation, TBLcotisation.MontantCotisation,
TBLcotisation.ArgentCheque, TBLcotisation.Note1, TBLcotisation.Note2
FROM TBLmbcc RIGHT JOIN TBLcotisation ON TBLmbcc.Numéro > TBLcotisation.Numéro
WHERE (((TBLcotisation.DateCotisation) Between [date de début] And [Date
de
fin]))
ORDER BY TBLcotisation.DateCotisation;

Vos suggestions seront appréciées.

Je serai de retour dimanche.
Merci

--
albertri-at-videotron.ca.invalid



Pardon, ceci plutôt :
PARAMETERS [Date de début (aa-mm-jj)] DateTime, [Date de fin (aa-mm-
jj)] DateTime;
SELECT CapitaliserNom([lastname]) & ", " &
CapitaliserPrénom([firstname]) AS
NomComplet, TBLcotisation.DateCotisation,
TBLcotisation.MontantCotisation,
TBLcotisation.ArgentCheque, TBLcotisation.Note1, TBLcotisation.Note2
FROM TBLmbcc RIGHT JOIN TBLcotisation ON TBLmbcc.Numéro TBLcotisation.Numéro
WHERE (((TBLcotisation.DateCotisation) Between [date de début (aa-mm-
jj)] And [Date de
fin (aa-mm-jj)]))
ORDER BY TBLcotisation.DateCotisation;
Albert
Le #24422861
Bonjour Gloops
"Gloops" news:jms5l9$mvs$
pascal58 a écrit, le 20/04/2012 14:00 :
Pardon, ceci plutôt :
PARAMETERS [Date de début (aa-mm-jj)] DateTime, [Date de fin (aa-mm-
jj)] DateTime;


:)

<Ah ben oui, on va avoir le format dans l'invite de saisie, comme ça
<'utilisateur saura comment il doit saisir !
J'ai légèrement modifié

PARAMETERS [Date de début (Format aa-mm-jj)] DateTime, [Date de fin (Format
aa-mm-jj)] DateTime;

Là est le problème, l'utilisateur entrait la date à la francaise
jour-mois-année, et la base utilise le format canadien qui est métrique pour
la date courte, donc aaaa-mm-jj.

<Maintenant, on peut aussi avoir une saisie plus guidée que ça, avec une
<zone de texte à laquelle est associée une propriété InputFormat, mais
<pour avoir ça, il faut créer un formulaire pour la saisie des paramètres.

Sur une autre base j'utilise un formulaire, mais ici ce n'est pas
nécessaire.

Un autre code qu'il serait pas mal de mettre dans le formulaire de
paramètres : vérifier que les deux dates ont bien été saisies, et qu'elles
sont bien dans l'ordre prévu. Si elles sont dans l'ordre inverse, proposer
de les remettre automatiquement dans le bon ordre.



J'ai vérifié avec "Between ou Entre" l'ordre d'entrée des dates n'a pas
d'importance, cela m'a surpris, mais a bien y penser c'est logique.

Je conserve vos deux messages pour mieux explorer les diverses options,

Merci et à la prochaine recherche de solution.

--
albertri-at-videotron.ca.invalid
Gloops
Le #24423121
Albert a écrit, le 22/04/2012 22:06 :
J'ai vérifié avec "Between ou Entre" l'ordre d'entrée des dates n 'a pas
d'importance, cela m'a surpris, mais a bien y penser c'est logique.




Ah, je retiens. C'est vrai qu'en plus c'est plus simple que > DateDebut
et < DateFin, où là en revanche il ne s'agit pas d'inverser.
Publicité
Poster une réponse
Anonyme