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

VB 6 et antérieur Discussion :

Serveur d'impression en VB6


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Serveur d'impression en VB6
    Bonjour,

    Je souhaite imprimer un datareport vers une imprimante spécifique.

    Je vous explique mon problème, il s'agit d'un programme qui est exécuté sur une station citrix via une session windows générique et il nous est impossible de configurer des imprimantes sur celle-ci.

    Ce programme génère un datareport mais je coince pour l'envoyer sur une imprimante. Forcement en local, je peux l'ouvrir, l'imprimer sur différentes imprimantes configuré sur mon poste etc, etc...

    Je voulais savoir s'il existait une méthode pour forcer une imprimante avec un driver par exemple avec des méthodes de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Printer.Nameserver = "\\STRHNTFS02\STROFF12"
    Printer.Driver = "hp....dll"
    Voir directement depuis le datareport :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Datareport1.printerqueue = "\\STRHNTFS02\STROFF12"
    Voilà 2 jours que je cherche une solution pour ce problème mais je ne trouve aucune solution.

    Merci de votre aide

  2. #2
    Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    J'ai pu m'arranger afin que les imprimantes soit défini sur la station citrix, par contre je n'arrive pas à imprimer ailleur que sur l'imprimante par défaut, pourtant j'utilise ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim X As Printer
    For Each X In Printers
       If UCase(X.DeviceName) = "\\STRHNTFS02\STROFF12" Then
          ' Set printer as system default.
          Set Printer = X
          ' Stop looking for a printer.
          Exit For
       End If
    Next
    Du coup mon imprimante devrait être la bonne, mais avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datareport1.PrintReport
    L'impression sort sur l'imprimante par défaut qui n'est pas celle spécifiée

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 169
    Points
    17 169
    Par défaut
    If UCase(X.DeviceName) = "\\STRHNTFS02\STROFF12" Then
    ' Set printer as system default.
    Set Printer = X
    ' Stop looking for a printer.
    Exit For
    End If
    as-tu pu constater que ta condition était au moins une fois vraie ?
    \\STRHNTFS02\STROFF12 me semble plutôt le chemin ou est instalé l'imprimante, mais pas son nom de partage.

    Sinon,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print X.DeviceName
    dans ta boucle For Each X In Printers pourrais peut être te donner des indications utiles.

    Une possibilité aussi avant la premiere utilisation suite à la selection de l'imprimante essai un Une dernière chose, essais d'instancier ton datareport après la sélection de l'imprimante.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    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
    Dim Prt As Printer
     
        For Each Prt In Printers
     
            If UCase(Prt.DeviceName) = UCase("\\STRHNTFS02\STROFF12") Then
                Dim objNetwork As Object
                Set objNetwork = CreateObject("WScript.Network")
                On Error Resume Next
                objNetwork.SetDefaultPrinter "\\STRHNTFS02\STROFF12"
                objNetwork.Orientation = 1
                objNetwork.PaperSize = 9
                Exit For
            End If
        Next
     
    DataReport1.PrintReport
    Cette solution fonctionne mais cela fonctionnera correctement seulement pour du monotâche monoutilisateur, 10 utilisateurs sur la même session windows qui lance les impressions sur différentes imprimantes, il risque d'y avoir un conflit vu que PrintReport imprime sur l'imprimante par défaut et les papiers risquent de se mélanger.

    J'ai fait le test sur mon poste, 2 boutons pointant chacun sur une autre imprimante, l'application exécutée 2 fois, je clique sur le 1er bouton sur l'un puis le 2e sur l'autre, les impressions partent sur la même imprimante (l'une ou l'autre en fonction de l'ordre selon lequel je les ai pressé).

    Il faudrait que j'arrive à définir l'imprimante au niveau application et non utilisateur.

Discussions similaires

  1. Scanner sur serveur d'impression
    Par kriss_87 dans le forum Périphériques
    Réponses: 3
    Dernier message: 07/10/2006, 16h48
  2. Adresse IP d'un serveur d'impression
    Par fastback dans le forum Hardware
    Réponses: 12
    Dernier message: 03/10/2006, 19h59
  3. Comment Faire un serveur d'impression sous linux !!
    Par pedrosystem dans le forum Applications et environnements graphiques
    Réponses: 6
    Dernier message: 23/03/2006, 10h29
  4. Serveur d'impression sous Debian Sarge
    Par combodrums dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 28/02/2006, 12h48
  5. serveur d'impression "maison"
    Par Eusebius dans le forum Développement
    Réponses: 2
    Dernier message: 29/08/2003, 21h48

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