Autor Thema: Ansichten erstellen und Werte berechnen  (Gelesen 2643 mal)

Offline Belgarion

  • Frischling
  • *
  • Beiträge: 25
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Ansichten erstellen und Werte berechnen
« am: 20.08.02 - 15:34:59 »
Hallo,

Problem 1:
ich möchte per Knopfdruck automatisch eine Ansicht erstellen, in der ich automatisch in der Select-Formel ein Feld als Selektion mit übergebe.
Wie macht man sowas?

Problem 2:
Wenn dies geklappt hat, wie koennte ich dann per DBLookup-Befehl die Werte einer Spalte zusammenzählen und ausgeben? Also eine Spalte mit Beträgen die alle am Tag X sind sollen zusammengezählt und ausgegeben werden. Wie?

Belgarion

« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Signaturen sind doof!

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re: Ansichten erstellen und Werte berechnen
« Antwort #1 am: 20.08.02 - 15:47:55 »
rofl...cool. Genau die wunden Punkte von Notes, die nicht mehr so einfach gehen, wenn es um flexible Ansichtshandhabung geht.

Also: dynamische Ansichten sind in Notes nicht möglich. Es gab immer wieder Versuche, aber die haben alle Haken und Ösen. zB http://searchdomino.techtarget.com/tip/1,289483,sid4_gci836584,00.html

Man verwendet stattdessen Ordner, in die man bestimmte Docs auswählt und anzeigt. Einzige Nachteil: die Spalten der/des Ordners bleiben natürlich gleich, also muß man beim Design etwas aufpassen, daß man sich nicht verfährt. Wie? nur mit Script mir bekannt. Wenn Du also kein Script kannst...hrhrhr...üben *grins*

Zur zweiten Frage:
solche Dinge kann man wunderbar Notes überlassen, indem man nach Tag kategorisiert und Summenspalten einrichtet. Das ist eine Option in der Spalteneigenschaft, 2. Lasche = "Summe" anhaken. Wenn das wiederum nicht ausreicht,
a.) Script für völlige Freiheit beim Erstellen von Reports in Notes (Schleife mit Gruppierungsfunktion)
b.) Export in Excel, vaD für Charts
c.) oder einfache Formeln, die ein par Tage zurückgehen und die Summen aus den dblookup Kategorien ziehen
d.) Java :-))
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline Belgarion

  • Frischling
  • *
  • Beiträge: 25
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re: Ansichten erstellen und Werte berechnen
« Antwort #2 am: 20.08.02 - 16:22:58 »
Okay, mal angenommen ich etstelle jede Ansicht per Hand.

Aber zum 2. Problem:

Also ich will nicht das mir die Ansicht die Summe ausgibt, die Ansicht brauche ich nur zum berechnen. Ich möchte die Summe in einem Masken-Feld haben.

-Und besteht die Möglichkeit in einer DBLookup-Abrfrage zwei Spalten zu berücksichtigen?? Also er soll den Betrag auslesen wenn er zu Müller gehört und zum 22.08.2002.
Geht das?
Wie?

Wenns geht mit Formel-Sprache :D

Belgarion
Signaturen sind doof!

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re: Ansichten erstellen und Werte berechnen
« Antwort #3 am: 20.08.02 - 17:21:47 »
dblookup sucht stets nach dem übereinstimmenden Wert in der ersten, sortierten Spalte einer Ansicht. Damit erübrigt sich Deine Frage, ob man mit dblookup nach zwei verschiedenen Kriterien parallel suchen kann. Klar kann man mit dblookup hintereinander zig Spalten ansprechen, aber immer nur aufgrund des Kriteriums, das Notes in der ersten sortierten Spalte findet.

Normalerweise macht man 1 Ansicht, die in der ersten Spalte den "Müller" enthält.

Als Ergebnis bekommt man zb Müller23.08, Müller24.08 und Müller25.08. zurück (Variablen Rückgabewert vom ersten dblookup).

Nun sucht man in einer 2. Ansicht nach allen Müller2308, Müller2404 und Müller 2508 (erste Spalte sollte schon so zusammengesetzt sein). Sollte mit einer weiteren dblookup Anweisung gehen.

Nur, das ist alles so durch die Brust ins Auge, vaD weil man dadurch meistens unnötig den Ansichtsindex aufbläht (ok, je nach Zahl der Dokumente) und die Handhabung der Rückgabewerte zur weiteren Aufbereitung echt ätzend ist, daß hier Lotus Script wirklich wesentlich besser geeignet wäre.
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline Belgarion

  • Frischling
  • *
  • Beiträge: 25
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re: Ansichten erstellen und Werte berechnen
« Antwort #4 am: 20.08.02 - 18:34:42 »
Oki,


wenn es mit Script besser ist das zu erledigen, ist es aber für einen Script-Newbie denn auch machbar?

Bis auf ein paar Refresh oder Berechnungs-Anweisungen habe ich nämlich noch nix mit Script gemacht.


Belgarion
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Signaturen sind doof!

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re: Ansichten erstellen und Werte berechnen
« Antwort #5 am: 21.08.02 - 02:49:54 »
so, wieder back.

Also mal in Ruhe :-)


Nehmen wir an, Du hast Mitarbeiter, die täglich irgendwelche Umsätze generieren. Jeder Umsatz wird einzeln = je 1 Dokument in Notes festgehalten. Dabei wird der Mitarbeiter, der Umsatz und der Tag erfasst. UND wir lassen das Problem nunmehr außer Acht, daß Mitarbeiternamen in diesem Unternehmen absolut einmalig sind. Form= "Umsatz"

Rambo am
01.01.2002 1000 Euro
01.01.2002 2000 Euro
02.01.2002 3000 Euro

Tiger am
01.01.2002 2000 Euro
01.01.2002 4000 Euro
02.01.2002 8000 Euro

Zampano am
01.01.2002 4000 Euro
01.01.2002 8000 Euro
02.01.2002 16000 Euro



Nun möchtest Du (hast es leider zu wenig erläutert, daher meine Annahme) pro Monat UND Mitarbeiter ein Dokument haben, in dem monatlich alle Umsätze pro Tag kumuliert angezeigt werden. Form= "Report"

Also 3 Dokumente sollen rauskommen:
Rambo
01.01.2002 = 3.000 Euro
02.01.2002 = 3.000 Euro

Tiger
01.01.2002 = 6.000 Euro
02.01.2002 = 8.000 Euro

Zampano
01.01.2002 = 12.000 Euro
02.01.2002 = 16.000 Euro


Die Daten werden stets in maximal 31 Feldern pro Monatsumsatz-Mitarbeiterdokument abgelegt. Je ein Field "DatumX" und ein Field "SummeX" pro Tag. 31 deswegen, da dies der maximalen Anzahl von Monatstagen entspricht. Somit hast Du eine Art Tabelle von 31x2 Tagesfeldern, jeweils Datum und Umsatz-Summe.

Zusätzlich steht im Dokument ein Auswahlfeld, in dem das auszuwertende Monat/Jahr vom User auszuwählen ist, damit Notes weiß, welchen Monat es nun verarbeiten soll.


So, wie nun anhand der Umsatzdokumente die Monats-Auswertungen pro Mitarbeiter generieren und stets updaten?

Schritt für Schritt

1. Step:
User erstellt händisch ein Mitarbeiter Auswertungsdokument und stellt im 2 Auswahlfeldern "Januar" und "2002" ein.

2. Step:
User klickt auf Aktionsbutton "Auswerten"

3. Step:
Nun triggert die Formel im Aktionsbutton los. Keine großartige Formel. Nur ein "command - refresh" auf das Dokument. Warum? Die Maske ist aufgrund der Vielzahl der berechneten Felder auf "manuell aktualisieren" gesetzt. Daher statt "F9" für die User ein eigener Button (DAU Lösung halt *grins*)

4. Step:
Zunächst wird ein internes Feld namens "LISTE" in der Maske gefüllt. Das Feld steht nach den Feldern "Mitarbeitername", "Monat" und "Jahr".
Dieses Feld wird nach der Berechnung alle Umsatzwerte für Mr. Zampano für Jan. 2002 im folgenden String-Format enthalten:
"Zampano~01.01.2002|4000
Zampano~01.01.2002|8000
Zampano~02.01.2002|16000"
GANZ Wichtig: das Feld LISTE muss zwingend Multivalue sein!!!


Wie wird das nun so gefüllt?
Erstelle dazu eine Ansicht, die alle Umsatzdokumente  enthält.

Also unsere wichtige Quellansicht!! 2 Spalten nur!
1. Spalte: Mitarbeitername~Jahr~Monat,
!!! SORTIERT, AUFSTEIGEND !!!
(Mitarbeiter + "~" + @Text(@Year(Datum)) + "~" + @Text(@Month(Datum)))

Bedeutet? Daß im Umsatzdokument 3 Felder dazu existieren müssen, um diese Ansicht so zu füllen=

1. Feld = Mitarbeiter
2. Feld = Datum des Umsatzes als Zeitwert und
3.Feld = Umsatz (kommt später dran)


2. Spalte:  enthält Mitarbeitername~Datum|Umsatz
Spalten-Formel:
Mitarbeiter+ "~" + @Text(Datum) + "|" + @Text(Umsatz)


Soo...die Ansicht hätten wir, das Berechnete Feld "LISTE" im Mitarbeiterdokument für Zampano, Januar 2002 auch. Wie lautet nun die Formel für das Big Feld "LISTE"?

_Key := Mitarbeiter + "~" + @Text(Jahr) + "~" + @Text(Monat);
_UmsatzList := @DbLookup("":"NoCache"; ""; "Umsätze"; _Key; 2);
@If(@IsError(_UmsatzList); ""; _UmsatzList)

Das erzeugt im Feld LISTE folgenden Inhalt:
"Zampano~01.01.2002|4000
Zampano~01.01.2002|8000
Zampano~02.01.2002|16000"




5. Step:
Was machen wir nun mit diesem Multivalue-Inhalt bzw. wie gruppieren wir die Tagesumsätze zu einem Tages Gesamtumsatz und wie bekommen wir diesen Umsatz vom 01.01. und 02.01. in das entsprechende Feld???

Dazu erstellen wir die ersten beiden Umsatz-Reportfelder. Für den 01.01.2002:

Name "Date1" = @Date(Jahr; Monat; 1), Berechnet !
dann steht also drin 01.01.2002. Geschafft. Das war easy.

Das zweite, korrespondierende Feld lautet
"Umsatz1", berechnet und vom Typ Zahl, nicht Multivalue!

Optisch?
Mach halt pro Tag ne Tabellenzeile, am Ende haste also eine Tabelle mit 31 Zeilen und 2 Spalten + eine Kopfzeile für die Spaltenbeschriftung. In Spalte 1 das Datum und in Spalte 2 das Umsatzfeld jeweils (in jeder Zeile).


So, was steht nun als Formel in "Umsatz1" für den 01.01.2002?
_Key := Mitarbeiter + "~" + @Text(Datum1);
_Key1 := Mitarbeiter + "~" + @Text(Datum1) + "|";
_Position := @Member(_Key; @Left(LISTE; "|") ) ;
_return:=@If(_Position > 0;@Right(LISTE; _Key1);"0");
@sum(@texttonumber(@explode(_return)))
Das ist der kumulierte Umsatz vom 01.01.2002  ;D

Übersetzt???
_Key = "Zampano~01.01.2002"
_Key1 = "Zampano~01.01.2002|"
_Position = "1"
_return = "4.000" und "8.000"
und als letzte Zeile = 12.000 als Summe

Die Variable _Key benötige ich, um zu ermitteln, ob es überhaupt einen Umsatz am 01.01. gab.

Dazu übergebe ich sie an _Position, die per @Member rausfindet, ob ein Umsatz eben am 01.01. stattgefunden hat.

Auch wenn ich 10 Umsätze am 01.01. hätte, käme durch die Memberfunction "1" heraus. Wenn es keinen Umsatz gegeben hätte, würde "0" herauskommen.

Das frage ich dann in der nächsten Formelzeile über _Position>0 ab. Wenn es 0 wäre, dann lautet Ergebnis für den 01.01. halt 0 Euro. Sonst die Summe der Umsätze am 01.01.2002.

Die Umsätze bekomme ich über die @Right Anweisung. Diese sucht in dem Multivalue Feld "LISTE" nach dem String "Zampano~01.01.2002|" udn liefert alles rechts davon zurück = den Umsatz eben.


Jo...für die restlichen Tage funzt das genauso die Formel. Tricky wird es nur zum Monatsende, halt wegen 28.-31. und Schaltjahre net vergessen (wie war das mit durch 4 teilbar bzw. noch so ne Ausnahme..egal, streng Deinen Grips ruhig an...*grins*). Hm...mit diesem Verfahren kannst Du natürlich auch weitere Infos übergeben, wie zB Produkttyp. Aber, dann werden die Formeln immer fieser, da man auch mit @subset, @word und erschlag mich tot arbeiten muss. Ieeeehhh


und wenn Du mir net glaubst, dass das alles so klappt, lad halt die R5 .nsf runner: http://www.robertbasic.de/upload/Gliederung.zip



Haken? Hm..wenn es noch die 15K Begrenzung für Textfelder gibt, kann ein zu fleissiger Mitarbeiter das Textfeld LISTE sprengen. Umgehung? Vielleicht Script...schmunzel  8)

Isch habe ferdisch. :P

Warum ich das Ganze gemacht habe, auch wenn Du es wohl kaum verwenden wirst? Nun ja, irgendwie war mir danach, sich mal wieder so richtig im Formelschlamm zu suhlen...herrrlich...mit 1-2-3 hatte ich vor zig Jahren begonnen und immer noch lassen mich diese Formeln nicht los. Zumal, dieses Zeuchs könnte man wunderbar für Zeiterfassungen und anderen Kram prinzipiell verwenden, wenn es um Tagesreports geht *kichert verrückt*

Hat jemand Verbesserungswünsche/vorschläge? Mir schmeckt zB überhaupt nicht, daß für jeden Umsatz ein Record angelegt werden muss. Kann mit der Zeit ziemlich heavy werden diese Ansicht mit Umsätzen, oder? Man sollte eher versuchen, ein Doc pro Tag für alle Umsätze anzulegen. Und dann dieses auswerten.

BELGARION, MEEEENSCH, Du hast es bis zum Ende geschafft? *klopft Belgarion auf die Schulter* Ist wirklich nicht so schwer denke ich, versuchs mal ruhig nachzuvollziehen.

Und weißt Du übrigens - wenn Du die Lösung verwenden kannst - was der übliche Verrechnungspreis ist? Eine Kiste Sekt! *prost*
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline Belgarion

  • Frischling
  • *
  • Beiträge: 25
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re: Ansichten erstellen und Werte berechnen
« Antwort #6 am: 21.08.02 - 14:35:34 »
WOW

Ich bin echt begeistert! Hast du schonmal darüber nachgedacht ein Notes-Entwicklungs Buch zu schreiben?

Werde das gleich heute mal testen.

Many Thx

Belgarion
:-*
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Signaturen sind doof!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz