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 :

"Impossible d'exécuter cette action pour l'instant" [AC-2003]


Sujet :

Access

  1. #1
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut "Impossible d'exécuter cette action pour l'instant"
    Bonjour à tous,

    Nous nous prenons la tête depuis un moment sur un problème incompréhensile (pour nous).

    Ci-dessous, une fonction que nous avons développée :
    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
    Public Function ImpLChq(Id_LC, Apercu)
     
        'Lance l'impression de la lettre type numérotée Id_Lc
        'La fonction mpet à jour la table Lettre chèque
        'avec le drapeau "1" pour le champ editee
        'et les champs date_edition et util_edition ...
     
     
        Dim filtr, SQL As String
        filtr = "[Id_lettre_cheque] = " & Id_LC
        IDLC = Id_LC
        ' DoCmd.Close acReport, "Lettre-Chèque"
     
        ' Bascule entre Aperçu et impression directe :
     
        If Apercu = True Then
            DoCmd.OpenReport "Lettre-Chèque", acViewPreview, , filtr
        Else
            DoCmd.OpenReport "Lettre-Chèque", acNormal, , filtr
        End If
     
        DoCmd.SetWarnings False
        SQL = "UPDATE Lettre_Cheque SET Lettre_Cheque.editee = 1 WHERE " & filtr & " ;"
        DoCmd.RunSQL SQL
        SQL = "UPDATE Lettre_Cheque SET Lettre_Cheque.date_edition = #" & Format(Now(), "mm/dd/yy hh:mm:ss") & "# WHERE " & filtr & " ;"
        DoCmd.RunSQL SQL
        SQL = "UPDATE Lettre_Cheque SET Lettre_Cheque.util_edition = '" & Environ("USERNAME") & "' WHERE " & filtr & " ;"
        DoCmd.RunSQL SQL
        DoCmd.SetWarnings True
    End Function
    Cette fonction imprime un état à partir de la clé unique d'une table. Elle fonctionne très bien à partir d'un bouton, mais impossible de la faire fonctionner à partir d'une requête.

    Le plantage est sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "Lettre-Chèque", acViewPreview, , filtr
    J'ai essayé en enlevant le filtre mais rien n'y fait.
    Le message d'erreur est :
    Erreur d'exécution '2486' :
    Impossible d'exécuter cette action pour l'instant.
    Dans la requête, l'expression est :
    Expr1: ImpLChq([Id_lettre_cheque];Vrai)
    Merci d'avance de votre aide,
    Richard.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  2. #2
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    Bonjour,

    Avez vous mis un point d'arrêt au début de votre fonction pour voir où se déroule exactement l'erreur ?

  3. #3
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour jimay,

    Merci de ta réponse.

    Oui, je l'ai fait. L'erreur est sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "Lettre-Chèque", acViewPreview, , filtr
    Merci de ton aide,
    Richard.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  4. #4
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    Votre fonction ne commence même pas à s'éxecuter donc ?

    Peut-on voir le SQL de la requête qui appelle cette fonction ?
    Si vous essayez de modifier la table Lettre_Cheque dans la requête et dans la fonction c'est peut être pour celà que ça ne marche pas.

  5. #5
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Si, elle commence bien à s'exécuter : j'ai mis le point d'arrêt au début de la fonction (voir mon message d'origine) et le F8 déroule les premières instructions.

    La fontion se plante à la ligne que j'ai indiquée.

    Le SQL de la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ImpLChq([Id_lettre_cheque],True) AS Expr1
    FROM Lettre_cheque
    WITH OWNERACCESS OPTION;
    Ce n'est pas une requête "mise à jour".

    Merci de ton aide,
    Richard.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  6. #6
    Membre habitué Avatar de jimay
    Profil pro
    Inscrit en
    Août 2006
    Messages
    146
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 146
    Points : 178
    Points
    178
    Par défaut
    Je ne suis pas expert en la matière, mais pour moi, il est impossible d'executer une requete basée sur une table qui appelle une fonction qui modifie cette même table.

    Enfin pour moi c'est ça.

  7. #7
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    La fonction se plante AVANT les instructions de mise à jour !
    La requête n'est pas une requête "mise à jour".

    Ce n'est donc pas cela.

    Merci de votre aide,
    Richard.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

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

    Une fonction doit renvoyer une valeur, ce qui n'est pas le cas ici, donc tu ne peux procéder de la sorte, il ne suffit pas de mettre Function à la place de Sub pour pouvoir créer une fonction.

    Philippe

  9. #9
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Philippe,

    Merci de ta réponse.

    Je suis désolé de te contredire mais, comme je l'ai précisé dans mon post initial, cette fonction marche très bien à partir d'un bouton d'un formulaire qui passe, à cette fonction, la clé de la lettre à éditer. Le bouton déclenche un "Call", et tout va bien.

    Je ne comprends pas pourquoi, à partir d'une requête, cela ne marche pas...

    Merci d'avance de ton aide,
    Richard.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

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

    Je répète, ce n'est pas une fonction que tu as fait, mais une routine qui opère des actions, hors une fonction renvoie une valeur, c'est ce qu'attends ta requête et que ne renvoie pas ta routine, même si tu la nommes Function.

    Philippe

  11. #11
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Je me souviens avoir fait développer une "fonction" à laquelle on passe un chemin/document Word et qui se contente de transformer ce document Word en .pdf (via PDF Creator).

    A partir d'une requête analysant une table contenant un certain nombre de document à transformer, je fais appel à cette fonction de la même manière que ce cas-ci et tout fonctionne : la requête se contente d'appeler ce bout de code, la "fonction" donc, qui, elle, fait son travail de transformation de .doc en .pdf.

    Le SELECT de la requête se contente d'appeler le bout de code de la fonction et n'a donc pas besoin de valeur de retour particulière.

    Je pense que tu peux faire le test :
    - créer une fonction qui ne renvoie pas de valeur mais qui effectue une acion quelconque à partir d'une donnée d'entrée ;
    - à partir d'un formulaire, tu appelles cette fonction avec la donnée saisie dans le formulaire ;
    - tu crées une requête qui envoie à cette fonction des données d'entrée "en masse".

    Merci encore de ton intérêt et de ton aide,
    Richard.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  12. #12
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut à tous,

    cela ne m'étonne pas trop.
    sans savoir vraiment comment fonctionne le mécanisme de construction des requêtes il me parait évident que plusieurs taches sont crée simultanément pour y répondre. or l'impression ne se fait pas simultanément, c'est l'un après l'autre.
    en gros la requête fourni la réponse pour le premier enregistrement et lance l'impression mais n'attend pas que celle ci se termine pour fournir l'enregistrement suivant qui doit surement déclencher une deuxième impression ce qui provoquera l'erreur puisque le gestionnaire est occupé et provoquera un échec de la requete.
    cela peut surement fonctionner avec un "périphérique logiciel" comme pdfcreator où l'on peut concevoir la création d'une nouvelle instance de l'objet mais visiblement pas avec un "periphérique matériel".

    la méthodologie ne me parait pas approprié.
    soit tu gardes ton code et tu boucle sur les enregistrements, soit tu revois la conception de la requête de ton état pour ne pas avoir à faire tes updates et obtenir un seul état à imprimer, ce qui serait plus rapide.


  13. #13
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour vodiem,

    Merci de ton intérêt.

    Même avec un seul enregistrement à traiter, le message d'erreur apparaît.

    D'autre part, ce ne sont pas les UPDATE qui posent problème (j'ai fait le test en supprimant ces lignes). De toute façon, la fonction se plante avant les instructions de mise à jour.

    Concernant la méthodologie, il s'agissait de développer une petite "brique" qui ne s'occupe que d'éditer un état pour une clé donnée, et de mettre à jour le record correspndant : une fois cette "brique" mise au point, le traitement des éléments à éditer s'effectue en amont, sans se soucier de l'édition de l'état.

    D'ailleurs, comme je l'indique dans mon post initial, un formulaire fait appel à cette fonction pour éditer un élément, et cela marche très bien. Je pensais donc que je pouvais appeler cette fonction via une requête, ce qui ne semble pas être possible.

    Merci de ton aide,
    Richard.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  14. #14
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    je ne remets pas en cause le code, le pb ne se situe pas à l'update.
    ce type de message : "Impossible d'exécuter cette action pour l'instant." informe que dans l'état access ne peut réaliser la tache.
    le code n'est pas en cause puisque comme tu le dit : il fonctionne bien sur l'événement d'un bouton.
    ce qui veut bien dire que c'est l'exécution dans la requete qui déclenche ce changement d'état même si effectivement il n'y a qu'un enregistrement en résultat à traiter (rien le l'empêche de déclencher plusieurs traitement et filtrer ensuite...) ou même qu'un seul enregistrement inscrit dans la table. il n'y a pas à ma connaissance de paramétrage particulier qui pourrait résoudre ce pb.

    quand à la méthodologie ce n'est pas très orthodoxe de mettre à jour des données pendant l'exécution d'une requete, cela dit du moment ou c'est posible : pourquoi pas.
    mais de facon plus classique tu ouvres ton état avec l'ensemble de tes enregistrements séléctionnés par le filtre et ensuite tu mets à jour les données.
    sinon puisque tu dis :
    Citation Envoyé par Richard_35
    Elle fonctionne très bien à partir d'un bouton
    je ne comprends pas pourquoi :
    Citation Envoyé par Richard_35
    Même avec un seul enregistrement à traiter
    il te suffit simplement de boucler à partir du code qui fonctionne à partir du bouton, comme tu le ferais manuellement. s'il y a pb, il faudra gérer une pause entre les impressions.


  15. #15
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour à tous et merci de votre intérêt.
    Nous avons procédé autrement, en final.

    A bientôt,
    Richard.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/07/2014, 15h18
  2. [SP-2007] [WSS3] Tentative de connexion : Impossible de terminer cette action
    Par enimren dans le forum SharePoint
    Réponses: 3
    Dernier message: 29/02/2012, 18h36
  3. Réponses: 1
    Dernier message: 04/06/2008, 20h13
  4. javascript pour exécuter une action
    Par hoor3in dans le forum Struts 1
    Réponses: 29
    Dernier message: 01/08/2007, 13h52
  5. Réponses: 8
    Dernier message: 29/03/2007, 14h48

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