Comment rechercher une valeur dans une table qui contient des paliers
Par Claude Leloup
Le 2012-07-02 21:10:21, par ClaudeLELOUP, Rédacteur/Modérateur
Bonjour,
Je vous propose un petit tutoriel qui s'adresse aux débutants.
Il s'agit de rechercher dans une table, une valeur qui ne s'y trouve pas nécessairement et de choisir selon les circonstances : la valeur immédiatement supérieure (ou éventuellement égale) ou la valeur immédiatement inférieure.
Par exemple :
Access offre plusieurs voies pour atteindre ce but.
Dans ce tutoriel, nous utiliserons uniquement des fonctions intégrées sans recourir à du code VBA.
Nous aborderons l'utilisation des fonctions intégrées au moyen de quelques exemples pour illustrer la recherche d'une date, d'une heure, d'un texte ou d'une valeur numérique dans une table.
Si vous souhaitez donner votre avis sur ce tutoriel, profitez de cette discussion.
Merci déjà.
Je vous propose un petit tutoriel qui s'adresse aux débutants.
Il s'agit de rechercher dans une table, une valeur qui ne s'y trouve pas nécessairement et de choisir selon les circonstances : la valeur immédiatement supérieure (ou éventuellement égale) ou la valeur immédiatement inférieure.
Par exemple :
Access offre plusieurs voies pour atteindre ce but.
Dans ce tutoriel, nous utiliserons uniquement des fonctions intégrées sans recourir à du code VBA.
Nous aborderons l'utilisation des fonctions intégrées au moyen de quelques exemples pour illustrer la recherche d'une date, d'une heure, d'un texte ou d'une valeur numérique dans une table.
Si vous souhaitez donner votre avis sur ce tutoriel, profitez de cette discussion.
Merci déjà.
-
f-lebResponsable Arduino et Systèmes Embarquésre moi,
je n'ai pas résistéil fallait que je tente avec une requête, une requête à construire avec les assistants, pour obtenir ce tableau:
Je m'étais dit qu'il ne reste plus qu'à chercher avec RechDom le taux dont la date saisie est située entre DateDebut et Datefin et le tour est joué (finger in ze nose).
La requête s'écrit:
Code sql : 1
2
3
4
5
6
7
8SELECT TauxBCE.DateChangement AS DateDebut, TauxBCE.Taux, Nz(Min([TauxBCE_1].[DateChangement]) - 1, #12/31/2999#) AS DateFin FROM TauxBCE LEFT JOIN TauxBCE AS TauxBCE_1 ON TauxBCE_1.DateChangement > TauxBCE.DateChangement GROUP BY TauxBCE.DateChangement, TauxBCE.Taux;
Seulement à cause de l'inégalité dans la jointure, la requête n'est pas interprétable dans le QBE d'Access
Bien essayé Fabienle 05/07/2012 à 20:01 -
fsmrelExpert éminent séniorBonjour,
L’effort réalisé par Fabien montre que la construction du tableau R_tauxBCE n’est pas un exercice trivial ; combien de développeurs ont-ils dû transpirer dans l’exercice fastidieux consistant à simuler des intervalles de dates ? (Un peu comme du temps des premières versions des SGBD/R, quand on ne disposait pas du type DATE et qu'on simulait tant bien que mal ce type et ses fonctions...)
L’utilisation des périodes (et plus généralement des intervalles de toutes natures) n’est quand même pas rare.
Est-ce que MS Access (que je ne connais pas très bien) propose un quelconque type INTERVALLE ? Dans la négative, permet-il aux laborieux utilisateurs que nous sommes de définir récursivement leurs propres types (avec les opérateurs qui vont bien) ? Par exemple avec MS SQL Server, c’est niet !
Si cela était possible, en SQL natif, on pourrait coder :Code SQL : 1
2
3
4
5
6CREATE TABLE R_tauxBCE ( Periode INTERVAL_DATE NOT NULL , Taux DECIMAL(5,3) NOT NULL , PRIMARY KEY (Periode) ) ;
Où Periode est du type INTERVAL_DATE (type d’intervalle dont j’ai touché un mot ici).
Connaître le taux au 1er avril 2010 devient évidemment quelque chose de simple, but manifestement recherché par Fabien :Code SQL : 1
2
3SELECT Taux FROM R_tauxBCE WHERE '2010-04-01' BETWEEN BEGIN(Periode) AND END(Periode) ;
Tiens les Anglais n’y mettent qu’un doigt !
Vu l'utilisation de la lettre "z", ne s'agirait-il pas plutôt des Américains, friands de cette lettre ?le 06/07/2012 à 16:16 -
f-lebResponsable Arduino et Systèmes Embarqués
yé nez pas changééé
touiours lé même SGBéDéééé
mé toua non plou, tou n'a pas changéééé
...
refrain:...
le 13/07/2012 à 13:58 -
f-lebResponsable Arduino et Systèmes Embarqués
Claude,
très bien illustré, mais surtout très pédagogique le 02/07/2012 à 22:20 -
Richard_35Expert confirméBonjour Claude et Fabien,
Content de te "revoir", Claude (Fabien aussi, bien entendu).
Bravopour ce tuto à la portée des non-VBA-istes. le 04/07/2012 à 10:08 -
ClaudeLELOUPRédacteur/ModérateurRichard et Fabien,
Content de vous saluer.
Moins souvent ici que là-bas.
Si le cœur vous en dit, il y a du boulot !le 04/07/2012 à 11:14 -
Salut Claude
Excellent, avec de nombreux exemples d'utilisation des fonctions de domaines
Philippele 05/07/2012 à 6:50 -
ClaudeLELOUPRédacteur/ModérateurBonjour Philippe,
Les tutoriels, c'est toi qui m'a donné l'envie d'en rédiger... et pour les fonctions de domaine, le tien fait référence.
Bien à toi.le 05/07/2012 à 8:57 -
Domi2Expert éminent séniorBonjour Claude,
Moi qui ai toujours de la peine avec ces fonctions intégrées, je n'ai désormais plus beaucoup d'excuses.
Les exemples sont très bien choisis et surtout fort bien expliqués.
Bravo
Domi2le 05/07/2012 à 9:20 -
ClaudeLELOUPRédacteur/ModérateurSalut Fabien,finger in ze nose
Peut-être que tu n’arrives pas à la fin, mais nom d’une pipe quelle performance dans la première partie !
le 06/07/2012 à 7:51