none
Drucken mit bestimmten Drucker aus ListView

    Frage

  • Ich verwende Access 2010.

    In einem Formular ist ein ListView enthalten. Im ListView sind Drucker enthalten, vergleiche

    social.msdn.microsoft.com/Forums/de-DE/accessde/thread/c5596613-0d84-4108-a54e-7c4adc503f2e

    Ich möchte mit einem Printer, den ich im ListView ausgewählt habe, drucken.

    Hat jemand eine Idee?

    Danke!

    Samstag, 20. Oktober 2012 21:32

Antworten

Alle Antworten

  • Hallo,

    ble1a wrote:

    Ich verwende Access 2010.
    [...]
    Ich möchte mit einem Printer, den ich im ListView ausgewählt habe, drucken.

    FAQ 5.1 Drucker und Druckeinstellungen ändern
    http://www.donkarl.com?FAQ5.1

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Sonntag, 21. Oktober 2012 01:04
    Moderator
  • Leider bringt mich der Hinweis nicht weiter.

    Ich habe ein AktiveX ListView Steuerelement (kein Listenfeld oder Kombobox), indem alle Drucker in der ersten Spalte aufgeführt sind (in der zweiten Spalte findet sich der Druckerzustand).

    Ich möchte durch einen Click in das AktiveX ListView Steuerelement  einen Drucker auswählen.

    Montag, 22. Oktober 2012 09:25
  • Am 22.10.2012 schrieb ble1a:

    Ich habe ein AktiveX ListView Steuerelement (kein Listenfeld oder Kombobox), indem alle Drucker in der ersten Spalte aufgeführt sind (in der zweiten Spalte findet sich der Druckerzustand).

    Und wo genau hapert es jetzt? Wie weit ist der Code? Ist das
    Steuerelement von MS oder von einem 3rd Party Hersteller?

    Ich möchte durch einen Click in das AktiveX ListView Steuerelement  einen Drucker auswählen.

    Das geht im Prinzip genauso wie bei einem Listview oder einer
    Kombobox. Den markierten Eintrag auslesen und den Code aus der FAQ
    benutzen.

    Servus
    Winfried


    Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
    GPO's: http://www.gruppenrichtlinien.de
    Community Forums NNTP Bridge: http://communitybridge.codeplex.com/

    Montag, 22. Oktober 2012 09:39
  • Ich verwende windows 7 und access 2010.

    Ich habe einen ListView Steuerelemente nach den Tipps auf der Seite

    http://www.vbarchiv.net/tipps/details.php?id=1228

    erstellt.

    Durch einen Click in das Listview möchte ich einen Formular ausdrucken.

    Ich habe folgendes probiert:

    Private Sub ListView1_ColumnClick(ByVal ColumnHeader As Object)

    'ursprünglichen Standarddrucker in eine Variable

    Dim strPrinterOld As String

    Dim y As String

    Dim F As FormDim i As LongstrPrinterOld = Application.Printer.DeviceName

    Me.Text31 = ""

    For i = 0 To ListView1.Items.Count - 1

        Me.Text31 = Text31 & ListView1.Items(i) & vbCrLf

    Next i

    ListView1.SetFocus

    Text31.Text = ListView1.ListItems(1).Text

    Me.Text31 = y

    Application.Printer = Application.Printers("y")

    Set F = Forms("Fortschritt")

    F.Printer.Orientation = acPRORLandscape

    'DoCmd.PrintOut

    DoCmd.RunCommand acCmdPrint

    F.Printer.Orientation = acPRORPortrait

    Application.Printer = Application.Printers(strPrinterOld)

    End Sub

    Wenn ich auf den Button klicke, erhalte ich keine Reaktion.

    Der Debugger bringt keine Fehlermeldung.

    Montag, 22. Oktober 2012 10:17
  • Am 22.10.2012 schrieb ble1a:

    Ich verwende windows 7 und access 2010.

    Ich habe einen ListView Steuerelemente nach den Tipps auf der Seite

    http://www.vbarchiv.net/tipps/details.php?id=1228

    erstellt.

    Durch einen Click in das Listview möchte ich einen Formular ausdrucken.

    Kannst Du ein Beispielprojekt uploaden und den Link dahin hier posten?

    Wenn ich auf den Button klicke, erhalte ich keine Reaktion.

    Der Debugger bringt keine Fehlermeldung.

    Probier es doch mit diesem Beispiel:
    http://www.access-im-unternehmen.de/index1.php?id=300&BeitragID=847

    Servus
    Winfried


    Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
    GPO's: http://www.gruppenrichtlinien.de
    Community Forums NNTP Bridge: http://communitybridge.codeplex.com/
    Reg2xml:  http://www.reg2xml.com - Registry Export File Converter

    Montag, 22. Oktober 2012 21:25
  • Danke, Winfried, werde eine Kombobox einbauen und den Code verwenden.
    Dienstag, 23. Oktober 2012 06:53
  • Hallo,

    ble1a wrote:

    Ich habe einen ListView Steuerelemente nach den Tipps auf der Seite

    http://www.vbarchiv.net/tipps/details.php?id=1228

    erstellt.

    Durch einen Click in das Listview möchte ich einen Formular ausdrucken.

    Sieht aus als hattest du 3 Probleme: - Wie wechselt man den Drucker
    - Wie bekommt man den Rueckgabewert des Listview.
    - Wie drucken.

    Ersteres duerfte klar sein, oder?

    Was das ListView angeht, hat es einen bestimmten Grund, warum du das und
    nicht das Listenfeld aus Access einsetzt?

    Letzteres wuerde per Me!DeinListenfeld.Value den Druckernamen liefern.

    Du kannst auf jeden Fall bei schrittweiser Ausfuehrung pruefen, ob der
    erwartete Druckername in Text31 steht.

    Private Sub ListView1_ColumnClick(ByVal ColumnHeader As Object)
    'ursprünglichen Standarddrucker in eine Variable
    Dim strPrinterOld As String
    Dim y As String
    Dim F As FormDim i As LongstrPrinterOld = Application.Printer.DeviceName
    Me.Text31 = ""
    For i = 0 To ListView1.Items.Count - 1
        Me.Text31 = Text31 & ListView1.Items(i) & vbCrLf
    Next i
    ListView1.SetFocus

    Was du mit den folgenden Zeilen bezweckst, erschliesst sich mir nicht
    wirklich (heisst dein Drucker wirklich "y", was steht in Variable y). Du
    solltest den Ansatz aus der FAQ mal ausprobieren. Er kommt mit wesentlich
    weniger Code aus.

    Gruss - Peter


    Mitglied im http://www.dbdev.org
    FAQ: http://www.donkarl.com

    Dienstag, 23. Oktober 2012 15:48
    Moderator
  • Hallo Peter,

    du hast es auf den Punkt gebracht. Es hapert daran:

    "Wie bekommt man den Rueckgabewert des Listview."

    Das Listview brauche ich, weil ich mir auch den Status des Druckers anzeigen lassen will.

    Ich habe den Rat von Winfried befolgt und eine Combobox angelegt. So läuft es.

    Wäre schön gewesen, wenn ich den Rückgabewert aus dem ListView gekriegt hätte.

    Das Beispiel in der FAQ hat den Nachteil, dass im Code der Druckername explicit aufgeführt werden muss.

    Mir wäre eine Variable lieber gewesen. Aber wie gesagt, es läuft.

    Vielen Dank für die Tipps.

    Dienstag, 23. Oktober 2012 21:25
  • Am 23.10.2012 schrieb ble1a:

    Wäre schön gewesen, wenn ich den Rückgabewert aus dem ListView gekriegt hätte.

    Das geht schon.

    Das Beispiel in der FAQ hat den Nachteil, dass im Code der Druckername explicit aufgeführt werden muss.

    Mir wäre eine Variable lieber gewesen. Aber wie gesagt, es läuft.

    Funktioniert natürlich auch mit einer Variablen. Hier etwas Beispielcode:

    Public Function Listfeld_auslesen(frm As Form, ctl As Control)
    On Error GoTo err_Listfeld_auslesen:
    
            Dim varElem As Variant
            Dim strAuswahl As String
    
            For Each varElem In ctl.ItemsSelected
                    If ctl.ItemsSelected.Count > 1 Then
                            ctl.Undo
                            If strAuswahl <> "" Then
                                    strAuswahl = strAuswahl & "; "
                                    strAuswahl = strAuswahl & "'" & ctl.ItemData(varElem) & "'"
                            Else
                                    strAuswahl = strAuswahl & ctl.ItemData(varElem)
                                    strAuswahl = "'" & strAuswahl & "'"
                            End If
                    ElseIf ctl.ItemsSelected.Count = 1 Then
                            strAuswahl = ctl.ItemData(varElem)
                            strAuswahl = "'" & strAuswahl & "'"
                    ElseIf ctl.ItemsSelected.Count = 0 Then
                            Exit Function
                    End If
            Next varElem
            Listfeld_auslesen = strAuswahl
    
    exit_Listfeld_auslesen:
            Exit Function
    err_Listfeld_auslesen:
            MsgBox "Fehler: " & Err.Number & " " & Err.Description & " " & mModName & ".Listfeld_auslesen(frm As Form, ctl As Control)"
            Resume exit_Listfeld_auslesen
    End Function

    Aufgerufen wird die Funktion so:
    Dim strAuswahl as String
    strAuswahl = Listfeld_auslesen(Forms!FAuswahl, lstAuswahl)
    In strAuswahl hast Du dann die Namen der Drucker, sofern mehrere
    angeklickt worden sind. Wenn Du das Multiselect in den Eigenschaften
    deaktivierst, bekommst Du hier logischerweise immer nur einen
    Druckernamen retour. Du brauchst also nur den Namen des Formulars und
    den Namen des Listfeldes angeben.

    Servus
    Winfried


    Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
    GPO's: http://www.gruppenrichtlinien.de
    Community Forums NNTP Bridge: http://communitybridge.codeplex.com/
    Reg2xml:  http://www.reg2xml.com - Registry Export File Converter

    Freitag, 26. Oktober 2012 14:38
  • Hallo Winfried,

    hat etwas gedauert bis ich es hinkriegte. Danke!

    Für alle, die ein AktiveX ListView Steuerelement verwenden wollen,

    Private Sub mit_in_ListView_markierten_Drucker_ausdrucken_Click()

    Dim strPrinterOld As String

    On Error GoTo t:

    Dim i As Long

    Dim f1 As String 

    For i = 1 To ListView1.ListItems.Count - 1

    If ListView1.ListItems(i).Selected = True Then

    f1 = ListView1.ListItems(i)

    Debug.Print f1

    Debug.Print f1

    Set Printer = Printers(f1)

    MsgBox Printer.DeviceName

    Set Application.Printer = Application.Printers(f1)

    'ausgedruckt werden soll ein Formular

    Forms!formularname.SetFocus

    Dim F As Form

    Set F = Forms("formularname")

    F.Printer.Orientation = acPRORLandscape

    DoCmd.RunCommand acCmdPrint

    F.Printer.Orientation = acPRORPortrait

     End If

     Next

    t:

    If Err.Number = 5 Then

    MsgBox "Wählen Sie einen anderen Drucker aus !"

    Exit Sub

    End If

    If Err.Number = 2501 Then

    MsgBox "Sie haben den Druckauftrag abgebrochen."

    Exit Sub

    End If

    End Sub

    Der Code funktioniert nicht für One Note Drucker, deshalb Fehler 5 abgefangen.

    Daher ist es besser, den Vorschlag von Winfried nutzen.

    Mittwoch, 31. Oktober 2012 07:04
  • Am 31.10.2012 schrieb ble1a:

    hat etwas gedauert bis ich es hinkriegte. Danke!

    Für alle, die ein AktiveX ListView Steuerelement verwenden wollen,

    Freut mich für Dich und Danke für die Rückmeldung. ;)

    Servus
    Winfried


    Connect2WSUS: http://www.grurili.de/tools/Connect2WSUS.exe
    GPO's: http://www.gruppenrichtlinien.de
    Community Forums NNTP Bridge: http://communitybridge.codeplex.com/

    Mittwoch, 31. Oktober 2012 19:49