Das Notes Forum
Lotus Notes / Domino Sonstiges => Companion Products => Thema gestartet von: Harald Wendt am 30.01.08 - 08:56:13
-
Hallo miteinander,
ich habe da ein Problem :-: mit dem nachfolgenden Script, wenn der Drucker nicht lokal angeschlossen ist. Dann habe ich die EierUhr und das war es denn.
Gedruckt werden soll eine formatierte Liste von Teilnehmern.
Ich habe da mit Escape-Sequenzen zur Druckerinitialisierung gearbeitet, da ich sonst keinen vernünftigen Ausdruck - wie gewünscht/erforderlich - realisieren konnte.
Meine Frage: gibt es eine Möglichkeit, dass Notes zuvor feststellen kann, ob ein lokaler Drucker angeschlossen ist ?
On Error Resume Fehler
Dim session As New notessession
Dim wks As New NotesUIWorkspace
Dim Doc As NotesDocument
Dim db As NotesDatabase
Dim FileName As String
Dim DateiName As String
Set uidoc = wks.CurrentDocument
Set session = New NotesSession
Set db = Session.Currentdatabase
Set Doc = wks.CurrentDocument.Document
FieldList=Evaluate(|Teilnehmer2_2|,doc)
Dim TempFile As Variant
Redim TempFile (0 To Ubound(Fieldlist))
A = -1
Forall Data0 In Fieldlist
Data3=""
Data2=""
Data1=""
A = A +1
X = Instr(Data0," ") 'das 1.Leerzeichen im Text ermitteln = Vorname
Data1 = Mid(Data0,1,X-1) 'Vorname = Text bis zum Leerzeichen
Data2 = Mid(Data0,X+1,Len(Data0)) 'Nachname = Text ab Leerzeichen
'mal sehen, ob im Nachnamen noch ein Leerzeichen enthalten ist
X = Instr(Data2," ") '3.
'falls Ja, dann
If X > 0 Then
Data3 = Mid(Data2,X+1,Len(Data2))
Data2 = Left(Data2,X-1)
End If
'Zusammensetzen des neuen Textes (Nachname, Vorname)
If Data3 > "" Then
Data0 = Data3+", "+Data1+" "+Data2 'Nachname, Vorname1 + Vorname2
Else
'wenn Data3 nichts enthält
Data0 = Data2+", "+Data1 'Nachname, Vorname1
End If
TempFile(A) = Data0
End Forall
Call QuickSort(TempFile)
Call doc.ReplaceItemValue("Teilnehmer2_2",SortedArray)
FieldList=Evaluate(|Teilnehmer2_2|,doc)
SpacesUnderLine = "_______________________________________________________________________"
Open "PRN" For Output As #1
Print #1, Chr$(027);Chr$(037);Chr$(045);Chr$(049);Chr$(050);Chr$(051);Chr$(052);Chr$(053);Chr$(088)
Print #1, Chr$(027);Chr$(040);Chr$(057);Chr$(085)
Print #1, Chr$(027);Chr$(040);Chr$(115);Chr$(051);Chr$(066)
Print #1, doc.ProductArea(0)
Print #1 , doc.title_(0)
Print #1, "am "+Cstr(doc.Date__1(0) )
Print #1, Chr$(13)
Print #1, Chr$(13)
Print #1, Chr$(13)
Forall Data In Fieldlist
Temp = Data + Mid(SpacesUnderLine,1, (Len(SpacesUnderLine)-Len(Data)) )
Print #1, Temp
Print #1, Chr$(13)
End Forall
Print #1, Chr$(027);Chr$(037);Chr$(045);Chr$(049);Chr$(050);Chr$(051);Chr$(052);Chr$(053);Chr$(088)
Close #1
uidoc.refresh
Exit Sub
Fehler:
End Sub
Gruß Harald
-
Der junge Mann mit der Leseschwäche (http://atnotes.de/projekte/bp/team/tmc/_forumsregeln/rules001.html#23) hat mitlerweile eine Lösung gefunden (http://www.dominoforum.de/modules/newbb/viewtopic.php?topic_id=17642&forum=47&post_id=100105#forumpost100105).
-
Dann wollen wir die hier auch mal reinhängen:
Declare Function GetProfileString Lib "Kernel32" Alias "GetProfileStringA" (Byval lpAppName As String, Byval lpKeyName As String, _
Byval lpDefault As String, Byval lpReturnedString As String, Byval nSize As Long) As Long
def$ = String(128, 0)
di = GetProfileString("WINDOWS", "DEVICE", "", def$, 127)
Print Trim(def$)
es kommt ein String zurück, in dem an erster Stelle der Drucker steht. Beginnt der mit "\\" handelt es sich in der Regel um einen Netzwerkdrucker. An 3. Stelle Steht die Schnittstelle (z.B. LPT1, LPT2 usw.).
-
Cool - mal wieder ein Doppelposting ...
Die Antwort von Dirk ist hervorragend. Irgendwann wird man das sicher auch brauchen und braucht nicht mehr suchen.
Und das Problem von Harald hat m.E. nichts mit Notes zu tun. Dem ist es bei passenden Einstellungen egal, wie der Drucker seine Daten kriegt: Parallel, USB, IP oder sonstwas. Den Fehler müsste man auf OS-Ebene suchen (ich drucke auch auf Drucker, die sonstwie angeschlossen sind und hatte noch nie Probleme).
Bernhard
-
... ich denke das wäre eher bei "Companion & COM" aufgehoben - ich verschieb's