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 :

Opération interdite pour cet objet ?


Sujet :

VBA Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut Opération interdite pour cet objet ?
    Bonjour,
    J'ai du code qui fonctionne bien dans une procédure, mais qui refuse de s'exécuter dans une autre du même module.
    Le code qui bloque sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FindFirst "ABR=" & IndexBase
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim MaBd As Database
    Set MaBd = DBEngine.Workspaces(0).Databases(0)
    Dim rstI As DAO.Recordset
    Set rstI = MaBd.OpenRecordset("index")
    'Tester présence de ABR dans index
    With rstI
      .MoveFirst
      .FindFirst "ABR=" & IndexBase
      If Not .NoMatch Then 'l'index contient dèjà des éléments de IndexBase
        msg = MsgBox("Il faut supprimer la base de l'index avant de continuer.", vbOKOnly)
        GoTo Exit_CreeIndex
      End If
     
    End With
    et celui qui fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim MaBd As Database
    Set MaBd = DBEngine.Workspaces(0).Databases(0)
    Dim MonJeu As DAO.Recordset
    Set MonJeu = MaBd.OpenRecordset("état civil")
        MonJeu.MoveFirst
        sql = "[N° COCHEM] = " & Val(coch)
        MonJeu.FindFirst sql
        If Not MonJeu.NoMatch Then ....
     '   End If
    End Sub
    Le remplacement de "=" par "LIKE" dans le critère ne change rien.

    Si vous avez une idée ?
    Amitiés

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    Hello AndréPe

    est-ce que ta table est indexée auquel cas utilise plutot : SEEK

    Jeannot
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    De quel type est le champ "ABR" ?

    Starec

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    Merci de vos réponses.
    @Jeannot45 : oui la table est indexée, je vais voir ce que donne SEEK.
    Mais pourquoi çela fonctionne-t-il dans un cas et pas dans l'autre ?

    @starec : le champ ABR est un champ TXT, comme IndexBase
    A+

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par AndréPe
    @starec : le champ ABR est un champ TXT, comme IndexBase
    A+
    Alors il faut que tu mettes des quotes, essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "ABR='" & IndexBase & "'"
    Starec

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut
    @starec ça ne change rien ->
    "Erreur 3251 opération non autorisée pour ce type d'objet"
    @Jeannot45 : je précise, la table index est indexée mais pas sur le champ ABR, donc SEEK ne donne rien


    J'ai souvent utilisé "FindFirst" et c'est la première fois que je rencontre cette erreur.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Re

    Je t'avoue je ne l'utilise jamais, je préfére une bonne requête SQL, je ne voie pas.

    Starec

  8. #8
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut
    Hello,

    Etant donné que dans le premier cas la procédure fonctionne bien, je reprendrai le meme principe (pour vérifier)

    1) passer par une variable pour récupérer la concaténation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "ABR = '" & Index & "'"
    2) Faire gaffe aux espaces et aux Quotes puisque ton ABR est en Texte

    Cela parait primaire mais bon .... peut etre que ....

    Jeannot
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 681
    Points : 214
    Points
    214
    Par défaut Résolu
    Bonjour,
    J'avais laissé ce pb de côté et je viens de m'y remettre.

    Tout va bien si on ouvre les recordset en DB_OPEN_DYNASET, le FindFirst est accepté, et pas besoin de DAO.

    Merci de votre implication
    Amitiés

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

Discussions similaires

  1. Stock négatif interdit pour cet article
    Par sebastien-a dans le forum SAGE
    Réponses: 5
    Dernier message: 15/08/2013, 20h50
  2. Créer un evénement pour un objet
    Par guirat dans le forum Langage
    Réponses: 7
    Dernier message: 24/11/2005, 18h22
  3. Réponses: 4
    Dernier message: 25/10/2005, 08h48
  4. Architecture pour les objets d'un jeu
    Par Freakazoid dans le forum DirectX
    Réponses: 7
    Dernier message: 31/07/2004, 13h09
  5. [MFC]arriere plan pour un objet de la classe CStatic
    Par gabriel knight dans le forum MFC
    Réponses: 13
    Dernier message: 28/07/2003, 10h42

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