Autor Thema: @column  (Gelesen 9514 mal)

Marie

  • Gast
@column
« am: 15.10.10 - 21:52:51 »
Hallo Leute,

ich habe eine Ansicht mit 5 Spalten. In einer Maske lese ich in 5 verschiedenen Feldern die Summen mit folgender Formel jeweils aus:

@Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";4))

Jetzt möchte ich in einem weiteren Feld eine durchschnittsergebnis mit diesen werten berechnen.

Kann mir jemand helfen, da die felder sich irgendwie nicht berechnen lassen...

Vielen Dank schonmal
« Letzte Änderung: 30.10.10 - 12:45:55 von Marie »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: @column
« Antwort #1 am: 15.10.10 - 23:41:55 »
Meinst Du den Durchschnitt der 5 Summen?

FIELD Summe1 := @Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";1));
FIELD Summe2 := @Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";2));
FIELD Summe3 := @Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";3));
FIELD Summe4 := @Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";4));
FIELD Summe5 := @Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";5));
(Summe1 + Summe2 + Summe3 + Summe4 + Summe5) / 5

Die ersten 5 Zeilen kannst Du weglassen, wenn die schon in den Feldformeln enthalten sind.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: @column
« Antwort #2 am: 16.10.10 - 01:05:21 »
Peter, meinst Du wirklich, dass jemand mit Notes-Programmierung beauftragt ist, der nicht mal in der Lage, das arithmetische Mittel zu berechnen. Ich weigere mich, das zu glauben.
Wenn ich allerdings
Zitat
... sich irgendwie nicht berechnen lassen ...
lese (was ich schon einmal als vollkommen ungeeignet für Fragen in Foren angemahnt habe), dann ahne ich schlimmes.

Aber vielleicht geht es ja doch um mehr? Den Median, das geometrische Mittel oder das harmonische? Oder das quadratische Mittel?
Aber das kann nur Marie klären.

Peter, an Deinem Konstrukt noch eine Kritik im Sinne aller, die diesen Thread vielleicht irgendwann einmal entdecken: Es fehlt die Prüfung, ob die Bildung von Summe1 .. Summe5 überhaupt eine Zahl ergeben (kann ja auch in die Hose gehen, nicht wahr?). Der gute Programmierer schaut auch in einer Einbahnstrasse nach links *und* nach rechts, daher muss er hier auf @IsNumber prüfen. Gerade Anfängern sollte das helfen, bevor sie irgendwann einmal böse auf die Nase fallen.

@Marie: Stelle bitte durchdachte Fragen. Die korrekte Antwort auf Deine Frage
Zitat
In einer Maske lese ich in 5 verschiedenen Feldern die Summen mit folgender Formel jeweils aus:
@Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";4))
lautet:
@Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";4))

Es ist nicht einzusehen, dass freiwillige Helfer wie Peter und viele andere (ich schliesse mich da ein!) erst lange nachdenken müssen, um Dein Problem bzw. das Deines Arbeitgebers zu ergründen.

Bernhard

PS: Und kommt nicht wieder mit sowas wie
... Einige in diesem Forum reden ja immer nur und scheinen sich als Edle Ritter zu verstehen, die die Welt der Foren "säubern" wollen...
Wir wollen helfen, aber dazu braucht es auch jeweils den Gegenpart.
« Letzte Änderung: 16.10.10 - 01:09:53 von koehlerbv »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: @column
« Antwort #3 am: 16.10.10 - 07:51:12 »
@Bernhard

Ich gebe Dir völlig Recht mit der Fehlerprüfung. In Forumeinträgen lasse ich die i.d.R. weg, damit die nicht von dem wesentlichen Inhalt ablenken. Eigentlich setze ich voraus, dass das dann jeder selber hinzufügt (ist vielleicht eine falsche Annahme).

Normalerweise mache ich das so:

_tmp := @MeineFormel;
@If (@IsError (_tmp); Alternativwert; _tmp)

@Marie

Falls Du den Durchschnitt der Spaltenwerte pro Dokument errechnen willst, solltest Du eine sechste Spalte einfügen, Wert 1. @Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";6)) ist dann die Anzahl Dokumente, damit müsstest Du dann alles ausrechnen können.

Aus Performancegründen würde ich diese Formel aber nicht in jedes Feld schreiben (sonst holst Du Dir fünf mal die Anzahl der Dokumente), sondern die Felder als berechnet beim Anlegen einstellen und nur eines der Felder berechnen und darin alle anderen Felder wie in meinem ersten Post setzen.

Ach ja, und das mit den edlen Rittern war wirklich nicht in Ordnung ...

Marie

  • Gast
Re: @column
« Antwort #4 am: 16.10.10 - 14:29:28 »
Hallo Peter,

vielen Dank schonmal für deine Antwort.

Also ich erkläre es die Sache nochmal anders, da ich schon etwas weiter gekommen bin.

Ich habe eine Spalte: Auftragssumme,
eine mit den gesamten Kosten
und eine mit den gesamten Stückzahlen
und eine mit den Listenpreisen.


Ich möchte jetzt im header der Datenbank eine eingefügte Maske haben, in den der Durchschnittspreis, die gesamt verkauften Anlagen, der durchschnittliche Rabatt und der durchschnittliche Deckungsbeitrag (C1) berechnet und angezeigt wird.

Durchschnittspreis ist klar: gesamt Summe / gesamt Stückzahl
Die gesamten verkauften Anlagen sind die Summen aus den Spalten 7 bis 12.
Diese errechnet ich mit folgender Formel:

_temp :=(@Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";7)))+(@Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";8)))+(@Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";9)))+(@Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";10))+(@Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";11)))+(@Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";12)))+(@Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";13))));
@If (@IsError (_tmp); Alternativwert; _tmp);

Wenn ich jetzt einen neuen Auftrag anlege, dann zeigt das Feld, wenn ich Deine Fehlerüberprüfung mit in der Formel habe nichts an, und wenn ich diese rausnehme, dann bekomme ich eine Fehlermeldung:

Feld "Value_1" Die datentypen der zwei Vergleichsergebnisse sind nicht kompatibel.

Das gleiche passiert auch mit den Feldern, in denen ich den Durchschnittspreis, den C1 und den Rabatt berechne!

Ich bin sicher für Euch ist das Problem wahrscheinlich lächerlich, aber ich bin kein Experte und bastel mir hier nur meine Eigene Datenbank zusammen, wobei ich doch öfters an meine Grenzen stoße.
Dennoch möchte ich diese Problem auch lösen...

Vielen Dank schonmal...

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: @column
« Antwort #5 am: 16.10.10 - 14:43:06 »
Von welchem Typ sind denn die Felder, die Du in den Spalten anzeigst?

Wie lautet die komplette Formel im Feld "Value_1"?

Bernhard

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: @column
« Antwort #6 am: 16.10.10 - 14:58:24 »
Noch was: In Deiner Formel steht
temp :=
Unten kommt aber
@If (@IsError (_tmp); Alternativwert; _tmp);

Das würde natürlich gar nicht zusammen passen.

Bernhard

Marie

  • Gast
Re: @column
« Antwort #7 am: 16.10.10 - 15:03:31 »
mit Temp / Tmp hatte ich mich nur verschrieben.

Die Spalten und auch die Felder sind alle vom Typ Zahl.

Die gesamte Formel im Feld lautet:

_temp :=(@Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";7)))+(@Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";8)))+(@Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";9)))+(@Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";10))+(@Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";11)))+(@Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";12)))+(@Sum(@DbColumn("" : "NoCache"; ""; "auftragsdetails";13))));
@If (@IsError (_tmp); Alternativwert; _tmp)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: @column
« Antwort #8 am: 16.10.10 - 15:07:14 »
Ich dachte, Du hattest Dich verschrieben - aber _temp und _tmp stehen doch immer noch in der Formel.

Kürze mal die Formel für _temp: Erstmal nur eine Spalte nehmen. Fehler? Nein? Nächstes @Sum anhängen und so weiter.

Bernhard

Marie

  • Gast
Re: @column
« Antwort #9 am: 16.10.10 - 15:12:08 »
...wenn ich nur eine Spalte reinnehme, dann bleibt das Feld immernoch leer. Funktioniert aber ohne die Fehlerüberprüfung.
Sobald ich mehrere Spalten nehme, gibt es ohne Fehlerüberprüfung die Fehlermeldung...

Temp und Tmp habe ich jetzt korriegiert...

Das Gleiche...

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: @column
« Antwort #10 am: 16.10.10 - 15:27:43 »
Ich habe das mal nachgebaut. Ich bekomme nur eine Fehlermeldung, wenn ich entweder
- auf eine Ansicht ziele, die es nicht gibt
- auf eine falsche Spalte ziele
- oder keine Zahlen in den Spalten habe.

Lautet die Fehlermeldung wortwörtlich so, wie Du sie gepostet hast?

Stellst Du sicher, dass in Deinen Spalten nur Zahlen auftreten können? Beispiel:
@If (!@IsNumber (Feldname); 0; Feldname)

Sowie eine Nichtzahl in der Spalte steht, fällst Du auf die Nase.

Kannst Du die leere DB mit einem Test-Dokument hier veröffentlichen? Wenn ja, dann pass auf, dass die DB nicht verschlüsselt ist und die ACL passt.

Bernhard
« Letzte Änderung: 16.10.10 - 15:32:03 von koehlerbv »

Marie

  • Gast
Re: @column
« Antwort #11 am: 16.10.10 - 15:32:17 »
Hallo Bernhard,

ich glaube, daß ich nicht weiß, wie das funktioniert.

Aber es funktioniert ja alles beim ersten mal, nur wenn ich einen neuen Auftrag anlege, dann geht es nicht mehr. zumindest ohne die Fehlerüberprüfung.


Marie

  • Gast
Re: @column
« Antwort #12 am: 16.10.10 - 15:33:26 »
...in den Spalten für die Anzahl, sind entweder nullen oder 1-10 als Zahlen hinterlegt.
Die verschiedenen Spalten für verschiedene verkaufte Produkttypen...


Marie

  • Gast
Re: @column
« Antwort #13 am: 16.10.10 - 15:34:58 »
wo kann ich denn diese Formal:

@If (!@IsNumber (Feldname); 0; Feldname)

hinterlegen. In den jeweiligen Feldern?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: @column
« Antwort #14 am: 16.10.10 - 15:43:16 »
Die Formel gehört in die einzelnen Spalten. Sie muss noch wie folgt ergänzt werden (damit bist dann auch ganz auf der sicheren Seite, dass die Spalten stimmen):
@If (!@IsNumber (DeinFeld); 0; DeinFeld = ""; 0; DeinFeld)

Wie ist es mit einer Antwort auf meine Frage nach der exakten Fehlermeldung?

Bernhard
« Letzte Änderung: 17.10.10 - 00:43:52 von koehlerbv »

Marie

  • Gast
Re: @column
« Antwort #15 am: 16.10.10 - 15:46:34 »
Hallo Bernhard,

jetzt habe ich es.

Die Formeln funktionieren, allerdings nach wie vor nur, wenn ich ohne die Fehlerüberprüfung arbeite.

Der Fehler lag an der Eingabemaske, mit der ich neue Aufträge hinzugefügt habe. Bei der waren diese Felder nicht als Zahl sondern als Text eingestellt.

Trotzdem vielen Dank...

Gruß Marie

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: @column
« Antwort #16 am: 16.10.10 - 15:51:53 »
Genau deswegen habe ich immer wieder auf dem Feldtyp herumgehackt  ;)

Und das mit der Absicherung gegen @Error solltest Du unbedingt noch zum Laufen kriegen, wenn Du Dir für die zukünftige Arbeit mit der DB Ärger ersparen willst. Auch die Spaltenformeln solltest Du entsprechend meines Vorschlags mit der erforderlichen Sicherheit versehen (das ist eigentlich sogar primär, denn solange die Spaltenwerte abgesichert sind, braucht man die @Error-Prüfung nicht mehr. Aber doppelte Sicherheit schadet nie).

Bernhard

Marie

  • Gast
Re: @column
« Antwort #17 am: 16.10.10 - 15:53:14 »
OK, ich werde versuchen das hinzubekommen... Danke schonmal...

Ach so, die Fehlermeldung war so, wie ich sie beschrieben habe...

Noch etwas, die Felder aktualisieren sich erst, wenn ich die Maske schließe und neu öffne. Gibt es da eine andere Möglichkeit?
Wahrscheinlich eher nicht, oder?

Gruß Marie

Marie

  • Gast
Re: @column
« Antwort #18 am: 16.10.10 - 15:55:32 »
...ich habe bei der Spalte aber ein Feld hinterlegt, wie kann ich dann noch die Formel eintragen?

War übrigens gut, daß du ständig auf dem Feldtypen herumgehakt hast, denn so bin ich auch nur datauf gekommen...

Marie

  • Gast
Re: @column
« Antwort #19 am: 16.10.10 - 16:03:01 »
UUUUP...

Also, er ändert alle einträge in der Spalte auf 0????

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz