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

IHM Discussion :

Probleme avec un RecordSet, erreur 3061 [AC-2007]


Sujet :

IHM

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Points : 3
    Points
    3
    Par défaut Probleme avec un RecordSet, erreur 3061
    Bonjour à tous.
    Tout d'abord merci à ce site et à tous ceux qui y participent qui m'a beaucoup aidé au cours de mes études. Je poste ce problème car je e trouve la solution nulle part (ma recherche peut ne pas être complète...)

    Je cherche à récupérer des statistiques liées à un Utilisateur.
    Les Statistiques de chaque utilisateur sont contenues dans la table Statistiques avec comme champ : le numéro de l'utilisateur, le nombre de renouvellemnt demandé jusqu'à cette dernière demande, la date de la demande. Tous en champ Texte (respectivement les noms des champs : Utilisateur / Nombre Renouvellement / date de la demande )

    J'utilise une requete d'analyse croisée pour obtenir une table du type suivant :
    -----------------------------------------------
    |Utilisateur|21/01/2011|22/01/2012|29/07/2012|
    -----------------------------------------------
    | 1| 0| 1| 2|
    -----------------------------------------------
    | 2| 3| 4| 5|
    -----------------------------------------------
    | 3| 0| | |
    -----------------------------------------------

    Avec un formulaire je veux afficher un graphique qui ne concerne qu'un utilisateur en particulier (ici l'utilisateur 1).

    Je cherche donc a exécuter ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim db As DAO.Database, rs As DAO.Recordset, rUser As DAO.Recordset, qdf As DAO.QueryDef
        Set db = CurrentDb
        Rsql = "SELECT * FROM [R_ANALYSE_CROISEE_Stat] WHERE [R_ANALYSE_CROISEE_Stat].[Utilisateur]='" & Me.textUserNumber.Value & "'"
        MsgBox (Rsql)
        Set qdf = db.CreateQueryDef("", Rsql)
        Set rs = qdf.OpenRecordset
    après éxécution de ce code Access me renvoie un message d'erreur du type :
    Erreur d'éxécution 3061
    Trop peu de paramètres. 0 attendu.

    Or lorsque j'éxécute dans access la requete suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM R_ANALYSE_CROISEE_Stat
    WHERE R_ANALYSE_CROISEE_Stat.Utilisateur='1';
    Elle me renvoie bien ce que je veux :
    -----------------------------------------------
    |Utilisateur|21/01/2011|22/01/2012|29/07/2012|
    -----------------------------------------------
    | 1| 0| 1| 2|
    -----------------------------------------------

    Un bon samaritain pourrais-t-il m'aider ?

    D'avance merci.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Sur quelle ligne se produit l'erreur ?

    A+

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Oh pardon.
    L'erreur se produit sur la ligne : Set rs = qdf.OpenRecordset

    Merci.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Je ne sais pas si c'est relié mais tu n'as pas besoin de l'objet QueryDef

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Dim db As DAO.Database, rs As DAO.Recordset, rUser As DAO.Recordset
        Set db = CurrentDb
        Rsql = "SELECT * FROM [R_ANALYSE_CROISEE_Stat] WHERE [R_ANALYSE_CROISEE_Stat].[Utilisateur]='" & Me.textUserNumber.Value & "'"
        MsgBox (Rsql)
        Set rs = db.OpenRecordset(rqsl)
    A+

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    En effet, mais même sans le QueryDef (que je n'utilise pas habituellement quand je fais un recordSet), Access m'affiche ce fameux message d'erreur.

    Ce que je ne comprends pas, c'est que habituellement, il y a au moins marqué "Trop peu de paramètres. 1 atendu" mais là juste "0 attendu".

    Qu'est-ce que cela veut dire ? Qu'il n'y a pas assez de paramètres mais qu'il n'en attend pas plus pour autant ?

    C'est assez mystérieux

    A+

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Je suis d'accord avec toi, c'est assez étrange.

    Tu as fait le test avec le SQL, est-ce bien celui que ta chaîne donne, c-à-d une copie du contenu de la variable, ou est-ce celui que tu penses que ta chaîne donne ?

    Aussi essaye en enlevant la clause Where et voit ce que cela produit.

    A+

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Bonjour,
    Alors je n'ai pas bien compris ce que tu me demandais dans ta première question.
    Comme je le disais dans mon premier post, j'ai testé avec le SQL Access et elle me renvoie bien ce que je veux.

    J'ai testé aussi sans la clause Where et j'obtiens la même erreur.

    A+

  8. #8
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Dés fois on fait le test qu'on pense être bon, en tapant soi-même le SQL et le SQL produit par le programme est différent de ce qu'on a testé.

    Essaye cela :

    créer la requête avec l'éditeur de requête (je vais l'appelé : rInterogation mais tu peux mettre ce que tu veux.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM R_ANALYSE_CROISEE_Stat
    WHERE R_ANALYSE_CROISEE_Stat.Utilisateur=[prmUtilisateur];
    ensuite défini les paramètres comme prmUtilisateur, type Entier long.

    après modifie ton code comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
        Dim db As DAO.Database, rs As DAO.Recordset, rUser As DAO.Recordset
        dim q as dao.qerydef
        Set db = CurrentDb
        set q=db.querydefs("rInterogation")
        q.parameters("prmUtilisateur")=Me.textUserNumber
        Set rs = q.OpenRecordset
        '
        'Ici ton code
        '
       rs.close:set rs=nothing 'Ferme le recordset et libère la mémoire
       set q=nothing 'Libère la mémoire

  9. #9
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    Raah, je viens de réécrire mon code selon tes directives, je lance le formulaire associé au code et ... erreur 3061 (avec toujours 0 attendu sinon c'est pas drôle).

    Il y a peut-être un autre moyen de stocker une requete SELECT qu'un recordSet en VBA ?

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 6
    Points : 3
    Points
    3
    Par défaut
    La situation s'est débloquée. Ton idée d'utiliser les paramètres d'une requete est excellente !
    Alors l'explication que j'ai pue avoir c'est que l'erreur vient de DAO qui ne prends pas en compte "naturellement" les paramètres de requetes. Pour initialiser les paramètres d'une requete on peut utiliser le code suivant (dans mon cas ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim prm As DAO.Parameters
    For Each prm In qdf.Parameters
            prm.Value = Me.textUserNumber
    Next
    L'erreur 3061 ne se produit plus. Est-ce que tout les problèmes sont résolus ? je ne pense pas, mais l'espoir fait vivre.

    Merci beaucoup a toi marot_r.

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Si c'est réglé, appuis sur le bouton en bas de la discussion.

    A+

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

Discussions similaires

  1. Probleme avec une fonction Erreur : undefined symbol
    Par hassenman dans le forum C++Builder
    Réponses: 4
    Dernier message: 03/06/2008, 16h55
  2. probleme avec les recordset
    Par joe370 dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/04/2008, 21h03
  3. Toujours un probleme avec data_personne.Recordset.NoMatch
    Par jacko842 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 03/12/2007, 07h23
  4. probleme avec data_personne.Recordset.NoMatch
    Par jacko842 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 02/12/2007, 15h25
  5. Probleme avec requete, une erreur survient...
    Par charleshbo dans le forum Access
    Réponses: 6
    Dernier message: 09/02/2006, 14h27

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