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é pour ce type d'objet


Sujet :

VBA Access

  1. #1
    Membre régulier Avatar de alexkickstand
    Inscrit en
    Octobre 2002
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 165
    Points : 105
    Points
    105
    Par défaut erreur 3251 opération non autorisé pour ce type d'objet
    bonjour j'aurais voulu faire une requete sur une table sql server 2005 mais il m'indique une erreur 3251 : "opération non autorisé pour ce type d'objet"

    référence : Microsoft DAO 3.6 Object Library

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Function attach_sw_to_edb(nom_dessin_sw)
     
    'déclaration des variables
        Dim dbs As DAO.Database
        Dim rst As DAO.Recordset
        Dim SORT_VAR, SORT_VAR1, SORT_VAR2 As Variant
        Dim path as String
     
    'accés à la base de données (fichier access)
         bdd_nom = "C:\PDF_TRIO\fichier_access.mdb"
     
    'chemin d'accé du fichier PDf
     path = "F:\Solidworks_pdf\" & nom_dessin_sw & "_tabloid.pdf"
     
    'ouvrir la base de données
     Set dbs = OpenDatabase(bdd_nom)
     
    'ouvrir la table "dbo_Dessins"
     Set rst = dbs.OpenRecordset("dbo_Dessins", dbOpenSnapshot, dbSeeChanges)
     
    'requete sql select pour récupérer l'enregistrement qui correspond au nom du fichier pdf
       SORT_VAR1 = "SELECT [dbo_Dessins].[ITEM], [dbo_Dessins].[Fichier]  FROM [dbo_Dessins]"
       SORT_VAR2 = "WHERE ((([dbo_Dessins].[ITEM]) ='" & nom_dessin_sw & "*'))"
       SORT_VAR = SORT_VAR1 & SORT_VAR2
     
    'mettre a jour le champ
        With rst
            rst.Edit
            !Fichier = path
            rst.Update
            rst.Close
        End With
     
    MsgBox ("Nouveau Dessin PDF attaché sur Item")
    erreur est provoqué sur la ligne ".Edit"

    merci d'avance pour de l'aide

    Alex

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    À mon avis le dbOpenSnapshot n'aide pas.

    Si je ne me trompes pas, dbOpenSnapshot ça fait une copie indépendante en lecture seule de la bd, non ?

    Je mettrai dbOpenDynaset à la place ou peut-être un dbForwardOnly.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre régulier Avatar de alexkickstand
    Inscrit en
    Octobre 2002
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 165
    Points : 105
    Points
    105
    Par défaut re
    bonjour et merci de ta réponse , "dbOpenDynaset" etait la bonne option en effet !!! je suis pas tres familier avec ce genre d'option a vrai dire je travaillais sur des bases access puis sql server c'est bien différend !!

    pourrais tu me dire car j'ai un doute sur cette portion de 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
     
    Set dbs = OpenDatabase(bdd_nom)
     
    'ouvrir la table "dbo_Dessins"
     Set rst = dbs.OpenRecordset("dbo_Dessins", dbOpenDynaset, dbSeeChanges)
     
    'requete sql select pour récupérer l'enregistrement qui correspond au nom du fichier pdf
       SORT_VAR1 = "SELECT [dbo_Dessins].[ITEM], [dbo_Dessins].[Fichier]  FROM [dbo_Dessins]"
       SORT_VAR2 = "WHERE ((([dbo_Dessins].[ITEM]) ='" & nom_dessin_sw & "*'))"
       SORT_VAR = SORT_VAR1 & SORT_VAR2
     
    'mettre a jour le champ
        With rst
            rst.Edit
            !Fichier = path
            rst.Update
            rst.Close
        End With
    est-ce que ma requete "sort_var" est bien assigné dans le "with rst" ?

    car il me retourne uniquement le premier enregistrement de ma table

    merci d'avance

    Alex

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    C'est normal, un recordset est un ensemble d'enregistrement mais ton code n'en traite q'un.

    si tu veux le faire par programme il te faut écrire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    do while not rst.eof
        With rst
            rst.Edit
            !Fichier = path
            rst.Update
            rst.Close
        End With
        rst.movenext
    loop
    sinon il faut que tu écrive une requête UPDATE et que tu l'appel de ton code. Je ne suis pas un champion du SQl, si tu as besoin de cela crée une nouvelle discussion.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

Discussions similaires

  1. [AC-2007] Opération non autorisée pour ce type d'objet
    Par mcryco dans le forum VBA Access
    Réponses: 2
    Dernier message: 14/02/2014, 16h25
  2. [AC-2003] [VBA] Opération non autorisée pour ce type d'objet.
    Par ludobalu dans le forum VBA Access
    Réponses: 7
    Dernier message: 31/10/2012, 08h26
  3. [XL-2007] Erreur "Dimension spécifiée non valide pour le type de graphique en cours"
    Par m@tix dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/08/2011, 14h42
  4. Erreur 3251: opération non autorisée..
    Par gbzmt dans le forum VBA Access
    Réponses: 5
    Dernier message: 21/02/2008, 22h01
  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