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 :

Imprimer un Etat d'Access via VB, en fournissant le parametre de l'etat?


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Points : 119
    Points
    119
    Par défaut Imprimer un Etat d'Access via VB, en fournissant le parametre de l'etat?
    Bonjour,

    la FAQ Access indique bien comment imprimer l'état, mais le mien contient un paramètre. A son ouverture, un numero est demandé par rapport auquel l'etat correspondant est imprimé.

    J'ai bien vu que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AppAccess.DoCmd.OpenReport NomEtat, acViewNormal
    permettait l'ajout de filtre et condition Where mais je n'arrive pas à utiliser mon parametre là dedans.

    Mon etat fait appel à une requête SQL de ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT [...]
    HAVING (((CHANTIERS.Identifiant)=[Numéro du chantier ?]));
    Le paramètre demandé est [Numéro du chantier ?] (correspondant au champ Identifiant de la table CHANTIERS).

    Comment imprimer depuis VB l'état correspondant à un chantier précis sans avoir à le saisir dans l'inputbox qui s'affiche par Access?

    Bonne soirée

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Il y a plusieurs façons de régler le pb, suivant ce que tu peux modifier ou pas.
    En voici une sans modifier la requête.

    Dans l'état, ajouter une procédure évènementielle sur ouverture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Report_Open(Cancel As Integer)
    If Not IsNull(Me.OpenArgs) Then
        Me.RecordSource = Replace(Me.RecordSource, "[Numéro du chantier?]", Me.OpenArgs)
    End If
    End Sub
    Et la procédure d'appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AppAccess.DoCmd.OpenReport NomEtat, acViewNormal, , , , NumChantier
    où NumChantier est un numérique représentant le numéro de chantier.

    Si tu as une version d'access qui permet le passage d'OpenArgs. Sinon, il y a d'autres moyens.

    Bon courage,

    PGZ

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 346
    Points : 119
    Points
    119
    Par défaut
    Merci pour la réponse,

    oui je pense que ça peut marcher mais je ne suis pas sur de bien comprendre où je dois placer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Report_Open(Cancel As Integer)
    If Not IsNull(Me.OpenArgs) Then
        Me.RecordSource = Replace(Me.RecordSource, "[Numéro du chantier?]", Me.OpenArgs)
    End If
    End Sub
    Premierement, lors de AppAccess.DoCmd.OpenReport, il ouvre Access et bloque sur "If Not IsNull(Me.OpenArgs) Then" en m'ouvrant la boite de debogage (il ne connait pas .OpenArgs).
    J'ai ouvert en mode création mon Etat, cliqué sur Code et collé la Sub Report_Open dans le module.
    Je pense qu'il faudrait plutôt le mettre dans le code de la requête associée à cet Etat mais je ne vois pas trop comment faire...

    Deuxièmement, AppAccess.DoCmd.OpenReport ne prend que 3 arguments, donc pourquoi places tu "NumChantier" en 6è argument ?

Discussions similaires

  1. etat imprimé recto verso depuis access
    Par panro dans le forum IHM
    Réponses: 1
    Dernier message: 30/06/2008, 16h22
  2. Réponses: 2
    Dernier message: 11/12/2007, 09h38
  3. Imprimer Etat [vba-access 2007]
    Par jpo dans le forum IHM
    Réponses: 2
    Dernier message: 26/02/2007, 10h49
  4. Imprimer le Formulaire en cours via un Etat
    Par PhRey dans le forum IHM
    Réponses: 11
    Dernier message: 06/12/2006, 17h31
  5. Imprimer un état access via ASP
    Par Fablondon dans le forum ASP
    Réponses: 5
    Dernier message: 23/05/2006, 12h25

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