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 :

Requête union d'une requête union : Access modifie le type des données [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Homme Profil pro
    Administrateur (improvisé) de base de données
    Inscrit en
    Décembre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur (improvisé) de base de données
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2014
    Messages : 102
    Points : 72
    Points
    72
    Par défaut Requête union d'une requête union : Access modifie le type des données
    Bonjour à tous.

    Je dois combiner des informations venant de trois tables différentes et j'utilise pour cela deux requêtes union successives.

    Pour simplifier, mes données peuvent être numérotées par : préfixeA ou préfixeA + suffixe ou préfixe B + suffixe. Elle doivent être donc réparties en trois tables car elles nécessitent d'être saisies dans des formulaires différents (A et B) incluant des sous-formulaires (les suffixes). Mes trois tables ont donc :

    Première table : un champ "prefixeA", un champ "prefixeB" (inutilisé) et un champ "suffixe" (inutilisé)
    Seconde table : un champ "prefixeA", un champ "prefixeB" (inutilisé) et un champ "suffixe"
    Troisième table : un champ "prefixeA" (inutilisé), un champ "prefixeB" et un champ "suffixe"
    Ces trois champs sont tous présents dans les tables, même inutilisés, pour permettre les requêtes union. Ils tous de type numérique, ce qui fait que, par exemple, "143" est avant "1043".

    Mon petit dessin sera peut-être plus clair :
    (Il y a une 4e table "tab_groupe" qui n'a pas d'incidence sur le problème)

    Nom : structures requêtes.jpg
Affichages : 304
Taille : 90,2 Ko

    Mon problème concerne le tri des données : il faut à chaque étage que les trois champs restent de type numérique, sinon "1043" se retrouverait avant "143"...
    Je me suis rendu compte que ça marchait nickel (c'est-à-dire que les trois champs sont triés par type numérique) dans toutes les requêtes SAUF dans la dernière : la requête union "préfixeApréfixeBsuffixe"; l'ultime, mon saint Graal. Ici, les trois champs semblent avoir été transformés en type texte puisqu'il me classe "1043" avant "143" . Détail parlant : les données de ces trois champs sont toujours alignées à droite dans les premières requêtes (comme des nombres), mais deviennent alignées à gauche dans la dernière (comme des textes).

    Mais POURQUOIIIIIII ?
    Peut-être que c'est dû au fait que ce soit une requête union qui prend sa source dans une requête union, et que le type de données s'en trouve perdu et mis par défaut sur texte ? Quelqu'un saurait-il résoudre ça ?

    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.

    Est-ce que tu as des nuls dans tes données ?

    Les nuls transforment parfois le type du champ à "Variant" et Access a tendance à les traiter comme des textes.

    La seule méthode de contournement que je vois est un truc du type

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    iif(not isnull([TaRequete].[TonChamp]); val([TonChamp]); 0)

    Dans une nouvelle requête basée sur ta dernière requête UNION.

    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 régulier
    Homme Profil pro
    Administrateur (improvisé) de base de données
    Inscrit en
    Décembre 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur (improvisé) de base de données
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Décembre 2014
    Messages : 102
    Points : 72
    Points
    72
    Par défaut
    Par la force des choses, j'ai beaucoup de Null puisque chaque table a des champs inutilisés mais nécessaires pour pouvoir regrouper les tables dans les requêtes union.

    Je pense donc que tu as mis le doigt sur le problème !

    J'ai fais ta petite bidouille, le problème a disparu : dans cette nouvelle requête basée sur la dernière requête union, les champs sont bien redevenus de type numérique.

    Merci !

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/07/2012, 23h09
  2. Réponses: 6
    Dernier message: 31/05/2010, 14h12
  3. [MySQL] Problème boutons générés par une requête éxécutant chacun une requête
    Par terminathan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/12/2009, 16h48
  4. Réponses: 1
    Dernier message: 05/11/2008, 12h04
  5. [SQL] Construction d'une requête à partir d'une requête
    Par Pgs dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 15/09/2007, 15h24

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