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 :

Tris incorrects sur enchainement de plusieurs requêtes enchainées


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Tris incorrects sur enchainement de plusieurs requêtes enchainées
    Bonjour, c'est ma 1ere question sur ce site.

    Pour faire des classements a partir des données d'une Base
    j'enchaine plusieurs requêtes :
    1 une sélection => table 1 (bien moins lourde que la base)
    2 un premier tri => table 2
    3 une exécution de code sur cette table 2 triée qui met a jour 2 champs 'classement
    4 un 2eme tri => table 3
    5 autre exécution de code etc....
    au total donc 11 actions s'enchainent.

    Lorsque j’exécute une à une chaque action tout se passe bien.
    mais lorsque j'enchaine toutes ces actions en une procédure
    il y a souvent sur 5 tris, 1 qui fonctionne mal, comme si l’exécution d'une requête commençait alors que la précédente n'est pas finie
    j'ai essayé de ralentir avec des requêtes 'suppression de table'
    des 'Doevents....
    pour l'instant, rien n'y fait.
    Je suis sûr que mon problème est 'tout bête',
    Pourriez vous me donner des pistes de vérifications ?
    une requête 'neutre' intermédiaire ?
    des requêtes 'perte de temps' ?

    Merci

  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 et bienvenu.

    En fait ton problème vient du fait qu'une table n'est jamais triées. Elle peut être affichée dans un certain ordre mais c'est cela : de l'affichage.
    Une table est mathématiquement un ensemble et il n'y a pas de notion d'ordre sur les ensembles.

    La seule méthode pour garantir l'ordre de tes données est d'utiliser une requête dans laquelle tu spécifies le tri voulu.

    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
    Nouveau Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Alors je me suis mal exprimé,
    j'ai évidemment fait des requêtes pour créer ces tables, du type :

    SELECT * INTO table_2
    FROM table_1
    ORDER BY table_1.champs1 DESC , table_1.champs2 DESC;

    Normalement cela trie la table crée, forcément !

  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.

    Au risque de me répéter :

    En fait ton problème vient du fait qu'une table n'est jamais triées.
    Oui je sais c'est frustrant mais c'est mathématique, désolé :-(.

    Il faut faire une requête triée au moment de la lecture.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select [table_2].* form table_2
    order by  [table_2].[champs1 DESC] , [table_2].[champs2 DESC]
    L'impact sur la performance est minime et tu es certain d'avoir les données dans l'ordre qui te convient, sinon tu l'as dans l'ordre qui convient à la base de données au moment où elle exécute ton instruction.

    En passant pour les noms internes il est recommandé de se limiter aux lettres majuscules et minuscules, au chiffres et au souligné (_). Bien que Access les acceptes, ne pas utiliser les lettres accentuées ou "décorées" (pas de "ç"), ni l'espace ( ), ni le tiret (-) ni les caractères exotiques comme le #. Ils sont source de bugs sournois et difficile a détecter.

    Et aussi donner des noms significatifs (qiu donne une indication sur le contenu de l'objet) dans le contexte.

    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
    Nouveau Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    vous voulez dire que je dois mettre le select avec order dans une requête de tri dans le code vba
    et non en requete access ?

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Un peu de ne pas avoir de réponse à ma dernière question.
    ( Bien évidemment j'applique les règles de base de programmations (noms de champs explicites, pas de caractères complexes...),
    je reprécise que tout fonctionne a merveille quand j'enchaine mes requêtes une a une !
    et que donc mes tables créées après tris sont bien lues dans l'ordre par le code vba pour des MAJ de champs d'ordre,
    et pour moi, mon problème est bien l'enchainement rapide par une macro).
    Je veux bien essayer autrement mais alors
    merci de m'indiquer comment m'y prendre si je dois mettre les requêtes tri dans le code VBA.
    cdt

  7. #7
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 263
    Points
    34 263
    Par défaut
    Salut,

    la notion de rapidite de requete n'a absolument rien a voir malheureusement.

    Dans l'ideal, avant de te faire passer par du code, serait-il possible de voir la macro Access que tu executais et le visuel final ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

Discussions similaires

  1. [XL-2010] Tri incorrect sur 2 colonnes
    Par Poussemousse dans le forum Excel
    Réponses: 4
    Dernier message: 10/02/2015, 09h44
  2. [AJAX] Enchainer plusieurs requêtes avec Ajax
    Par Bobtop dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/08/2006, 08h13
  3. Réponses: 11
    Dernier message: 17/05/2006, 10h48
  4. Enchainement de plusieurs FORM avec Jvs -> bug
    Par Invité dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 17/04/2006, 20h46
  5. Tri alphabétique sur plusieurs champs
    Par lamoufle dans le forum Requêtes
    Réponses: 8
    Dernier message: 04/12/2005, 04h26

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