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 :

pb de recordset


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 57
    Points : 18
    Points
    18
    Par défaut pb de recordset
    Salut a tous,
    voila j'essaie de faire une concaténation de champ de plusieurs colonnes sur une même ligne, voici mon code :

    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
     
    Option Compare Database
    Public Function Tache(NomDuProspectHA As String) As String
    Dim res As DAO.Recordset
    Dim SQL As String
    'Selectionne les participant du projet
    SQL = "SELECT Tache FROM TACHENEXT2 WHERE NomDuProspectHA=" & NomDuProspectHA
    Set res = editialis.OpenRecordset(SQL)
    'Concatene les différents enregistrement
    While Not res.EOF
    Tache = Tache & res.Fields(0).Value & " "
    res.MoveNext
    Wend
    'Enleve le dernier espace
    Tache = Left(Tache, Len(Tache) - 1)
    'libere la mémoire
    Set res = Nothing
    End Function
    Ma requete est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT TACHENEXT2.NomDuProspectHA, Tache(NomDuProspectHA) AS LesTaches
    FROM TACHENEXT2;
    erreur de compilation et il surligne '.recordset'.
    Comprends po !!!
    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut
    Quelle est le message d'erreur ?
    As tu pensé à activer la référence DAO ?

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 57
    Points : 18
    Points
    18
    Par défaut
    Voui j'ai activé DAO.
    Sinon le message c'est :

    "Erreur de compilation.
    Membre de méthode ou de données introuvable"

    en fait je lance ce code quand je lance une requete basique ACCESS. J'ai pas besoin d'avoir de formulaire pour lancer un code du genre ? (désolé si c'est une question stupide)

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Il faut que tu declare ta base de donsées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    Dim editialis As Database
     
    Set editialis=Currentdb()
    Avant de l'utiliser comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set res = editialis.OpenRecordset(SQL)
    Amicalement

  5. #5
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 57
    Points : 18
    Points
    18
    Par défaut
    je viens de faire ce que tu m'as dit et j'ai un message :

    erreur d'execution '3061'
    Trop peu de parametres. 2 attendu

    ???

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    C'est dans ta requête SQL qu'il faut aller voir

    SQL = "SELECT Tache FROM TACHENEXT2 WHERE NomDuProspectHA=" & NomDuProspectHA
    NomDuProspectHA :
    Est un texte?
    Provient il d'un formulaire?
    Amicalement

  7. #7
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 57
    Points : 18
    Points
    18
    Par défaut
    En fait j'ai pas du tout de formulaire, j'ai juste ma table 'TACHENEXT2' avec 2 champs:
    NomDuPropspectHA et Note (tous les deux de type texte)

    Cette table a été alimentée avec l'import d'un fichier ecxel.

    Et dans cette table, j'ai des sociétés qui ont plusieurs notes, donc autant de ligne société que de ligne note. Et moi je veux regrouper toutes les notes d'une société dans un mème champ (donc une ligne).

    Donc j'ai pas de formulaire, pas d'état ou je ne sais quoi ! :0S

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Eh bien dans ce cas il te faut deux recordset

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     
    Public Function Tache() As String
    Dim editialis As Database, DSociete, res As DAO.Recordset
    Dim SQL As String, TxtNom, Resultat As Variant
     
    Set editialis=currentdb()
     
    Selectionne uniquement le nom des sociétés
    Set DSociete=editialis.OpenRecordset("Select Distinct NomDuProspectHA From TACHENEXT2")
     
    Do Until DSociete.EOF
          TxtNom=DSociete("NomDuProspectHA")
          'Selectionne les participant du projet
          SQL = "SELECT Tache FROM TACHENEXT2 WHERE NomDuProspectHA='" & NomDuProspectHA & '""
         Set res = editialis.OpenRecordset(SQL)
    'Concatene les différents enregistrement
    Do While Not res.EOF
    Resultat = Resultat & " "& res.Fields(0).Value & " "
    res.MoveNext
    Loop
    'Enleve le dernier espace
    Tache = Left(Resultat, Len(Resultat) - 1)
    ' Ici il faut envoyer le résultat de la société traité quelque part avant de passer à la suivant
     
    DSociete.MoveNext
     
    Loop
    'libere la mémoire
    Set res = Nothing
    Set DSociete = Nothing
    End Function
    Amicalement

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 57
    Points : 18
    Points
    18
    Par défaut
    Alors j'ai essayé le code que tu m'as proposé.
    mais maintenant quand je lance ma requete (dans la partie requete d'access):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT TACHENEXT2.NomDuProspectHA, Tache(NomDuProspectHA) AS LesTaches
    FROM TACHENEXT2;
    j'ai le message :

    'Fonction utilisée avec un nombre d'arguments incorrect dans l'expression Tache(NomDuProspectHA)'

    comprends vraiment po !!

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Citation Envoyé par amel123456789
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT TACHENEXT2.NomDuProspectHA, Tache(NomDuProspectHA) AS LesTaches
    FROM TACHENEXT2;
    j'ai le message :

    'Fonction utilisée avec un nombre d'arguments incorrect dans l'expression Tache(NomDuProspectHA)'
    Tu n'as pas besoin de Tache(NomDuProspectHA) ici.
    c'est plutot comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT TACHENEXT2.NomDuProspectHA
    FROM TACHENEXT2;
    tout cour.
    Amicalement

  11. #11
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 57
    Points : 18
    Points
    18
    Par défaut
    ben si je mets ca, ma fonction ne se lance plus ^^ !!

  12. #12
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Ca devrait fonctionner
    Fais cette requête dans le QBE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT DISTINCT TACHENEXT2.NomDuProspectHA
    FROM TACHENEXT2;
    pour d'abord voir le résultat.

    Ensuit met un point d'arret ou un Debug.Print (SQL) juste après le SQL
    Amicalement

  13. #13
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 57
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par DMboup

    Ensuit met un point d'arret ou un Debug.Print (SQL) juste après le SQL
    La moi pas comprendre désolé :0S!!

    Sinon ben la requète affiche les sociétés mais j'ai pas de concaténation vu que je n'appelle pas la fonction !

  14. #14
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Citation Envoyé par amel123456789
    Sinon ben la requète affiche les sociétés mais j'ai pas de concaténation vu que je n'appelle pas la fonction !
    Eh bien donc c'est bien ce qu'il faut faire.

    Je crois que ton problème si situe ici
    'Enleve le dernier espace
    Tache = Left(Resultat, Len(Resultat) - 1)
    ' Ici il faut envoyer le résultat de la société traité quelque part avant de passer à la suivant

    DSociete.MoveNext
    Après avoir concaténé pour une société donnée, il faut mettre le résultat quelque part (Une table temporaire par exemple) avant de continuer.

    Tu peut mettre un point d'arrêt dans la fonction et la lancer pour voir le contenu de la variable Resultat?
    Amicalement

  15. #15
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 57
    Points : 18
    Points
    18
    Par défaut
    je viens de créer une table temp avec un champ temp.
    Donc en gros il faut que je fasse un update sur cette table ki recoit résultat après la ligne "Tache = Left(Resultat, Len(Resultat) - 1)"?

  16. #16
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 57
    Points : 18
    Points
    18
    Par défaut
    c'est sur cette ligne que j'ai un problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tache = Left(Resultat, Len(Resultat) - 1)
    comprends po !!!

  17. #17
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 57
    Points : 18
    Points
    18
    Par défaut
    erreur d'execution '5' :
    Argument ou appel de procedure incorrect

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Option Compare Database
     
    Public Function Tache() As String
    Dim editialis As Database, DSociete, res As DAO.Recordset
    Dim SQL As String, TxtNom, Resultat As Variant
     
    Set editialis = CurrentDb()
     
    'Selectionne uniquement le nom des sociétés
    Set DSociete = editialis.OpenRecordset("Select Distinct NomDuProspectHA From TACHENEXT2")
     
    Do Until DSociete.EOF
          TxtNom = DSociete("NomDuProspectHA")
          'Selectionne les participant du projet
         SQL = "SELECT Note FROM TACHENEXT2 WHERE NomDuProspectHA='" & NomDuProspectHA & "'"
         Set res = editialis.OpenRecordset(SQL)
    'Concatene les différents enregistrement
    Do While Not res.EOF
    Resultat = Resultat & " " & res.Fields(0).Value & " "
    res.MoveNext
    Loop
     
    'Enleve le dernier espace
    Resultat = Left(Resultat, Len(Resultat) - 1)
    ' Ici il faut envoyer le résultat de la société traité quelque part avant de passer à la suivant
     
    DSociete.MoveNext
     
    Loop
    'libere la mémoire
    Set res = Nothing
    Set DSociete = Nothing
    End Function

  18. #18
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set editialis = Application.CurrentDb
    peut être.. non ?

    De plus, tu n'a pas précisé de type pour DSociete et TxtNom

  19. #19
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 57
    Points : 18
    Points
    18
    Par défaut
    j'ai modifié mais j'ai toujours le message d'erreur '5' sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Resultat = Left(Resultat, Len(Resultat) - 1)

  20. #20
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Et si tu déclares

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [VB6]Joindre deux recordsets en un seul
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 11/06/2003, 21h06
  2. [VB6] générer un recordset qui n'est pas lier à un bdd
    Par damyrid dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/06/2003, 17h48
  3. [VB6] Sauvegarder la position dans un Recordset
    Par inotna2099 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 29/04/2003, 17h35
  4. [VB6] [BDD] Recordset et champ égal à Null
    Par Gr|ppen dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/03/2003, 10h00
  5. [ADO] Sauvegarde / lecture de recordset
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/09/2002, 16h54

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