IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

[Access 2007 ou 2010] Rechercher une valeur dans une table sur base d'une date


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    amateur
    Inscrit en
    Janvier 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Janvier 2015
    Messages : 43
    Par défaut [Access 2007 ou 2010] Rechercher une valeur dans une table sur base d'une date
    Bonjour,
    C'est mon premier post sur ce forum, alors soyez indulgent si la forme n'est pas parfaite.
    Je suis utilisateur d'Access depuis 1997, et j'ai déjà réalisé des bases de données pour plusieurs types d'application (facturation, fichiers clients, stocks, etc)
    J'ai une connaissance plus que basique de VBA, mais je peux passer des heures à chercher des solutions, comme dans le cas que je vous soumets aujourd'hui.

    J'ai joint en annexe un exemple de fichier simple. Voilà ce que je ne parviens pas à faire:
    partant d'un exemple fictif de fabrication de plats préparés, je souhaiterais pouvoir indiquer la date où j'entame un nouveau lot de tel composant, partant du principe que j'applique le principe du FIFO (first-in first-out), et donc que je n'ai jamais d'utilisation de composants d'un lot plus récent alors qu'il me reste des lots plus vieux (en théorie, parce qu'en pratique, il se pourrait qu'un jour deux lots d'un même composant soient encore utilisés en même temps, mais peu importe, je commencerais par faire simple). Tous mes composants sortis doivent se retrouver sur une note mensuelle avec leurs numéros de lots par date de fabrication.
    Comme les mentions des changements de lots en cuisine sont faits à la main, je voudrais ne pas devoir changer chaque lot de la table T_Lots en temps réel, mais pouvoir, lors de l'impression des fiches de fabrication fin de mois par exemple, pouvoir sortir une liste des fabrications avec tous les lots des composants. Je recopie mes fiches manuelles une fois par mois dans la table T_Lots.

    Ce que je souhaite donc, c'est que dans ma table T_Fabrications, lorsque j'encode mensuellement mes fabrications du mois sur base de la date, et que je choisis un composant, le n° de lot de ce composant soit directement extrait de la table T_Lots en fonction de la date de 1ère utilisation (donc la veille c'était le lot avant, etc).

    Je maîtrise la fonction DLOOKUP pour rechercher des données dans une autre table, mais ici, je n'ai trouvé qu'un exemple de code VBA pour Excel qui va me chercher la donnée d'un champ en fonction de la date.

    D'avance un grand merci pour vos conseils de pros.
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bonjour et bienvenue chez nous,

    Je n'ai pas tout compris et je n'ai pas pu regarder ta pièce jointe (j'utilise Access2000), mais jette un coup d'œil ici : http://claudeleloup.developpez.com/t...plic-ploc/#LXI, c'est peut-être une piste.

  3. #3
    Membre averti
    Homme Profil pro
    amateur
    Inscrit en
    Janvier 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Janvier 2015
    Messages : 43
    Par défaut
    bonjour
    merci pour le lien, intéressant , notamment pour la partie envoi par mail, mais ce n'est pas vraiment ce que je cherche
    sans ouvrir la db exemple, difficile de comprendre mon (petit) souci
    salutations

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour


    Si j'ai bien compris (pas sûr) tu veux récupérer le dernier lot de ce composant ?
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT T_Lots.idlot FROM T_Lots
    WHERE (((T_Lots.[Date début utilisation]) In (SELECT Max(T_Lots.[Date début utilisation]) AS [MaxDeDate début utilisation] FROM T_Lots GROUP BY T_Lots.Composant HAVING (T_Lots.Composant=2))));

    =2 à remplacer par la valeur du formulaire de saisie

    Si ce n'est pas le dernier, peux-tu repréciser le contexte et ce que tu veux obtenir en partant de ton exemple.

  5. #5
    Membre averti
    Homme Profil pro
    amateur
    Inscrit en
    Janvier 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Janvier 2015
    Messages : 43
    Par défaut
    Bonsoir,
    merci de vous intéresser à mon soucis
    je me rends compte que j'ai oublié en créant le formulaire d'utiliser la même structure que la table T_Fabrications (liste de choix pour les composants), donc je reposte la db adaptée (v2)

    à titre d'exemple, je crée un premier enregistrement dans le formulaire F_Fabrications:
    date: 7/1/2015,
    et ensuite, si je choisis le composant C1, je veux que la valeur LA1-a se crée dans le champ Lot quand je quitte le champ composant
    si je choisis le composant C2, je veux que la valeur LA2-b se crée dans le champ Lot

    dans la db que j'utilise présentement pour un autre usage, c'est sur AfterUpdate que la procédure DLookUp va rechercher les valeurs
    mais ici.....????
    Fichiers attachés Fichiers attachés

  6. #6
    Membre averti
    Homme Profil pro
    amateur
    Inscrit en
    Janvier 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Janvier 2015
    Messages : 43
    Par défaut
    lot-date v2.zip autant pour moi, voilà la db au format zip

  7. #7
    Membre averti
    Homme Profil pro
    amateur
    Inscrit en
    Janvier 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Janvier 2015
    Messages : 43
    Par défaut
    Citation Envoyé par 78chris Voir le message
    Si j'ai bien compris (pas sûr) tu veux récupérer le dernier lot de ce composant ?
    Bonsoir,
    non je veux récupérer le lot qui était utilisé à la date choisie
    le fichier attaché est mis à jour afin de pouvoir tester des exemples (voir post plus haut)

  8. #8
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    La requête
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT TOP 1 T_Lots.IDLot
    FROM T_Lots
    WHERE (((T_Lots.[Date début utilisation])<=[Formulaires]![F_Fabrications]![Date fabrication]) AND ((T_Lots.Composant)=[Formulaires]![F_Fabrications]![Composant]))
    ORDER BY T_Lots.[Date début utilisation] DESC;

    doit fonctionner.

    Après il faut programmer le formulaire pour que cela se mette à joue lors de la mise à jour des champs Composant et date...

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/06/2010, 02h39
  2. Réponses: 1
    Dernier message: 17/04/2009, 15h44
  3. Réponses: 2
    Dernier message: 05/03/2008, 22h01
  4. problem avec la recherche d'une valeur dans les table
    Par anilane dans le forum Bases de données
    Réponses: 6
    Dernier message: 25/05/2007, 19h35
  5. [JSTL] Récupérer une valeur dans ma map à l'aide d'une clé
    Par Sim dans le forum Taglibs
    Réponses: 1
    Dernier message: 29/08/2006, 10h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo