Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Kiezkicker am 03.02.06 - 15:07:17
-
Hallo,
in einer DB habe ich folgendes vor:
es existieren mehrere Dokumente mit den Feldern Name, Wert1, Wert2, Wert3. Nun möchte ich mehrere Dokumente in der Ansicht markieren und es soll über eine separate Maske, eine in der Maske bestehende Tabelle mit den Feldern der verschiedenen Dokumente befüllt und ausgedruckt werden (@Command[FilePrint]; "Druckmaske").
Beispiel:
Name Wert1 Wert2 Wert3
Jan 5 2 3
Peter 2 4 9
Klaus 4 7 8
Habe bisher nicht sinnvolles gefunden. Ist dieses mit einfachen Mitteln möglich?
Danke im Voraus
-
Definiere "einfache Mittel". ::) :P
-
Das einfachste wäre, hierfür eine Ansicht zu definieren, die man Ausdrucken kann!
Eine echte Tabelle mit Script ist mit einfachen mitteln nicht möglich.
Gruss
Chris
-
Gint es denn die Möglichkeit beim Drucken einer Ansicht über und unter der Ansicht Text zu ergänzen? Bzw. kann man eine Ansicht in eine Maske "einfügen"
-
Ja es gibt seit R5 die Möglichkeit eine Ansicht (als eingebettetes Object) in einer Seite oder Maske einzubetten.
Ich bin mir allerdings hier nicht sicher, ob man das "gut" ausgedruckt bekommt.
-
Hallo zusammen,
habe das gleiche Problem. Mehrere Doks, deren Werte -der Übersicht wegen- in ein Dokument mit einer Tabelle eingestellt werden sollen.
Gibt es da ein "einfaches" Skript? (Bin in Skript noch Anfänger und kann mich durchwursteln, wenn ich einen Anfang habe :-\).
Danke schonmal
Bernd
-
wenn die Länger der Texte einigermassen Konstant ist, dann könnte man das so machen:
1. Maske definieren ("PrintForm" mit der Tabelle, x Felder
Die Felder jeweils: berechnet, Mehrfachwerte, Mehrfachwerte getrennt anzeigen mit "Neue Zeile"
Dann einen Agenten (läuft auf selektierte Dokumente) mit folgendem Script:
Dim ws as New NotesUIWorkspace
Dim ses as New NotesSession
Dim db as NotesDatabase
Dim dc as NotesDocumentCollection
dim printDoc as NotesDocument
Dim doc as NotesDocument
Dim item1 as NotesItem, item2 as NotesItem
Set db = ses.CurrentDatabase
set dc = db.UnporcessedDocuments
set printDoc = new NotesDOcument( db )
printDoc.Form = "PrintForm"
set item1 = New NotesItem( printDoc , "FELD1" )
set item2 = New NotesItem( printDoc , "FELD2" )
For i = 1 to dc.Count
set doc = dc.GetNthDocument( i )
call item1.AppendToTextList( doc.GetItemValue( "Quell-Feldname1" )( 0 ) )
call item2.AppendToTextList( doc.GetItemValue( "Quell-Feldname2" )( 0 ) )
Next
call ws.EditDocument( True, printDoc )
dann hat man das Dokument mit der Tabelle auf dem Screen und muss es nur noch drucken...
HTH
Tode
-
Hallo,
ich habe es mit der eingebetteten Ansicht gelöst, klappt auch super. Gibt es eine Möglichkeit auf die Summer einer Spalte aus dieser Ansicht zurückzugreifen? Soll als Vorgabewert für ein Feld dienen
-
Guckst Du hier: http://atnotes.de/index.php?topic=28405.0
Das ist im Wesentlichen die gleiche Thematik.
Bernhard
-
@tode
Vielen Dank für Deinen Code.
Ich würde gerne alle Dokumente in der Ansicht "Import" abarbeiten, meine Ziel-Felder heißen "Prod" und "Jan".
Ich habe versucht, Dein Skript abzuändern ... Ergebnis = ???
Hier der Code:
Dim ws As New NotesUIWorkspace
Dim ses As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim dc As NotesDocumentCollection
Dim printDoc As NotesDocument
Dim doc As NotesDocument
Dim item1 As NotesItem , item2 As NotesItem
Set db = ses.CurrentDatabase
Set view = db.GetView("Import")
Set doc = view.getfirstdocument
Set printDoc = New NotesDocument( db )
printDoc.Form = "Auswertungsdokument3"
Set item1 = New NotesItem( printDoc , "Prod" )
Set item2 = New NotesItem( printDoc , "Jan" )
Do While dc Is Nothing
Set dc = doc.GetNextDocument ( doc )
Call item1.AppendToTextList( doc.GetItemValue( "PRODBEZ" )( 0 ) )
Call item2.AppendToTextList( doc.GetItemValue( "ERTRAG_JAN" )( 0 ) )
Loop
Call ws.EditDocument( True, printDoc )
Nun erscheinen die Zeilen mit Set item1 / item2 rot und als Fehlermeldung kommt:
"Missing argument to constructor for: NOTESITEM"
Was mache ich falsch?
Bernd
-
Zwei Treffer an einem Tag. Schau hier (http://atnotes.de/index.php?topic=26536.msg168782#msg168782) nach da gibt es so was. Unter Report Vorlagen und Reporting.
-
@VB3Bernd
Set item1 = New NotesItem( printDoc, "Prod", "")
Analog item2
==> Du musst als dritten Parameter einen Wert fuer das "neue" Feld angeben.
==> siehe auch design-Help !
Andreas
-
Danke - so funktionierts :D !!!!
Grüße
Bernd
-
Du machst so ziemlich alles falsch... Code abändern ist schön und gut, aber sau- gefährlich, wenn man nicht versteht, was da passiert:
Zunächst mal: mein code war einfach so dahingepinselt, ohne den Notes- Script- Editor, und da sind nun mal Fehler drin...
1. Fehler
Wie die Fehlermeldung besagt: NotesItem benötigt nicht 2 Argumente wie in meinem Beispiel sondern 3. Mit einem kleinen Blick in die Designer- Hilfe zur Notes- Item- Klasse hättest Du das selbst rausfinden können...
richtig:
set item = new NotesItem( doc , "FELD1" , "" )
2. Fehler
die GetNextDocument- Methode der View- Klasse liefert ein NotesDocument zurück, keine NotesDocumentCollection.
3. Fehler
While dc is nothing
Abgesehen davon, dass Du auf "doc" abfragen solltest, wird diese Schleife nur einmal durchlaufen, nämlich so lange bis doc gesetzt wurde.... Richtig wäre NOT doc is nothing
4. Fehler
bei Deinem Code wird das erste Dokument in der Ansicht übersprungen, weil Du "GetNext..." machst, bevor Du die Felder ausliest.
Also: Wenn schon jemand ausnahmsweise Code postet, dann gilt:
1. Code verstehen
2. Code verstehen
3. Code verstehen
und DANN
4. Code anpassen.
Gruß
Tode
-
@tode
o.k., o.k. - Du hast uneingeschränkt recht :-[
Mein "so funktionierts" hat natürlich nur mit Deinem Code geklappt, meinen habe ich weggeschmissen ...
Ich muss noch viel lernen, trotzdem Danke für die Hilfe.
Bernd
-
Nun habe ich eine weitere Frage. In meiner eingebetteten Ansicht habe ich alle "Bestellungen" der morgigen Tages (@tomorrow) anzeigen lassen. Nun soll das Datum aber vorgegeben werden können. Ist es möglich in der Ansichtsauswahl das Datum, welches in der Maske ausgewählt wurde auszulesen. Meine ersten Versuche scheiterten.
Gibt es sonst eine Möglichkeit das Datum für die Ansichtsauswahl vorzugeben?
Danke im Voraus
-
1. eingebettete Ansicht kategorisieren nach Datum
2. In der Maske: Eingebettete Ansicht -> Einzelne Kategorie anzeigen: Formel: DatumsFeld
3. Feld erstellen, Name "DatumsFeld" , bearbeitbar, und dafür sorgen, dass nach Änderungen im Feld die Maske refreshed wird.
HTH
Tode
-
1. eingebettete Ansicht kategorisieren nach Datum
2. In der Maske: Eingebettete Ansicht -> Einzelne Kategorie anzeigen: Formel: DatumsFeld
3. Feld erstellen, Name "DatumsFeld" , bearbeitbar, und dafür sorgen, dass nach Änderungen im Feld die Maske refreshed wird.
Danke für die detaillierten Antworten!
Eine letzte Frage habe ich noch:
Ist es möglich die Summe der Kategorie in der eingebetteten Ansich anzuzeigen? In der Ansicht ist die Summe aktiviert, aber wahrscheinlich weil die Kategorien ja ausgeblendet werden wird die Summe in der eingebetteten Ansicht nicht angezeigt. Kann man die Summer in die Ansicht bekommen? Oder gibt es eine anderen Lösungsansatz?
Thx
-
Eine Summe bekommst Du (wie Du schon richtig vermutet hast) in einer embedded view nicht angezeigt.
Du kannst aber ein computed for display-Feld in der Maske hernehmen, um mittels @Sum (@dbLookup (...)) Dir die Summe on the fly berechnen zu lassen.
HTH,
Bernhard