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 :

Problème concaténation


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 20
    Points
    20
    Par défaut Problème concaténation
    Bonjour a tous,

    grace à un tutoriel trouvé sur ce forum, j'ai utilisé un code VB pour concaténer mes données :

    Champ1 : N° Document
    Champ2 : Postes

    j'ai donc par exemple pour le document 1, 3 postes (A, B et C) que je voudrais voir en une seule ligne.

    J'ai donc le code suivant dans un module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Option Compare Database
    Option Explicit
     
    Public Function RecupPoste(Numdoc As Long) As String
    Dim res As DAO.Recordset
    Dim SQL As String
    'Selectionne les postes associés au document
    SQL = "SELECT Postes FROM T_Postes WHERE [N° Document]=" & Numdoc
    Set res = CurrentDb.OpenRecordset(SQL)
    'Concatene les différents enregistrement
    While Not res.EOF
    RecupPoste = RecupPoste & res.Fields(0).Value & " "
    res.MoveNext
    Wend
    'Enleve le dernier espace
    RecupPoste = Left(RecupPoste, Len(RecupPoste) - 1)
    'libere la mémoire
    Set res = Nothing
    End Function
    Puis dans une requete SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT DISTINCT T_postes.[N° Document], RecupPoste(Numdoc) AS postes
    FROM T_Postes;
    Impossible d'afficher le résultat! j'obtiens le message d'erreur suivant :
    Cette expression présente une syntaxe incorrecte, ou est trop complexe pour être évaluée. Par exemple une expression numérique peut contenir des éléments trop compliqués. Essayez de la simplifier en en affectatnt des parties à des variables.
    Je n'ai pas de champ numérique dans ma table, et je ne vois pas comment simplifier ma requete... quelqu'un peut-il m'aider????

    Merci d'avance.
    Le travail c'est la santé, ne rien faire c'est la préserver!

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Tu es sur que Numdoc est un champ de ta table ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Je pensais que Numdoc était une variable qui désignerait la valeur du document recherché.

    Mais quand je remplace Numdoc par le nom de mon champ ca ne fonctionne pas non plus... il ne se passe rien même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT DISTINCT T_postes.[N° Document], RecupPoste([N° Document]) AS postes
    FROM T_Postes;
    Le travail c'est la santé, ne rien faire c'est la préserver!

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Il ne se passe rien ? La requête ne s'ouvre pas ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Non absolument rien, le clic sur mode Feuille de données ou Exécuter, ou même le double clic sur la requete ne provoque rien... Ca reste en mode SQL...
    Le travail c'est la santé, ne rien faire c'est la préserver!

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    En supprimant le DISTINCT, la requete s'execute mais mon champ "Postes" ne possède pas de valeur : #Erreur et j'ai des lignes en doublons...
    Le travail c'est la santé, ne rien faire c'est la préserver!

  7. #7
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Bizarre

    Essaye de placer un point d'arret dans la fonction (F9) pour voir si elle est correctement appelée

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Non la fonction ne semble pas intervenir, le point d'arret n'arrete pas ma fonction... Aurais je oublié une manip?
    Le travail c'est la santé, ne rien faire c'est la préserver!

  9. #9
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    petite question:
    tu voudrais voir, dans une requete,une colonne qui te ramene le contenu des autres colonnes et ce, pour chaque enreg?
    peut etre que j'ai rien compris

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 25
    Points : 20
    Points
    20
    Par défaut
    Ma table:

    Numéro document / Postes

    1 soudeuse
    1 riveteuse
    1 presse
    2 cosmo
    2 LBM

    je voudrais en ressortir :

    Numéro document / Postes
    1 Soudeuse riveteuse Presse
    2 cosmo LBM

    Désolé si je n'ai pas été clair.
    Le travail c'est la santé, ne rien faire c'est la préserver!

  11. #11
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    je sais que ce n'est pas tres elegant, mais je te le propose quand meme:
    1/Ajoute un champ supplementaire à ta table par ex chp
    2/modifions legerement ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'Concatene les différents enregistrement 
    While Not res.EOF 
    RecupPoste = RecupPoste & res.Fields(0).Value & " " 
    res.MoveNext 
    Wend 
    'Met le champ chp à jour
    res.edit
      res!chp=RecupPoste 
    res.update
    'libere la mémoire 
    Set res = Nothing
    apres tu feras ta requete.mais il me semble que cette table est liée à une autre par une relation 1:n.si vrai alors il serait plus judicieux de créer le champ chp là bas.
    encore une fois, en attendant mieux.[/code]

Discussions similaires

  1. Problème concaténation avec le "+"
    Par TronsoT dans le forum Général Java
    Réponses: 5
    Dernier message: 03/05/2006, 22h29
  2. [MySQL] Problème concaténation variables
    Par renaud26 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 19/03/2006, 17h33
  3. Problème concaténation excel/vba
    Par rotterdamt dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 28/11/2005, 17h47
  4. Problème Concaténation
    Par Jimmy_S dans le forum C
    Réponses: 7
    Dernier message: 19/10/2005, 15h00
  5. Problème concaténation requête avec ORACLE
    Par kobe dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/08/2005, 11h57

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