Comment rechercher une valeur dans une table qui contient des paliers
Par Claude Leloup

Le , par ClaudeLELOUP

15PARTAGES

10  0 
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à.

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de f-leb
Rédacteur/Modérateur https://www.developpez.com
Le 05/07/2012 à 20:01
re 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 : Sélectionner tout
1
2
3
4
5
6
7
8
SELECT 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é Fabien
2  0 
Avatar de fsmrel
Expert éminent sénior https://www.developpez.com
Le 06/07/2012 à 16:16
Bonjour,

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 : Sélectionner tout
1
2
3
4
5
6
CREATE 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 : Sélectionner tout
1
2
3
SELECT 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 ?
2  0 
Avatar de f-leb
Rédacteur/Modérateur https://www.developpez.com
Le 13/07/2012 à 13:58


yé nez pas changééé
touiours lé même SGBéDéééé

mé toua non plou, tou n'a pas changéééé
...

refrain:...

1  0 
Avatar de f-leb
Rédacteur/Modérateur https://www.developpez.com
Le 02/07/2012 à 22:20
Claude,

très bien illustré, mais surtout très pédagogique
0  0 
Avatar de Richard_35
Expert confirmé https://www.developpez.com
Le 04/07/2012 à 10:08
Bonjour Claude et Fabien,

Content de te "revoir", Claude (Fabien aussi, bien entendu ).

Bravo pour ce tuto à la portée des non-VBA-istes.
0  0 
Avatar de ClaudeLELOUP
Rédacteur/Modérateur https://www.developpez.com
Le 04/07/2012 à 11:14
Richard et Fabien,

Content de vous saluer.

Moins souvent ici que là-bas.

Si le cœur vous en dit, il y a du boulot !
0  0 
Avatar de
https://www.developpez.com
Le 05/07/2012 à 6:50
Salut Claude

Excellent, avec de nombreux exemples d'utilisation des fonctions de domaines

Philippe
0  0 
Avatar de ClaudeLELOUP
Rédacteur/Modérateur https://www.developpez.com
Le 05/07/2012 à 8:57
Bonjour 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.
0  0 
Avatar de Domi2
Rédacteur/Modérateur https://www.developpez.com
Le 05/07/2012 à 9:20
Bonjour 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

Domi2
0  0 
Avatar de ClaudeLELOUP
Rédacteur/Modérateur https://www.developpez.com
Le 06/07/2012 à 7:51
Salut Fabien,

finger in ze nose
Tiens les Anglais n’y mettent qu’un doigt ! (À vérifier.)

Peut-être que tu n’arrives pas à la fin, mais nom d’une pipe quelle performance dans la première partie !
0  0 
Responsables bénévoles de la rubrique Access : Pierre Fauconnier - Arkham46 -

Partenaire : Hébergement Web