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

Windows Forms Discussion :

[VB.NET] Imprimer des états access


Sujet :

Windows Forms

  1. #1
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut [VB.NET] Imprimer des états access
    Salut à tous
    je viens juste de passer sous .NET (ya 3 jours) et je rame à mort
    Dans la faq VB j'ai trouvé ce code (tres simple) qui permet d'acceder à un état d'une base access et de l'imprimer...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim MaDbMat As String
     Dim MesEtats As Access.Application 
    MaDbMat = App.Path & "\MaBase.mdb" 
    Set MesEtats = New Access.Application 
    MesEtats.OpenCurrentDatabase MaDbMat, False
     
    'Pour imprimer un état sans le visualiser :
     
    MesEtats.DoCmd.OpenReport "NomdeMonEtat", acViewNormal
    J'essaye d'effectuer la meme opération avec .NET, et je lutte...j'ai vu que c'était l'acces à la base pouvait se gerer via l'interface de .net (en mode design), mais le code généré m'a parut bien compliqué comparé au 4 lignes du code vb6...
    quelqu'un sait comment gérer (facilement) les impressions d'etats access avec .NET??

  2. #2
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    c'est pareil a peu de choses pres

    recherche: "Print or Preview an Access Report" la dedans:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_ac2003_ta/html/odc_AcAutomateVBNet.asp

    il y a tout, impression, appercu....

  3. #3
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut
    dako, merci!!

  4. #4
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut
    hop alors voila le code que j'ai trouvé, effectivement c'est assez proche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            Dim MaDbMat As String
            Dim MesEtats As New Access.Application
            MaDbMat = "C:\\Test.mdb"
            MesEtats.OpenCurrentDatabase(MaDbMat, False)
     
            MesEtats.DoCmd.OpenReport("T1", Access.AcView.acViewNormal)
    il s'éxécute correctement jusqu'a l'OpenReport, et voila l'erreur renvoyé par le journal d'application de windoz :
    Le service ne peut pas être démarré. System.Runtime.InteropServices.COMException (0x800A089A): Vous devez définir une imprimante par défaut avant d'imprimer ou d'effectuer un aperçu avant impression.
    at Access.DoCmd.OpenReport(Object ReportName, AcView View, Object FilterName, Object WhereCondition)
    at PrinterService.Service1.OnStart(String[] args)
    at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)
    je ne comprend pas bien à quel niveau (et comment aussi ) je dois définir l'imprimante par défault...au niveau du projet? de l'objet access.application? autres..?
    merci

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 652
    Points : 730
    Points
    730
    Par défaut
    Euh, au niveau de la machine je dirais, c'est pas un problème de .NET là :)

    Il n'y a pas d'imprimante par défaut sur ta machine de dév ?

  6. #6
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut
    bah si y a bien une imprimante par defaut sur le pc...j'avais vérifié

  7. #7
    Membre du Club Avatar de bambou
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2004
    Messages : 192
    Points : 69
    Points
    69
    Par défaut
    je pense avoir trouvé la réponse à ma question sur msdn :
    Avec Access97 et Access2000, il est nécessaire que l'utilisateur ait une
    imprimante définie pour visualiser l'état.
    Lorsque l'on ouvre une session Access depuis l'ASP, l'ouverture de la
    session s'effectue non pas sous le compte de l'utilisateur connecté mais
    sous le compte système.
    Typiquement, aucune imprimante n'est définie pour ce compte, ce qui
    explique le message d'erreur.
    Il faut donc définir "manuellement" dans la base de registres les
    informations adéquates.
    Pour cela, procédez comme suit :

    Définir ou utiliser un compte Utilisateur possédant l'imprimante voulue.
    Cette manipulation va créer dans le registre 3 clés définissant
    l'imprimante pour cet utilisateur.
    Ces informations peuvent être reprises telles quelles pour le compte
    système.
    Les étapes suivantes décrivent comment appliquer ces 3 clés au compte
    système :

    Exécuter l'éditeur de base de registres Regedit
    2. Recopier la valeur correspondant à l'imprimante de la clé
    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Devices
    vers la clé HKEY_USERS\.DEFAULT\Software\Microsoft\Windows
    NT\CurrentVersion\Devices
    3. Recopiez la valeur correspondant à l'imprimante de la clé
    HKEY_CURRENT_USER\Software\Microsoft\Windows
    NT\CurrentVersion\PrinterPorts vers la clé
    HKEY_USERS\.DEFAULT\Software\Microsoft\Windows
    NT\CurrentVersion\PrinterPorts
    4. Recopiez la valeur "device" de l'imprimante par défaut de la clé
    HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows
    vers la clé HKEY_USERS\.DEFAULT\Software\Microsoft\Windows
    NT\CurrentVersion\Windows
    je vais vérifier tout ça et je tag 'résolu' ce topic!
    merci as'luikili!

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

Discussions similaires

  1. [VB6]Imprimer un état access à partir de VB (erreur)
    Par ShortcutZ dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 06/07/2011, 21h16
  2. [VB.NET]Afficher des données Access
    Par mael94420 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 05/10/2006, 09h11
  3. Imprimer un état access via ASP
    Par Fablondon dans le forum ASP
    Réponses: 5
    Dernier message: 23/05/2006, 12h25
  4. Imprimé des états report
    Par dahu29 dans le forum Reports
    Réponses: 18
    Dernier message: 09/08/2005, 12h58
  5. imprimer un état access
    Par piemouce dans le forum MFC
    Réponses: 2
    Dernier message: 30/06/2004, 17h04

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