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 :

[Requête_VBA_Access] Paramètre ignoré dans une requête


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Par défaut [Requête_VBA_Access] Paramètre ignoré dans une requête
    Bonjour à tous!

    J'ai fait plusieurs recherches sur les différents forums/FAQ/Sources du site, mais je n'ai pas su trouver de solution à mon problème d'apparence banal mais qui est quand même un peu particuler.

    Voici ce qui en est:
    (Note: j'utilise Access 2000 et Windows XP édition familiale)

    J'ai créé un formulaire relié à ma table "Visa", en mode formulaire unique. Sur ce formulaire j'ai un bouton (commande36) qui:

    1-Enregistre manuellement les modification apportées à l'enregistrement.
    2-Enregistre un "rapport" dans un document word.

    Tou celà fonctionne merveilleusement, mais (et oui il y a un mais sinon je ne serais pas là ) le rapport enregsitre TOUS les enregistrements de ma table "Visa". Ce que mes employeurs veulent, c'est que seul l'enregistrement en cour soit enregisré dans le "rapport".

    Pour palier à ce problème, j'ai basé mon "rapport" sur une requête paramétrée allant chercher le no. de visa (ma clé primaire), pour n'enregistrer que l'enregistrement en cour.

    Et ça ne fontionne qu'à moitié. Le "rapport" peut être enregistré, mais lors de l'exécution du code, la fenêtre demandant d'entrer le paramètre de la requête apparaît à chaque fois, chose que mes employeurs voudraient éviter.

    J'ignore pourquoi, mais lors de l'exécution, la requête ne va pas chercher ma valeur dans le champs du formulaire....sauf en mode debug.... C'est dingue, mais quand je fonctionne avec l'option pas-à-pas du debuggeur VBA, la fenêtre n'apparaît pas et tout fonctionne comme je le voudrais ... et c'est ça qui me perd

    Je ne comprends vraiment pas pourquoi et je suis un peu découragée...

    Code de la requête (affichage SQL):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
          SELECT Visa.Num_Visa, Visa.Date, Visa.Num_Dossier, Visa.Type_carte,
                     Visa.Num_Carte, Visa.Date_Exp_Visa, Visa.Num_Cours, 
                     Visa.Nom_Avocat, Visa.Desc_Proc, Visa.Timbre_Jud, 
                     Visa.Nom_Avocat2, Visa.No_Tel, Visa.Conciliation,       
                     Visa.Activation, Visa.Init
          FROM Visa
          WHERE (((Visa.Num_Visa)=[Forms]![Visa1]![Num_Visa]));
    *Visa1 = formulaire
    *Num_Visa = nom du champ du formulaire (et du champ de la table)

    Code du bouton du formulaire:
    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
     
       Private Sub Commande36_Click()
     
        Dim stDocName As String
     
            DoCmd.RunCommand acCmdSaveRecord
            stDocName = "Etat_Visa_Exp"
     
            DoCmd.OutputTo acOutputReport, "Etat_Visa_Exp", acFormatRTF,     
                                   "C:\Data\Visa.doc"    
        Exit_Commande36_Click:
           Exit Sub
     
        Err_Commande36_Click:
           MsgBox Err.Description
           Resume Exit_Commande36_Click
     
    End Sub
    *Etat_Visa_Exp = nom du rapport lié à la requête

    Je crois que je n'ai rien oublié, j'espère qu'avec tout ça vous pourrez me donner un coup de main

    Si vous avez des questions ou si je n'ai pas été assez clair n'hésitez pas à me le dire, je tâcherai de répondre du mieux possible.

    Gros merci à l'avance

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Par défaut
    Bonsoir et bienvenue,

    Il faut déjà vérifier la concordance des champs concernés. Pour celà il suffit de créer une requête basique et de vérifier qu'il est bien affiché la demande lorsque le formulaire est ouvert.

    Cordialement.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Par défaut
    Bonjour et merci de me répondre si vite!

    J'ai fait les vérificationavec une requête standrad appeler par un petit bouton sur mon formulaire et voici le résultat:

    -La requête s'exécute normalement, c'est-à-dire qu'elle va chercher la valeur du paramètre tout de seule, comme ce qui est voulu.

    Ce n'est donc pas ma requête qui fait défaut, en fait je pense que c'est ma ligne exportant mon rapport en word qui cause problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OutputTo acOutputReport, "Etat_Visa_Exp", acFormatRTF, "F:\Data\Texte\" & Dossier1 & "\" & Dos3 & "\visa" & Dossier & ".doc"
    Le plus étrange (enfin je trouve) c'est que lorsque je suis en mode debug, la fenêtre ne s'affiche pas et la requête va chercher la valeur d'elle-même .

    Bref, quelqu'un a une idée?

    Merci à l'avance!

  4. #4
    Expert confirmé
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Par défaut
    Salut,

    J'ai du mal à saisir où est ton problème (la fin de journée qui approche )

    Il faut que tu modifies la source de ton état avant de l'exporter.
    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
       Private Sub Commande36_Click()
     
        Dim stDocName As String
     
            DoCmd.RunCommand acCmdSaveRecord
            stDocName = "Etat_Visa_Exp"
     
            DoCmd.OpenReport stDocName, acViewPreview, , acHidden
            Reports(stDocName).RecordSource = "Chaine SQL ou nom de la requête"
            DoCmd.Close acReport, stDocName, acSaveYes
     
            DoCmd.OutputTo acOutputReport, "Etat_Visa_Exp", acFormatRTF,     
                                   "C:\Data\Visa.doc"    
        Exit_Commande36_Click:
           Exit Sub
     
        Err_Commande36_Click:
           MsgBox Err.Description
           Resume Exit_Commande36_Click
     
        End Sub

  5. #5
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    Bjr,

    J'ai eu ce problème mais avec un graphique; il fallait déclarer explicitement le paramètre dans la requête pour qu'il ne soit pas demandé.

    A tester au cas où ce soit la même chose avec un export word :
    http://access.developpez.com/faq/?pa...hParamNonConnu

  6. #6
    Expert confirmé
    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Par défaut
    A voir également si la sauvegarde de l'enregistrement se fait correctement avant l'export, ce qui expliquerait que ça fonctionne en débogage pas à pas.

    Essaye de remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunCommand acCmdSaveRecord
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If Me.Dirty then Me.Dirty = False

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Par défaut
    Re-bonjour,


    Merci pour vos conseil , je les ai tous essayé, mais mon problème est resté malgré toutes vos bonne idées.

    1- j'ai tenté de remplacer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunCommand acCmdSaveRecord
    par : If Me.Dirty Then Me.Dirty = False.

    2- j'ai également essayé la solution suivante:
    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
     
        Dim stDocName As String
        Dim Visa As Long
        Dim Sql As String
     
            DoCmd.RunCommand acCmdSaveRecord
     
            Visa = Me.Num_Visa
            stDocName = "Etat_Visa_Exp"
     
            Sql = "SELECT Visa.Num_Visa, Visa.Date, Visa.Num_Dossier,     
                     Visa.Type_carte, Visa.Num_Carte, Visa.Date_Exp_Visa, 
                     Visa.Num_Cours, Visa.Nom_Avocat, Visa.Desc_Proc, 
                     Visa.Timbre_Jud, Visa.Nom_Avocat2, Visa.No_Tel, 
                     Visa.Activation, Visa.Init"
            Sql = Sql + "FROM Visa"
            Sql = Sql + "WHERE (((Visa.Num_Visa)=" & Visa & "))"
     
            DoCmd.OpenReport stDocName, acViewPreview, , acHidden
            Reports(stDocName).RecordSource = Sql
            DoCmd.Close acReport, stDocName, acSaveYes
     
            DoCmd.OutputTo acOutputReport, "Etat_Visa_Exp",     
            acFormatRTF, "C:\Data\Visa.doc"
    Malgré tous ces essais la fenêtre de demande de paramètre continu à apparaître.

    Cependant, (je vais me faire traiter de boulet c'est certain ) j'ai oublié de précisé que visa1 est en fait un sous-formulaire. Les enregistrements, les boutons et tout cela sont sur le sous-formulaire, mais est-ce que ce serait le formulaire qui pourrait causé le problème? Sinon, d'autres idées?

    Merci beaucoup à l'avance

Discussions similaires

  1. Gestion du paramètre ENV dans une requête WMS
    Par gdu26 dans le forum IGN API Géoportail
    Réponses: 7
    Dernier message: 16/09/2013, 18h49
  2. Paramètre dynamique dans une requête
    Par labib23dz dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 09/04/2012, 12h03
  3. Paramètre calculé dans une requête
    Par defluc dans le forum SQL
    Réponses: 8
    Dernier message: 08/05/2010, 10h32
  4. Réponses: 1
    Dernier message: 02/02/2009, 17h12
  5. Passage de paramètres dans une requête imbriquée
    Par DrakkoFR dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/02/2005, 12h46

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