Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Ming am 20.09.04 - 19:52:13
-
Mein Druckproblem unter LoNo:
Über eine Schaltfläche sollen alle über eine Maske befüllten Ansichten incl. derer Datensätze automatisch markiert und ausgedruckt werden ohne die jeweiligen Ansichten zuvor zu öffnen.
Sprich einen Gesamtreport erstellen.
Nach stundenlanger Recherche im Internet und LoNo-Foren komme ich einfach nicht weiter. Ich möchte kein AddOn-Produkt wie Notes To Paper kaufen. Geht das nicht irgendwie auch mit LN direkt über ein Script?!
-
über eine Schaltfläche sollen alle über eine Maske befüllten Ansichten incl. derer Datensätze automatisch markiert und ausgedruckt werden ohne die jeweiligen Ansichten zuvor zu öffnen.
Ehrlich gesagt verstehe ich nicht wirklich was Du willst? Was verstehst Du über eine Maske befüllten Ansichten bzw. Datensätze?
In der Notes-Welt gibt es Ansichten, Masken, Dokumente und Felder und wenn Du diese Begriffe verwendest dann wird das ganze sicherlich klarer...
-
Du könntest z.B. durch eine View loopen und mit set uidoc = uiws.editdocument(docCurrent) das BackendDoc als UIDocument setzen.
Zum Drucken selbst kannst Du die Print Methode der NotesUIDocument-Klasse verwenden.
Oder Du nimmst die Print - Methode der notesUIView - Klasse.
-
Na ja über Print ist ja ganz nett..aber nur wenn die Ansicht geöffnet ist..bzw in der Ansicht per Maus manuell die Datensätze selektiert werden alles kein Problem. Die DB besitzt jedoch ca. 25 Ansichten! Es ist für mich etwas schwierig diese Problem zu lösen, da ich kein Proggy bin...ein Autodidakt wühlt sich so durch die Hilfestellungen von LoNo und diesem Forum..
-
Nö, Du kannst ja per Script eine (oder mehrere) Views abarbeiten.
z.B.
Set doc = view.getfirstdocument
while Not (doc Is Nothing)
Set uidoc = uiws.editDocument(false, doc, true)
Call uidoc.print
Call uidoc.close
Set doc = view.GetNextDocument(doc)
wend
-
... da ich kein Proggy bin...
Ich verstehe sowas nach wie vor nicht: Kein Programmierer, aber programmieren wollen ... Bei wem lässt Du Deine Zähne behandeln, wer war Dein Fahrlehrer, wo lässt Du Dein Auto reparieren ?
Bernhard
-
Heee, enttäusch uns nicht, wo ist denn dein berühmtes Zitat...
Notes wurde nicht zum drucken... etc. ;D
Ich verstehe sowas nach wie vor nicht: Kein Programmierer, aber programmieren wollen ... Bei wem lässt Du Deine Zähne behandeln, wer war Dein Fahrlehrer, wo lässt Du Dein Auto reparieren ?
Bernhard
-
Danke TMC for your Commentation...Ergänzung: Anscheinend sind einige Kommentatoren hier aufgrund ihrer unqualifizierten Kommentare auf ihr Kleinhirn gefallen...bisher war ich es gewohnt, das man hier NETT miteinander umgeht....naja...es menschelt halt...lol
-
Anscheinend sind einige Kommentatoren hier aufgrund ihrer unqualifizierten Kommentare auf ihr Kleinhirn gefallen...bisher war ich es gewohnt, das man hier NETT miteinander umgeht....naja...es menschelt halt...lol
Obicht, Ming ! Nicht beleidigend werden ! Oder hat Dich jemand beleidigt ?
Vielleicht hätte man es weniger sarkastisch schreiben können:
Notes kann eine derart "user-specific action" nicht von alleine ausführen.
Mit Notes kann man sowas aber ohne weiteres machen.
Dazu darf man aber kein "kein Proggy" sein.
Ich werde mir auf jeden Fall Mühe geben, meinen Sarkasmus mehr zu zügeln. Das "Ich will etwas, was ich nicht kann" und die Aufforderung an andere, das auszubügeln, nerven mich aber, weil es an keiner Stelle zu etwas führt.
Wenn Du lernen willst, wie "Notes tickt" und lernen willst, für Notes zu programmieren, dann bist Du hier an der richtigen Stelle. Versprochen !
Bernhard
-
Nett...es geht doch...Spass bei Seite....ich weiß wie LN funzt...ich habe einige DB´s aufgebaut und sie laufen prächtig...aber LN hat Grenzen...dazu zählen nun mal die Druckroutinen. Und zum Thema Wissensmanagment, so sehe ich dieses Forum, hat nichts mit "Macht mal Leut isch han ein Problem" zu tun.
O.K. Ich lass mich mal überraschen.
Also zur Verdeutlichung was ich nicht realisiert bekomme:
In einer Maske sind Datenfelder eingebunden. Über verschiedene Ansichten werden die jeweiligen Datenfelder selektiert angezeigt(Spalten).
Es werden neue Datensätze erstellt und Datenfelder befüllt.
Es sollen nun alle Ansichten und deren Datensätze/Datenfelder automatisch per Schaltflächenclick in einer Rahmendarstellung(so ist die DB aufgebaut) markiert und sortiert werden, ohne die Ansichten zu öffnen und anschließend ausgedruckt werden. Ich hoffe, man kann mir folgen wie das Problem zu verstehen ist.
-
Es sollen nun alle Ansichten und deren Datensätze/Datenfelder automatisch per Schaltflächenclick in einer Rahmendarstellung(so ist die DB aufgebaut) markiert und sortiert werden, ohne die Ansichten zu öffnen und anschließend ausgedruckt werden. Ich hoffe, man kann mir folgen wie das Problem zu verstehen ist.
Nein, ich kann nicht folgen. Ansichten haben keine "Datensätze / Datenfelder", sie stellen Feldinhalte aus Dokumenten dar oder auf Dokumentinhalten berechnete Inhalte.
Markiert und sortiert ? Das gehört erläutert.
Willst Du alle Docs der DB ausdrucken ? Das ginge nur im FrontEnd (und dazu müsste Deine DB gar keine Ansichten haben), aber nicht in R5, da das dauernde Öffnen (,Drucken) und Schliessen der Docs nicht funktioniert.
Im Backend drucken geht prinzipiell nicht (ohne Zusatztools).
Warum machst Du nicht einfach eine Ansicht, die alle Deine zu druckenden Docs anzeigt und dann einen Button mit @Commands ? Das würde funktionieren.
Bernhard
-
Nein, ich kann nicht folgen.
...und ich dachte schon ich wär wieder der einzige ders nicht kapiert hat.
-
Ich hab es mal versucht anhand eines fiktiven Beispiels bildlich darzustellen.
-
Du möchtest also Ansichten drucken. Die Ansichten basieren auf 1 - n Feldern der Grundgesamtheit aller Felder der den Dokumenten zugrundeliegenden Maske (n).
Grundsätzlich kannst du jedes Dokument drucken, egal in welcher Ansicht es sich befindet. So wie ich es verstanden habe, willst du aber die Ansichten drucken. Und die sind unterschiedlich aufgebaut. Ist wohl nicht unmöglich, mir fällt aber spontan keine Lösung ein ...
Das ist nicht ganz trivial; du musst zunächst einmal herausfinden, wie die zu druckende Ansicht aussieht ( welche Felder der Maske werden verwendet ) Dann musst du die Dokumente der Ansicht anhand der View Selection aus der Grundgesamtheit aller in der Datenbank verfügbaren Docs filtern und gem. des Ansichtenaufbaus die betreffenden Felder ausdrucken.
So in etwa.
Soweit meine 2 Cent
-
Wenn wirklich der Inhalt der Ansicht gedruckt werden soll (im Sinne von "die Ansicht") und keine Dokumente, folgende definitive Aussage:
Da Notes nicht im Backend drucken kann, ist es vollkommen unmöglich, Ansichten zu drucken, ohne diese hierzu vorher im Frontend zu öffnen.
Amen.
Bernhard
PS: Oder wir erfahren doch noch, dass etwas ganz anderes gedruckt werden soll und das Herr Ming sich hierfür auch in die Programmiererei einarbeiten würde ...
-
Nun ja, da ich die Db aufgebaut habe, kenne ich natürlich die Felder und Ansichten...aber wie Du schon gesagt hast, geht es leider nur im Frontend-Bereich..und nur durch manuelles markieren der Dokumente in der geöffneten Ansicht werden alle Dokus gedruckt.
Irgendwie hab ich das Gefühl, wohl doch so ein Tool wie NotesToPaper beschaffen zu lassen. Ich dank Euch erst mal für eure Kommentare.
-
Die Frage ist immer noch, was ist der Sinn eines solchen Stunts ? Mir ist bisher noch nie in den Sinn gekommen, nicht sichtbare Views auzudrucken ...
-
Und jetzt ist immer noch nicht die Frage beantwortet: Willst Du ANSICHTEN oder DOKUMENTE drucken ? Kannst Du diese einfache Frage nicht einfach mal beantworten ?
Bernhard
-
Alle erzeugten Dokumente!!!!!!!!!!!!!!!!!
-
Also einfach eine Ansicht aufrufen, alle doks. anwählen und diese dann drucken??
Das geht doch sogar mit @Command.
Da gibt es ein @Command([ViewChange]), ein @Command([EditSelectAll]) usw. würde das nicht ausreichen??
Boris
-
Diese Möglichkeit kommt meinen Vorstellungen schon recht nahe.
Habe dazu eine neue Ansicht (Druckansicht) erstellt.
In der Menueleiste habe ich eine Schaltfläche mit dem u.a. LN-Script eingebunden.
Nach Aktivierung wird ein Auswahlfenster angezeigt, wo man die jeweilige Ansicht auswählen kann um dann die Dokumente aus der DB automatisch in eine Excel-Tabelle einzubinden. Die Excel-Zellen werden automatisch angepasst. Danach kann man nun einen vernünftigen Druckauftrag erstellen.
Einziger Manko: Ich hätte es gerne auf der Word-Plattform.
Wer kennt sich mit diesen Portierungen aus? :-(
Das Script ist nicht auf meinem Mist gewachsen.
Sub Click(Source As Button)
Dim Session As New NotesSession ,db As NotesDatabase
Dim sourceview As NotesView,sourcedoc As NotesDocument
Dim dataview As NotesView, dc As NotesDocumentCollection
Dim datadoc As NotesDocument, maxcols As Integer
Dim WS As New Notesuiworkspace
Dim ViewString As String, Scope As String, GetField As Variant
Dim C As NotesViewColumn, FieldName As String, K As Integer,N As Integer
Dim xlApp As Variant, xlsheet As Variant, rows As Integer, cols As Integer
Dim nitem As NotesItem , entry As NotesViewEntry, vwNav As NotesViewNavigator
Dim ShowView() As Variant, i As Integer, VList As Variant, ColVals As Variant
Set db = session.CurrentDatabase 'link to current database
'fetch then display a list of views in the database
Vlist= db.views
K=Ubound(Vlist) 'get size of list
Redim Preserve ShowView(K)
N=-1
For i = 0 To K
If Len(Vlist(i).Name) >0 Then
FieldName=Trim(Vlist(i).Name)
If Mid(Fieldname,1,1) <>"(" Then 'do not show hidden views
N=N+1
ShowView(N) = FieldName
End If
End If
Next i
Redim Preserve ShowView(N)
'now sort the list - by default views are listing in the order that they were created
For i=0 To N
For K=i To N
If ShowView(i) > ShowView(k) Then
FieldName=ShowView(i)
ShowView(i) = ShowView(k)
ShowView(k)=FieldName
End If
Next k
Next i
viewstring= ws.Prompt(PROMPT_OKCANCELLIST,"Liste der Ansichten","Wählen Sie eine Ansicht","",ShowView )
If Len(viewstring)=0 Then Exit Sub
'ViewString ="Dan's View"
Set dataview = db.getview(ViewString) 'get selected view
Set vwnav= dataview.createViewnav()
rows = 1
cols = 1
maxcols=dataview.ColumnCount 'how many columns?
Set xlApp = CreateObject("Excel.Application") 'start Excel with OLE Automation
xlApp.StatusBar = "Generiere Arbeitsblatt. Bitte warten..."
xlApp.Visible = True
xlApp.Workbooks.Add
xlApp.ReferenceStyle = 2
Set xlsheet = xlApp.Workbooks(1).Worksheets(1) 'select first worksheet
'worksheet title
xlsheet.Cells(rows,cols).Value ="Ansicht: " + ViewString + ", aus Datenbank: " + db.title +", Auszug vom: " + Format(Now,"mm/dd/yyyy HH:MM")
xlApp.StatusBar = "Generiere Überschriften. Bitte warten..."
rows=2 'column headings starts in row 2
For K=1 To maxcols
Set c=dataview.columns(K-1)
xlsheet.Cells(rows,cols).Value = c.title
cols = cols + 1
Next K
Set entry=vwnav.GetFirstDocument
rows=3 'data starts in third row
Do While Not (entry Is Nothing)
For cols=1 To maxcols
colvals=entry.ColumnValues(cols-1) 'subscript =0
scope=Typename(colvals)
Select Case scope
Case "STRING"
xlsheet.Cells(rows,cols).Value ="'" + colvals
Case Else
xlsheet.Cells(rows,cols).Value = colvals
End Select
Next cols
xlApp.StatusBar = "Importiere Daten - Dokument " & rows-1 '& " of " & dc.count & "."
rows=rows+1
Set entry = vwnav.getnextdocument(entry)
Loop
xlApp.Rows("1:1").Select
xlApp.Selection.Font.Bold = True
xlApp.Selection.Font.Underline = True
xlApp.Range(xlsheet.Cells(2,1), xlsheet.Cells(rows,maxcols)).Select
xlApp.Selection.Font.Name = "Arial"
xlApp.Selection.Font.Size = 9
xlApp.Selection.Columns.AutoFit
With xlApp.Worksheets(1)
.PageSetup.Orientation = 2
.PageSetup.centerheader = " " 'Hier kann man eine Titel für den Ausdruck vorgeben
'.Pagesetup.RightFooter = "Seite &P" & Chr$(13) & "Datum: &D"
.Pagesetup.CenterFooter = ""
End With
xlApp.ReferenceStyle = 1
xlApp.Range("A1").Select
xlApp.StatusBar = "Import aus Lotus Notes abgeschlossen."
'xlapp.ActiveWorkbook.saveas "c:VX" + Trim(Format(Now,"yyy")) 'save with generated name
dataview.clear
Set xlapp=Nothing 'stop OLE
Set db=Nothing
End Sub
-
Hi,
hier (http://www.free.dominoserver.de/computer/noteslibrary.nsf/d2d59a3d7fc73a2bc1256a6900638352/331dd66d2239a1b2c1256dc50038f49e!OpenDocument) findest du generelle Hinweise wie man Notes-Daten nach Word bekommt.
Ausserdem gibt's hier im Forum eine ganze Menge Threads dazu. Bemüh' mal die Suche.
In der Sandkiste gibt's auch Beispiele zu em Thema. Auch da sollte was dabei sein.
Aber mal ganz dumm gefragt, was spricht denn gegen Excel? ???
Axel
-
Die Geschäftsführung! You know what i mean....
-
Hi,
I know what you mean, aber...
Wenn du in Word das Ganze auch in Tabellenform haben willst ist das aber aufwändiger als in Excel.
Auch eine Geschäftsleitung kann man überzeugen.
Axel