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

VBA Access Discussion :

Erreur 3251: opération non autorisée..


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 172
    Points : 69
    Points
    69
    Par défaut Erreur 3251: opération non autorisée..
    Bonjour,
    A l'exécution du code ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim CoureursEngagésR As Object
    Set CoureursEngagésR = MaBase.OpenRecordset("CoureursEngagésR", dbOpenDynaset)
    filtre = "[SérieDossard] = " & 3
    CoureursEngagésR.Filter filtre
    Le message suivant arrête le déroulement de la procédure:
    Erreur d' exécution 3251
    Opération non autorisée pour ce type d'objet

    Voici le code SQL de la requête "CoureursEngagésR":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DEFINIRCourses.SérieDossard, CoureursEngagés.Dossard
    FROM CoureursEngagés INNER JOIN DEFINIRCourses ON CoureursEngagés.Compétition = DEFINIRCourses.Désignation;
    Pourquoi cette "infamie" ?
    Merci d'avance

  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
    Pourquoi utilises-tu un Object pour ton recordset alors que tu as un type Recordset disponible (DAO.Recordset ou ADODB.Recordset) ?

    L'intérêt d'utiliser le bon type est :
    • que l'intelissenses te présente les propriétés et méthode disponibles,
    • que cela vas un peu plus vite pour la compilation et l'exécution
    • et que tu vérifie à la compilation que tu assigne bien un recordset à ton recordset et pas un formulaire par exemple.


    Sur quelle ligne exactement se produit l'erreur ? Sur le filter ?

    A+

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 172
    Points : 69
    Points
    69
    Par défaut
    Je ne comprends pas:
    (DAO.Recordset ou ADODB.Recordset)
    L'erreur se produit au moment du filtre, sur la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CoureursEngagésR.Filter filtre

  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
    Si tu utilise un recordset, définie le comme tel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim CoureursEngagésR As DAO.Recordset
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim CoureursEngagésR As ADODB.Recordset
    Le problème c'est qu'il existe 2 types d'objet recordset, selon la librairie que tu emploie pour accéder aux donnés. La librairie peut être ADO ou DAO (va dans Outils / Référence pour savoir laquelle est utilisée.)

    Bien que portant le même nom, les deux types de recordset n'ont pas les même propriétés.

    Probablement que là tu utilise une syntaxe valide en DAO mais invalide en ADO ou le contraire.

    A+

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 172
    Points : 69
    Points
    69
    Par défaut
    Après vérification, j'utilise la bibliothèque DAO
    Si je remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim CoureursEngagésR As objet
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim CoureursEngagésR As DAO.Recordset
    J'obtiens le message pour la ligne filter:
    "utilisation incorrecte de la propriété"

  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
    Tu as bien une référence sur Microsoft DAO x.y Object Librarie (où x.y est un truc du genre 3.6)

    Je viens de faire un test chez moi et ça marche.

Discussions similaires

  1. Erreur d'éxécution '3251': Opération non autorisée
    Par maxmusix dans le forum VBA Access
    Réponses: 3
    Dernier message: 29/05/2013, 11h04
  2. erreur 3251 opération non autorisé pour ce type d'objet
    Par alexkickstand dans le forum VBA Access
    Réponses: 3
    Dernier message: 28/02/2008, 21h39
  3. erreur d'exécution '3251' ? opération non autorisée
    Par ttfme dans le forum VBA Access
    Réponses: 3
    Dernier message: 26/01/2008, 09h21
  4. opération non autorisée erreur '3251'
    Par ttfme dans le forum VBA Access
    Réponses: 0
    Dernier message: 25/01/2008, 13h34
  5. Erreur 3251: Opération non autorisé pr ce type d'objet
    Par Ragnarok85 dans le forum Access
    Réponses: 10
    Dernier message: 14/02/2007, 09h52

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