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 :

Remplacer des expressions en fonction des valeurs d'une autre colonne ?


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2017
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2017
    Messages : 104
    Par défaut Remplacer des expressions en fonction des valeurs d'une autre colonne ?
    Bonjour

    Tout d'abord, excusez moi si je n'ai pas bien placé le sujet et excusez moi pour le titre pas forcément clair.
    Ensuite, je suis sur Access 2007.
    J'ai, pour le probléme que je présente ici, deux tables

    Une 1ere s'appelle Liste_complete - elle est une liste de standards de Jazz - et posséde, entre autre, une colonne appellée Auteur. On y trouve souvent plusieurs auteurs (pour le meme titre) du genre : Little, Bonis / Harry, Julian / Corner, Bill

    Or, j'ai répertorié tous ces auteurs dans une table - appellé très judicieusement Auteurs - où ils ont donc une entrée chacun. Cette table posséde deux colonnes qui nous interessent. Nom ... et Pseudo, où sont affichés la même chose que la colonne Nom, sauf que j'y ai remplacé les espaces et les . et autre. Ainsi, un Nom genre Howard, Donaldson H. devient Howard_Donaldson_H
    A noter que chaque auteur aura un fichier html "personnalisé" . Le but est maintenant de créer les futurs liens html, dans la colonne Auteurs de la Liste_complete des standards

    Je voudrais donc me servir des valeurs de la colonne Nom de la table Auteurs (les noms "individuels" de chaque auteur) comme "occurrence de remplacement".

    Le but est donc de remplacer chaque nom de la table liste_complete par la formule suivante, qui, je l'espere et le pense, est juste :

    "<a href=""Auteurs\" & [Auteurs].[Pseudo] & ".html"" target=""_blank"">" & [Auteurs].[Nom] & "</a>"

    Je ne sais donc pas ordonner "remplace chaque terme que tu trouves qui est = à une valeur de la colonne Nom de la table Auteurs ... "

    Ainsi, au final, l'exemple plus haut donnerait

    <a href=""Little_Bonis.html" target=""_blank"">Little, Bonis</a> / <a href=""Harry_Julian.html" target=""_blank"">Harry, Julian</a> / <a href=""Corner_Bill.html" target=""_blank"">Corner, Bill</a>

    Je vous remercie de votre aide

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    si je comprends bien ton besoin, on partirait sur une requete simple du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT '<a href="Auteurs\' & [Auteurs].[Pseudo] & '.html" target="_blank">' & [Auteurs].[Nom] & '</a>'
    FROM Auteurs;
    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 :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    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

  3. #3
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2017
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2017
    Messages : 104
    Par défaut
    Merci, jean Philippe, de ta réponse

    Pourrais je avoir quelques précisions (EDIT en fait, ce serait bien de me donner les étapes une par une)

    Je ne connais pas du tout ce language avec SELECT et FROM

    1 Où, précisément, dois je mettre ce code, sachant donc que je veux modifier la colonne Auteur de la table Liste_complete ?
    2 La premiere ligne, je la comprends puisque c'est è peu prés mon code (avec des " en moins), mais, pour la seconde (FROM) , s'agit il du fameux "se servir des valeurs de la colonne Nom de la table Auteurs pour définir les valeurs à remplacer" ? mais alors ne devrait il pas y avoir le nom de la table ET de la colonne ? genre Auteurs.Nom ?

    J'espere être clair

    EDIT (essai de résumé)
    Dans la table Liste_complete champs Auteur, il y a des données avec un ou plusieurs auteurs. Dans une autre table (Auteurs) champs Nom, il y a chacun de ses auteurs, un par un. Les noms sont évidemment tous "uniformisés" (Nom, prenom) entre les deux tables
    Je veux modifier le champs Auteur de la 1ere table pour que, en allant "puiser" les données de la 2eme où il y a chacun des auteurs, il remplace chaque auteur, grâce au code cité dans mon premier message, par des données html
    Exemple : Dans le champs Auteur de la table Liste_complete, nous avons par exemple Brown, Denis / Bonte, Marcel ->(doit devenir, en gros) <a href="Auteurs/Brown_Denis.html">Brown, Denis</a> / <a href="Auteurs/Bonte_Marcel.html">Bonte, Marcel</a>, car dans la table Auteurs, à Nom, il y a les 2 entrées Brown, Denis et Bonte, Marcel.

  4. #4
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2017
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2017
    Messages : 104
    Par défaut
    N'ayant toujours pas la reponse souhaitée, ne m'en sortant pas avec les tuto, je relance le sujet en essayant d'être plus concis..

    J'ai une table-liste de morceaux de jazz - appelée Liste_complete - avec, entre autre, une colonne Auteurs qui, parfois, contient plusieurs auteurs. Or il existe justement une seconde table ( Auteurs) qui repertorie ces auteurs. Il y a donc la colonne Nom dans laquelle chaque auteur aura son enregistrement.

    J'ai besoin qu'on m'explique comment remplacer le nom de chaque auteur de la colonne Auteurs de la table Liste_complete par une formule precise (ça, je l'ai, voir + bas), mais j'ai besoin pour cela que la requête aille chercher dans la colonne Nom de la table Auteurs les "occurrences à remplacer"

    la formule en question est la suivante
    "<a href=""Auteurs\" & [Auteurs].[Pseudo] & ".html"" target=""_blank"">" & [Auteurs].[Nom] & "</a>"


    Ainsi , par exemple, il y a, dans Liste_complete, la table N°1, un morceau nommé Blue Jacket , qui a, dans la colonne Auteurs les données suivantes : Daniel, Jack / Hugues, Robert
    Puisque la table Auteurs, de son côté, contient les deux données Daniel, jack ET Hugues, Robert, ben, Daniel, Jack / Hugues, Robert doit être remplacé par

    <a href="Auteurs\Daniel_jack.html" target="_blank">Daniel, Jack</a> / <a href="Auteurs\Hugues_robert.html" target="_blank">Hugues, Robert</a>

    Voila ... je crois savoir que pour tout utilisateur non novice, c'est une requête trés simple, mais, svp, indiquez moi où je dois l'effectuer et comment.

    Merci de tout coeur

  5. #5
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Pour répondre à quelques unes de tes questions posées à Jean-Philippe
    1- Le code proposé est une requête. On crée une requête de la même manière que tu crée une table. Menu créer -> Requête. Tu feras donc un clic droit sur la requête créée et tu choisiras le mode Sql, puis tu ajouteras le code que t'a proposé Jean-Philippe

    2-Dans le souci d'avoir la table suivie de la colonne, la section du code de Jean-Philippe suivante le fait déjàPour plus d'informations il faut un peu plus de lecture. https://www.developpez.net/forums/d1...rosoft-access/

  6. #6
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juillet 2017
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2017
    Messages : 104
    Par défaut
    1- Le code proposé est une requête. On crée une requête de la même manière que tu crée une table. Menu créer -> Requête. Tu feras donc un clic droit sur la requête créée et tu choisiras le mode Sql, puis tu ajouteras le code que t'a proposé Jean-Philippe
    J'ai essayé. j'ai donc mis

    SELECT '<a href="Auteurs\' & [Auteurs].[Pseudo] & '.html" target="_blank">' & [Auteurs].[Nom] & '</a>'
    FROM Auteurs;

    Mais il semblerait que c'est la colonne Auteurs.nom qui a été modifiée (celle qui devrait servir à la definition des occurrences de remplacement) et non Liste_complete.Auteur . Il n'y a en effet que des "remplacements uniques", c'est à dire qu'aucun enregistrement à plusieurs auteurs n'apparait !

    D'ailleurs, pour la création de la requête avec l'assistant, avant de faire la requete sql, je n'ai sélectionné que la colonne Liste_complete.Auteur (celle qui doit être modifiée) car il ne veut pas ajouter Auteurs.Nom puisque je n'ai pas créé de relations entre les deux tables. Est ce grave, docteur ? Etait ce indispensable de les lier pour obtenir ce que je cherche ?

    2-Dans le souci d'avoir la table suivie de la colonne, la section du code de Jean-Philippe suivante le fait déjà
    [Auteurs].[Nom]
    Là je n'ai pas compris.

    Pour les liens, malheureusement, je n'ai pas le temps de m'attaquer à l'étude totale de Access.
    J'ai trouvé ce lien plus proche de ce que je cherche , ainsi que celui ci ... mais, pour le moment, ça ne m'a pas aidé

    EDIT
    Je crois que je peux desormais resumer ce que je cherche + simplement :

    Cible (Select ?) Liste_complete.Auteurs
    On cherche les valeurs = à Auteurs.Nom Attention, on peut trouver plusieurs fois une valeur = à Auteurs.Nom dans un même champs de Liste_complete.Auteurs. Ce n'est donc pas exactement Liste_complete.Auteurs = à Auteurs.Nom mais plutot Liste_complete.Auteurs CONTIENT Auteurs.Nom
    On remplace cette valeur par '<a href="Auteurs\' & [Auteurs].[Pseudo] & '.html" target="_blank">' & [Auteurs].[Nom] & '</a>'

    Mais faut il que je lie les deux tables ? Comment ?

    merci

Discussions similaires

  1. Colonnes protégées ou modifiables en fonction des valeurs d'une autre colonne
    Par romjeripa dans le forum Développement Sharepoint
    Réponses: 3
    Dernier message: 09/02/2015, 15h57
  2. Réponses: 2
    Dernier message: 10/10/2013, 15h35
  3. Réponses: 2
    Dernier message: 17/03/2011, 21h45
  4. Réponses: 3
    Dernier message: 05/08/2009, 00h34
  5. Réponses: 1
    Dernier message: 20/03/2007, 08h58

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