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

Requêtes et SQL. Discussion :

comment selectionner les trois dernier factures


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Homme Profil pro
    administrateur
    Inscrit en
    Juin 2020
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Algérie

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Juin 2020
    Messages : 37
    Par défaut comment selectionner les trois dernier factures
    Bonsoir,
    Peut-être je trouverai la solution chez vous.

    C’est jute un exemple pour simplifier et bien exposer le cas, c’est un modèle basic d’une application de facturation, ce n’est pas le travail escompté.
    Le premier client ABDI HAMID ;
    La facture du 04/01/2025.
    Je voudrai ajouter à sa facture du 04/01/2025, les deux factures d’avant, les quantités et les dates uniquement des mêmes produits du 04/01/2025.
    Honnêtement je n’arrive pas à résoudre le cas.

    Voici le lien de mon travail :
    https://drop.infini.fr/r/w55y3S903J#...WZGUhKde/IGTI=

    Voici un exemple de la facture :
    https://drop.infini.fr/r/xVCrXseBL9#...5ZO4o2K9UGwEA=

    Merci d’avance

  2. #2
    Membre très actif Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 940
    Par défaut
    Bonjour,
    Voir les requêtes QueryX et QueryY
    https://1drv.ms/u/c/9eb5cd27a6a03343...vxoRg?e=XlDnuH
    Bon DEV
    .

  3. #3
    Membre averti
    Homme Profil pro
    administrateur
    Inscrit en
    Juin 2020
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Algérie

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Juin 2020
    Messages : 37
    Par défaut comment selectionner les trois dernières factures
    bonjour,
    Merci pour votre aide et pour l'idée, hélas je n'arrive pas à créer l'état voulu.
    j'ai créé un état (E_QueryY) à partir de la requête (QueryY), le résultat obtenu ne répond au besoin. sûrement un truc m'échappe.
    vous pouvez voir svp.

    https://drop.infini.fr/r/79VL6zz7Ve#...ZQI45Inbt19vI=

    https://drop.infini.fr/r/xVCrXseBL9#...5ZO4o2K9UGwEA=

    merci pour votre aide

  4. #4
    Membre très actif Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 940
    Par défaut
    Bonjour,
    Voir cette version revue et corrigée
    https://1drv.ms/u/c/9eb5cd27a6a03343...P7Qxw?e=7449PC
    .

  5. #5
    Membre averti
    Homme Profil pro
    administrateur
    Inscrit en
    Juin 2020
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Algérie

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Juin 2020
    Messages : 37
    Par défaut bonjour
    Bonjour
    c'est pas ce que je cherche toujours,
    svp vous pouvez voir le fichier attaché:

    https://drop.infini.fr/r/xVCrXseBL9#...5ZO4o2K9UGwEA=

    c'est un exemple de la facture que je veux avoir.

    encore merci pour votre aide.

  6. #6
    Membre très actif Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 940
    Par défaut
    Bonjour,
    c'est pas ce que je cherche toujours
    Ce n'en est pas loin pourtant !
    Qu'est ce qui pourrait manquer en soit par rapport aux attendus ?
    Bon DEV
    .

  7. #7
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 562
    Par défaut
    Bonjour,
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SQL="Select top 3 facture.* From facture order by facture.id desc"

  8. #8
    Membre averti
    Homme Profil pro
    administrateur
    Inscrit en
    Juin 2020
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Algérie

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Juin 2020
    Messages : 37
    Par défaut bonjour
    Bonjour,
    Je cherche à avoir chaque produit avec ses quantités par dates et sur la même ligne pour les trois dernières factures. Comme dans cet exemple.

    Je crois que ça marchera bien avec du SQL, (hélas je n’ai pas un niveau avancé en sql pour le faire moi-même). J’arrive pas à générer à partir de la requête qui existe déjà ( R_Globale) une nouvelle requête qui comportera des nouvelles colonnes qui renvoient , pour chaque produit, la date et la quantité :

    • Première colonne : le produit (Désignation) ;
    • Deuxième colonne : la quantité sur la dernière facture,
    (Pour la date c’est la date du système qui va figurer dans l’entête de la facture, pas besoin de la date) ;

    • Troisième colonne : la date de l’avant dernière facture ou le même produit existe ;
    • Quatrième colonne : la quantité ;

    • Cinquième colonne : la date de l’avant avant dernière facture ou le même produit existe ;
    • 6° colonne : la quantité.

    https://drop.infini.fr/r/szDEuHpQ2f#...UV1m3n83/ftLc=

    https://drop.infini.fr/r/5hdkhbvpQt#...0G+dRR+Wab1Uc=

    Je vous remercie.

  9. #9
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 562
    Par défaut
    Désolé mais je ne vais pas télécharger ton projet.
    En revanche si tu me fournir la requête que tu utilises actuellement je pourrais t'expliquer comment la modifier.

  10. #10
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 374
    Par défaut
    Bonjour,
    Il me semble que vous essayez des choses compliquées (et dont je ne saisis vraiment pas l'utilité) avant de résoudre des choses simples... mais pour vous permettre de progresser voici toujours quelque chose qui fait à peu près le travail.
    Cordialement.
    Fichiers attachés Fichiers attachés

  11. #11
    Membre averti
    Homme Profil pro
    administrateur
    Inscrit en
    Juin 2020
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Algérie

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Juin 2020
    Messages : 37
    Par défaut bonjour
    comment vous fournir la requête?

  12. #12
    Membre averti
    Homme Profil pro
    administrateur
    Inscrit en
    Juin 2020
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Algérie

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Juin 2020
    Messages : 37
    Par défaut EricDgn
    Je vais travailler sur ça.
    Merci

  13. #13
    Membre très actif Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 940
    Par défaut
    Bonjour,
    C'est presque ce que tu demandes
    Nom : 2025-02-05 12_16_40-Window.png
Affichages : 110
Taille : 12,6 Ko
    Voir la requête QueryZ
    https://1drv.ms/u/c/9eb5cd27a6a03343...CxuAQ?e=fXxNxa
    Bon DEV
    .

  14. #14
    Membre averti
    Homme Profil pro
    administrateur
    Inscrit en
    Juin 2020
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Algérie

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Juin 2020
    Messages : 37
    Par défaut Star
    Bonsoir,
    Merci beaucoup, je vais travailler sur ça et te tiendrai au courant.
    Merci

  15. #15
    Membre très actif Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 940
    Par défaut
    Bonjour,
    Je ne sais pas à quel stade tu en es rendu, ni d'ailleurs à savoir, si ton post reste toujours d'actualité.
    Pour l'heure, j'obtiens ce résultat :
    Pièce jointe 664274
    .
    Images attachées Images attachées  

  16. #16
    Membre averti
    Homme Profil pro
    administrateur
    Inscrit en
    Juin 2020
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Algérie

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Juin 2020
    Messages : 37
    Par défaut salut Star
    bonsoir,
    je crois que à 90% c'est ce que je cherche à avoir.
    je peux avoir la base?
    merci

  17. #17
    Membre très actif Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 940
    Par défaut
    Bonjour,
    Connais-tu cette citation de Confucius :
    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Te donner simplement la base ne serait pas la meilleure chose à faire si l'on veut véritablement t'aider.
    Par contre, en partant de ce que tu as déjà mis en place et de ta réflexion sur comment résoudre la problématique, on peut t'aider à avancer.
    Expose tes requêtes ici, comme te le proposait Thumb down, les uns et les autres pourront alors te suggérer des idées.
    Bon DEV
    .

  18. #18
    Membre averti
    Homme Profil pro
    administrateur
    Inscrit en
    Juin 2020
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Algérie

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Juin 2020
    Messages : 37
    Par défaut bonsoir
    Bonsoir,
    J’ai fini par :
    - Une requête (R_Avant_Dfacts) qui donne les factures d’avant la dernière facture, avec uniquement les Produits qui figurent sur la dernière facture.
    Sur cette requête, j’ai un control pour concaténer la date et la quantité pour chaque produit (Ant).
    - J’ai une fonction dans un module standard pour obtenir l’ensemble des (Ant) possible pour le même produit , Désignation.
    - Une requête (Ants) pour obtenir les résultats à partir du module.

    Hélas ça ne fonctionne pas. Par contre ça fonctionne bien quand je ne fais pas lire Le numéro du client et la date qui figurent sur le formulaire en charge par la requête.
    Une solution ???

    Public Function ConcatAnt(ByVal strDesignation As String) As String
    Dim db1 As DAO.Database, rs1 As DAO.Recordset
    Dim strSql As String, s1 As String
    Dim strQuery As String

    strQuery = "R_Avant_DFacts"
    Set db1 = CurrentDb
    strSql = "SELECT DISTINCT Ant FROM " & strQuery & " WHERE Designation ='" & strDesignation & "' ORDER BY Ant"
    Set rs1 = db1.OpenRecordset(strSql)
    If rs1.RecordCount = 0 Then GoTo Exit_0
    rs1.MoveLast
    rs1.MoveFirst
    s1 = ""
    While Not rs1.EOF
    If Nz(rs1!Ant) <> "" Then
    s1 = s1 & Nz(rs1!Ant) & ", "
    End If
    rs1.MoveNext
    Wend
    Exit_0:
    ConcatAnt = s1
    Exit Function

    End Function



    la requête (Ants)
    SELECT Designation, concatAnt([Designation]) AS Resultat
    FROM R_Avant_DFacts
    GROUP BY Designation, concatAnt([Designation]);

    la requête R_Avant_DFacts
    SELECT T_Clients.NClient, T_Factures.NFacture, T_Clients.Nom, T_Factures.Date, T_Det_Facts.Designation, T_Det_Facts.Quantite, (" ( " & [Date] & " - " & [Quantite] & " ) ") AS Ant
    FROM T_Produits INNER JOIN ((T_Clients INNER JOIN T_Factures ON T_Clients.NClient = T_Factures.NumClient) INNER JOIN (R_Prds_NFact INNER JOIN T_Det_Facts ON R_Prds_NFact.Designation = T_Det_Facts.Designation) ON T_Factures.NFacture = T_Det_Facts.NumFact) ON T_Produits.Produit = T_Det_Facts.Designation
    WHERE (((T_Clients.NClient)=[Formulaires]![F_Clients]![T_Factures sous-formulaire].[Formulaire]![NumClient]) AND ((T_Factures.Date)<[Formulaires]![F_Clients]![T_Factures sous-formulaire].[Formulaire]![Date]));

    voici le travail:
    https://drop.infini.fr/r/YBnUYkh93x#...S6V6EOvY1SMGo=

    merci

  19. #19
    Membre très actif Avatar de star
    Homme Profil pro
    .
    Inscrit en
    Février 2004
    Messages
    940
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Corée Du Nord

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Février 2004
    Messages : 940
    Par défaut
    Bonjour,

    Ton approche pourrait certainement aboutir sur quelque chose de fonctionnel avec quelques adaptations de tes requêtes malgré tout. Cependant, je dirais qu'il n'y a pas forcément besoin d'une fonction particulière, comme tu le proposes pour arriver à tes fins.

    Je vais essayer de te guider sur une autre manière d'y arriver :

    Il conviendrait d'avoir une première requête donnant la liste des produits correspondant à la dernière facture émise pour le client concerné, comme ci-dessous.

    Nom : 2025-02-18 20_14_38-Window.png
Affichages : 54
Taille : 15,8 Ko

    Ensuite, obtenir par ailleurs une liste des factures antérieurs à la dernière avec reprise de la date et du numéro de facture.

    Il convient en troisième phase du traitement de trier cette dernière liste de factures par ordre décroissant des dates en ne retenant que les deux premières suivant son rang dans l'ensemble des dates possibles.

    Il ne te restera alors plus que trois autres étapes à franchir sur 6...

    Je te laisse y réfléchir à ce stade et parvenir à résoudre les trois premières.

    Bon DEV
    .

  20. #20
    Membre averti
    Homme Profil pro
    administrateur
    Inscrit en
    Juin 2020
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Algérie

    Informations professionnelles :
    Activité : administrateur

    Informations forums :
    Inscription : Juin 2020
    Messages : 37
    Par défaut
    Bonjour ,
    Il se trouve que je me suis rendu compte qu’il faut travailler sur le Numéro du client et non pas sur les numéro des factures, il se peut que sur les deux dernières factures ne figurent pas les même produits sur la facture initiale.
    Aussi, il faut faire lire le numéro client, date… qui figurent sur le formulaire en charge par la requête pour automatiser l’action sur d’autres clients, factures…

    Pour rejoindre votre approche :
    - J’ai une requête (R_DFact) pour la facture du jour ;
    - Une autre requête (R_Avant_DFactS) pour les anciennes factures en fonction des produits (Designation) sur la facture du jour ;
    - Pour la troisième requête pour classer le contenu des anciennes factures, par date dans un ordre décroissant, c’est déjà fait sur la deuxième requête.

    Encore, je ne veux pas utiliser la fonction, je veux avoir uniquement des requêtes si c’est possible.

    Voici un lien pour le travail :

    https://drop.infini.fr/r/8FnsSCDGZc#...c8oox1ZUs3BiY=

    - Ouvre F_Client et la facture 12 ;
    - Ouvre les requêtes.
    Tu auras un bon VISU du problème.
    Encore merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [simpleXML] XML : comment recuperer les x derniers objets?
    Par mozvillat dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 07/07/2006, 15h10
  2. Réponses: 4
    Dernier message: 27/04/2006, 09h22
  3. Sélectionner les 10 derniers enregistrements
    Par pod1978 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/11/2005, 12h07
  4. Comment sélectionner les données non dupliquées
    Par Dnx dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/10/2005, 11h43
  5. TStringGrid: comment sélectionner les cellules à dessiner?
    Par OutOfRange dans le forum Composants VCL
    Réponses: 9
    Dernier message: 25/09/2005, 15h17

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