Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Kiezkicker am 03.02.06 - 15:07:17

Titel: Tabelle aus bestehenden Dokumenten erstellen
Beitrag 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
Titel: Re: Tabelle aus bestehenden Dokumenten erstellen
Beitrag von: m3 am 03.02.06 - 15:12:38
Definiere "einfache Mittel".  ::) :P
Titel: Re: Tabelle aus bestehenden Dokumenten erstellen
Beitrag von: smoki am 03.02.06 - 15:14:36
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
Titel: Re: Tabelle aus bestehenden Dokumenten erstellen
Beitrag von: Kiezkicker am 03.02.06 - 15:31:36
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"
Titel: Re: Tabelle aus bestehenden Dokumenten erstellen
Beitrag von: smoki am 03.02.06 - 15:41:21
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.
Titel: Gleiches Problem
Beitrag von: VB3Bernd am 06.02.06 - 13:53:36
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
Titel: Re: Tabelle aus bestehenden Dokumenten erstellen
Beitrag von: Tode am 06.02.06 - 15:47:33
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

NameWert 1[/td
FELD1FELD2

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
Titel: Re: Tabelle aus bestehenden Dokumenten erstellen
Beitrag von: Kiezkicker am 06.02.06 - 16:16:33
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
Titel: Re: Tabelle aus bestehenden Dokumenten erstellen
Beitrag von: koehlerbv am 06.02.06 - 16:21:21
Guckst Du hier: http://atnotes.de/index.php?topic=28405.0

Das ist im Wesentlichen die gleiche Thematik.

Bernhard
Titel: Re: Tabelle aus bestehenden Dokumenten erstellen
Beitrag von: VB3Bernd am 06.02.06 - 16:50:40
@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
Titel: Re: Tabelle aus bestehenden Dokumenten erstellen
Beitrag von: Thomas Schulte am 06.02.06 - 17:01:34
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.
Titel: Re: Tabelle aus bestehenden Dokumenten erstellen
Beitrag von: ascabg am 06.02.06 - 17:04:33
@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
Titel: Re: Tabelle aus bestehenden Dokumenten erstellen
Beitrag von: VB3Bernd am 06.02.06 - 17:34:49
Danke - so funktionierts   :D   !!!!
Grüße
Bernd
Titel: Re: Tabelle aus bestehenden Dokumenten erstellen
Beitrag von: Tode am 06.02.06 - 17:53:02
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
Titel: Re: Tabelle aus bestehenden Dokumenten erstellen
Beitrag von: VB3Bernd am 06.02.06 - 18:02:32
@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
Titel: Re: Tabelle aus bestehenden Dokumenten erstellen
Beitrag von: Kiezkicker am 13.02.06 - 14:44:58
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
Titel: Re: Tabelle aus bestehenden Dokumenten erstellen
Beitrag von: Tode am 13.02.06 - 16:28:14
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

Titel: Re: Tabelle aus bestehenden Dokumenten erstellen
Beitrag von: Kiezkicker am 14.02.06 - 17:14:12
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
Titel: Re: Tabelle aus bestehenden Dokumenten erstellen
Beitrag von: koehlerbv am 14.02.06 - 17:24:34
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