Drucker auswählen

Hallo zusammen

Ich habe in einem Windows NT-Netzwerk verschiedene Drucker mit verschiedenen Schubladen. Sowohl die Drucker als auch die Schubladen werden via Namen angesprochen.

Wie kann ich nun aus Access heraus vor einem Report einen Frage stellen, welcher Drucker bzw. auf welche Schublade gedruckt werden soll?

TIA & Gruss
Martin Bucher, Zürich

Hi

versuch es mal hier
Bsp Obddruck bei www.accessware.de

Wie kann ich nun aus Access heraus vor
einem Report einen Frage stellen, welcher
Drucker bzw. auf welche Schublade
gedruckt werden soll?

TIA & Gruss
Martin Bucher, Zürich

Lieber Woldemar

Vielen Dank für Deine Antwort. Ich kenne die Site „accessware“ und weiss, dass es dort ein Beispiel zum Druckerverwalten gibt.

Leider ist dieses Programm viel zu umfangreich für mich.

Ich suche eine einfache Funktion, welche mir eine Liste aller verfügbaren Drucker zurückgibt und ich wähle dann einen aus.

Nix einstellen und konfigurieren und so …

TIA & Gruss
Martin Bucher, Zürich

Ich suche eine einfache Funktion, welche
mir eine Liste aller verfügbaren Drucker
zurückgibt und ich wähle dann einen aus.

Die Drucker kannst Du mit dieser Funktion bekommen:

Declare Function GetProfileSection Lib „kernel32“ Alias „GetProfileSectionA“ (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long) As Long

Public Function StrSubs(s, Subs, Optional Repl = „“, Optional N = 0)

’ Teilzeichenkette in Zeichenkette durch ersetzen
’ Ersetzung maximal mal ausführen, wenn n > 0, sonst alle ersetzen
’ Funktionswert: Falsch, wenn S = Null

Dim FPos As Integer, I As Integer
Dim Res As String
On Error GoTo Err_StrSubs

If IsNull(E_N(s)) Then StrSubs = Null: Exit Function
If IsNull(E_N(Subs)) Then StrSubs = s: Exit Function

Res = s
I = 0
FPos = InStr(1, Res, Subs)
Do While FPos > 0
I = I + 1
If N > 0 And I > N Then Exit Do
If FPos > 1 Then
Res = Mid(Res, 1, FPos - 1) & Repl & Mid(Res, FPos + Len(Subs), 32000)
Else
Res = Repl & Mid(Res, FPos + Len(Subs), 32000)
End If
FPos = InStr(FPos + Len(Repl), Res, Subs)
'Debug.Print FPos, Res
Loop
StrSubs = Res

Exit_StrSubs:
Exit Function

Err_StrSubs:
MsgBox error$
Resume Exit_StrSubs
End Function

Public Function GetWindowDeviceNames()
Dim Tmp As String, RW, Res, Wert, I
On Error GoTo Er

Res = „“
Tmp = String(1024, 0)
RW = GetProfileSection(„Devices“, Tmp, Len(Tmp))
If RW > 0 Then
Wert = Mid(Tmp, 1, RW)
Res = StrSubs(Wert, Chr(0), „;“, 0)
End If

Ex:
GetWindowDeviceNames = Res
Exit Function

Er:
MsgBox "GetWindowDeviceNames: " & Err.Description
Resume Ex

End Function

Reinhard

Vielen Dank für Deine Antwort.

Aber was macht die Funktion „E_N“ ???

Gruss
Martin Bucher, Zürich

If IsNull(E_N(s)) Then StrSubs = Null:
Exit Function
If IsNull(E_N(Subs)) Then StrSubs = s:
Exit Function

Vielen Dank für Deine Antwort.

Aber was macht die Funktion „E_N“ ???

Du kannst auch Nz nehmen - E_N ist ein bisschen „schöner“:

Function E_N(Arg)

’ Konvertiert Leerstring nach Null

On Error GoTo Er
Select Case VarType(Arg)
Case 8
If Len(Arg) = 0 Then
E_N = Null
Else
E_N = Arg
End If
Case 2 To 7, 11 To 17
E_N = Arg
Case Else
E_N = Null
End Select

Ex:
Exit Function

Er:
MsgBox "E_N: " & Err.Description
Resume Ex

End Function

Reinhard