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 :

Création d'un Rang sur une date


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2020
    Messages : 26
    Points : 23
    Points
    23
    Par défaut Création d'un Rang sur une date
    Bonjour,
    Dans une requete Access j'ai besoin d'obtenir le rang de chaque ligne selon la date et cela groupé selon la pièce.
    Exemple de résultat souhaité :

    Table : commandes_selectionnées2

    Article Date livraison Rang
    Pièce1 03/06/2022 3
    Pièce1 23/05/2022 2
    Pièce1 10/05/2022 1
    Pièce3 09/06/2022 2
    Pièce3 29/05/2022 1
    Pièce3 11/06/2022 3

    J'ai essayé plusieurs solutions dont :

    Rang: DCount("*","[commandes_selectionnées2]","[Date livraison]>" & [Date livraison]+1),
    Mais le rang est constamment à 3.

    Rang:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (SELECT (SELECT Count([Date livraison]) FROM [commandes_selectionnées2] AS T2
    WHERE T2.[Date livraison] >T1.[Date livraison]+1 AS Rang)
    FROM [commandes_selectionnées2] AS T1
    ORDER BY T1.[Date livraison] DESC)

    Mais on me renvoie ''Erreur de syntaxe ...''

    Auriez-vous une idée pour résoudre ce problème de rang ?

    Merci beaucoup ;-)

    Menez

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Si j'ai bien compris, je ferai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DCount("*","[commandes_selectionnées2]","[Date livraison]<=#" & format([Date livraison], "yyyy-mm-dd") & "# and [Article]=" & [Article])
    Ça va compter les enregistrements pour chaque pièce dans l'ordre des dates de livraison.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2020
    Messages : 26
    Points : 23
    Points
    23
    Par défaut
    Bonjour Marot,
    Oui c'est bien cela ! J'ai eu une erreur avec ton code mais tu as raison c'est bien le format ''Date'' qui fait bugger. Cela a marché en multipliant simplement la date par 1 comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DCount("*","[commandes_selectionnées2]","[Date livraison]*1>" & [Date livraison]*1+1)
    Par contre saurais-tu comment 'grouper' les articles et avoir un rang pour chaque article comme ci-dessous ?

    Article Date livraison Rang
    Pièce1 03/06/2022 3
    Pièce1 23/05/2022 2
    Pièce1 10/05/2022 1
    Pièce3 09/06/2022 2
    Pièce3 29/05/2022 1
    Pièce3 11/06/2022 3
    Pièce3 17/06/2022 4
    Pièce9 13/04/2022 1
    Pièce9 18/06/2022 2

    (Chaque pièce dispose de son propre rang)

    Merci

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Bizarre que tu doives faire une multiplication sur un champ de type date. Idéalement on essaye de garder le type des données.
    Est-ce que tu as des Null dans tes valeurs ?

    Bon pour ta question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DCount("*","[commandes_selectionnées2]","[Date livraison]*1>" & [Date livraison]*1+1 & " and [Article]=" & [Article])
    Devrait faire cela.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2020
    Messages : 26
    Points : 23
    Points
    23
    Par défaut
    C'est vrai mais multiplier la date par 1 me donne un nombre de jours, je pense que c'est finalement aussi fiable que d'utiliser le format date.

    Par contre la requête pour avoir les rangs dissociés indique #Erreur, sais-tu d'ou cela peut venir ?

    Merci en tout cas

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    est-ce que les dates sont toutes renseignées ?
    sinon, avec une sous-requête, cela fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT T1.Article, (SELECT Count([date livraison])+1
      FROM 
     (SELECT Distinct [date livraison],Article FROM commandes_selectionnées2) T2 
      WHERE T2.[date livraison]<T1.[date livraison] and T2.article = T1.article) AS Rang, T1.[Date livraison]
    FROM commandes_selectionnées2 AS T1
    ORDER BY T1.Article, T1.[Date livraison];
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2020
    Messages : 26
    Points : 23
    Points
    23
    Par défaut
    Merci beaucoup tee_grandbois ça marche parfaitement !
    Le résultat est parfait c'est exactement ce que je recherchais, en plus j'ai compris la requête

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    Le résultat est parfait c'est exactement ce que je recherchais, en plus j'ai compris la requête
    super ! dans ce cas, n'oublie pas de fermer la discussion à l'aide du bouton
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2020
    Messages : 26
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    bonjour,

    super ! dans ce cas, n'oublie pas de fermer la discussion à l'aide du bouton
    Bonjour Tee Grandbois,
    Par hasard saurais-t comment différencier les rangs s'ils ont une date identique ?
    Nom : zs.PNG
Affichages : 73
Taille : 7,5 Ko
    Comme ici on peut voir qu'un même article peut avoir un rang identique car la date est la même, l'idée serait d'avoir un rang différent et ce même si les dates sont identiques. Exemple : Nom : zj.PNG
Affichages : 70
Taille : 8,9 Ko
    Merci

  10. #10
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    il faut donc regrouper par article, trier par date et par numéro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT T1.Article, (SELECT Count([Article])+1
      FROM 
     (SELECT Distinct  Article, N° FROM commandes_selectionnées2) T2 
      WHERE T2.article = T1.article and T2.N°<T1.N°) AS Rang, T1.[Date livraison], T1.N°
    FROM commandes_selectionnées2 AS T1
    ORDER BY T1.Article, T1.[Date livraison], T1.N°;
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2020
    Messages : 26
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    bonjour,
    il faut donc regrouper par article, trier par date et par numéro:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT T1.Article, (SELECT Count([Article])+1
      FROM 
     (SELECT Distinct  Article, N° FROM commandes_selectionnées2) T2 
      WHERE T2.article = T1.article and T2.N°<T1.N°) AS Rang, T1.[Date livraison], T1.N°
    FROM commandes_selectionnées2 AS T1
    ORDER BY T1.Article, T1.[Date livraison], T1.N°;
    Merci granbois,
    Cela m'indique que la requête est trop complexe, je crois comprendre avec ta requête qu'il faut que j'insère un numéro automatique afin de différencier les lignes identiques dans "commandes_selectionnées2". Cependant cela n'est pas possible car "commandes_selectionnées2" est une requête, de plus cette même requête est liée à la table "commandes" qui est une table attachée excel (non-modifiable)...
    J'ai eu une petite idée dans le style 'Bricolage' ... Il s'agit de faire ( [Date livraison]*1 + [N°OF]/800 ) afin de créer un nombre toujours différent, exemple :

    Nom : zz.PNG
Affichages : 61
Taille : 25,1 Ko

    J'ai fait une requête afin de pouvoir disposer du champ ''Num'' dans la reqûete de rang, cependant on m'indique : ''Type de données incompatibles dans l'expression du critère'', je m'y replonge demain.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    SELECT T1.[Désignation article], T1.Num, (SELECT Count([Num])+1
    FROM 
    (SELECT [Num], [Désignation article] FROM PDP2) T2 
    WHERE T2.[Num]<T1.[Num] and T2.[Désignation article] = T1.[Désignation article]) AS Rang, T1.Date, T1.[El#Planif#1]
    FROM PDP2 AS T1
    WHERE (((T1.Num)<>IsNull("Num")))
    ORDER BY T1.[Désignation article], T1.Num;

  12. #12
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonsoir,
    je crois comprendre avec ta requête qu'il faut que j'insère un numéro automatique afin de différencier les lignes identiques dans "commandes_selectionnées2".
    du tout… N° c'est juste un exemple … dans ton cas, comme tu utilises un fichier Excel et que tu n'as pas d'identifiant unique, tu peux utiliser le champ nommé [El#Planif#1] (??? ), c'est juste pour distinguer les doublons pour une même date, sauf si, bien sûr, ce champ n'est pas unique pour cette date.
    Cela m'indique que la requête est trop complexe
    alors, je te conseille de créer une table temporaire à partir de ta requête, cela aura l'avantage de bien nommer tes champs (pas de caractères spéciaux et pas d'espaces dans les noms) et éviter le message "requête trop complexe"

    ''Type de données incompatibles dans l'expression du critère''
    normal avec une comparaison absurde comme celle-ci: WHERE (((T1.Num)<>IsNull("Num"))) "Num" entre guillemets, c'est une constante de type texte comparée à une variable de type numérique (T1.Num) et je ne vois pas ce que tu cherches à faire avec cette clause WHERE
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de flitre sur une date pour la création d'un recordset
    Par psykodumarteau dans le forum VBA Access
    Réponses: 2
    Dernier message: 03/09/2008, 08h11
  2. requette sur une date
    Par AlphonseBrown dans le forum Langage SQL
    Réponses: 13
    Dernier message: 04/04/2005, 12h41
  3. Travailler sur une date
    Par HqX dans le forum Langage SQL
    Réponses: 11
    Dernier message: 05/10/2004, 15h54
  4. Problème lors d'un Update sur une date
    Par Nany dans le forum ASP
    Réponses: 3
    Dernier message: 19/05/2004, 22h37
  5. [SQL] Conditions sur une date dans une requete
    Par poufouille dans le forum Bases de données
    Réponses: 4
    Dernier message: 17/03/2004, 14h25

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