Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Freshmeat am 18.04.08 - 10:56:10

Titel: GELÖST ....1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 18.04.08 - 10:56:10
da isser wieder....

also mein heutiges Problem:
Ich ziehe mir via Get Doc Field einen Wert aus einer bestimmten Maske (funktioniert hervorragend)
Ich schreibe diesen Wert in ein Feld in meiner Maske (funktioniert auch)
und dann addiere ich 1 zu diesem Wert und schreibe ihn in ein anders Feld (funktioniert nicht)
und wenn das passiert ist schreibe ich den Wert via SetDocField wieder in die alte Maske
(ich will also einfach nur den wert hochzählen)

es Handelt sich um eine Schaltflächenaktion mit folgendem Code:
Code
FIELD IVP_GeräteAnzahl:=@GetDocField(IVP_UNID;"Gerät_Anzahl_Vorhanden");
FIELD IVP_GeräteAnzahl2:=IVP_GeräteAnzahl +1;
@SetDocField(IVP_UNID ; "Gerät_Anzahl_Vorhanden"; IVP_GeräteAnzahl2)

Es passiert einfach nix im Feld "IVP_GeräteAnzahl2" auch keine Fehlermeldung, einfach gar nix!
alle beteiligden Felder sind vom Typ: "Zahl"
Alternativ hab ich auch schon mit der Codezeile versucht:
Code
FIELD IVP_GeräteAnzahl2:=@Sum(IVP_GeräteAnzahl ; 1);

Wer hat ne Idee??


[edit] Shiftatste benutzt....
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Axel am 18.04.08 - 11:55:48
Versuch das Ganze mal so:

anzahl:=@GetDocField(IVP_UNID;"Gerät_Anzahl_Vorhanden");
FIELD IVP_GeräteAnzahl:=anzahl
FIELD IVP_GeräteAnzahl2:=anzahl + 1;
@SetDocField(IVP_UNID ; "Gerät_Anzahl_Vorhanden"; anzahl + 1)

Axel
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: klaussal am 18.04.08 - 12:26:24
Mich würden noch die Umlaute stören.

Ich benutze grundsätzlich keine Umlaut für Feldbezeichnungen, etc, pp.
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Axel am 18.04.08 - 12:34:44
Mich würden noch die Umlaute stören.

Stimmt. Könnte auch das Problem sein.

Axel
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 19.04.08 - 12:45:00
mhhh

 also auch wenn ich diesen Doder verwende bleibt das Feld leer
Code
anzahl:=@GetDocField(IVP_UNID;"Gerät_Anzahl_Vorhanden");
FIELD IVP_Anzahl:=anzahl;
FIELD IVP_Anzahl2:=anzahl + 1;

wenn ich aber stattdessen nur so zum Test diesen Coder verwende
Code
anzahl:=@GetDocField(IVP_UNID;"Gerät_Anzahl_Vorhanden");
FIELD IVP_Anzahl:=anzahl;
FIELD IVP_Anzahl2:=anzahl + "1";

wird der Wert ganz sauber in das Feld geschrieben und eine 1 angehangen also sollt die Wertübergabe schonmal funktionieren!

ich bekomme auch nach wie vor keine Fehlermeldung.
Eigentlich muss man doch auch bei dem Feld bzw. bei der betreffenden Maske keine zusätzlichen Einstellungen vornehmen damit eine einfache Addition funktioniert oder?

PS: das mit den umlauten ist nur ein optisches Problem. Notes hat sie bis jetzt immer sauber verarbeitet. Ich habe sie aber an dieser Stelle trozdem entfernt nur um ganz sicher gehen zu können!

hat vllt noch jemand einen Tipp für mich?

Danke an alle und schönes WE 
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: koehlerbv am 19.04.08 - 14:43:10
Hier muss aber irgendetwas völlig schief laufen ...
Ist "anzahl" über eine Zahl? Dürfte es eigentlich nicht sein, denn dann würde
FIELD IVP_Anzahl2:=anzahl + "1"
zu einer Fehlermeldung führen, da man zu einer Zahl keinen String addieren kann und darf.

Weiters: Wie und wo wird diese Aktion überhaupt ausgelöst?

Und noch eine wichtige Anmerkung: Du scheinst hier irgendeinen Wert Datenbank-global inkrementieren zu wollen. Das wird *so" überhaupt nicht funktionieren, sowie mehr als eine Person mit der Datenbank arbeitet und vor allem nicht, wenn es Repliken dieser Datenbank gibt.

Bernhard
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 19.04.08 - 15:17:30
"anzahl" ist eine Zahl die via GetDocField aus einem Feld des Types Zahl gelesen wird (also eine Zahl)
die Zahl wird ja (nur zur Kontrolle) auch im Feld "IVP_Anzahl" angegeben
was ganz problemlos funktioniert
warum die Addition nicht Funktioniert ist mir absolut unklar!

zu deiner Anmerkung:
Ja ich will einen Wert inkrementieren, allerdings ist die Datenbank nur für einen einzigen Benutzer vorgesehen, es werden deshalb auch keine Repliken zugelassen.
Wenn du allerdings noch eine elegantere Lösung zum hochzählen der Werte hast dann würde ich die gerne umsetzten.

Gruß Martin
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: koehlerbv am 19.04.08 - 15:40:58
Dein Fehler muss ein ganz "dämlicher" sein, wo sich hinterher alle vor den Kopf schlagen werden, warum das nicht gleich zu erkennen war. Aber: Das kann man nur herausfinden, wenn man Dein Konstrukt komplett sieht - und da fehlen noch Informationen. Ich denke, hier kommen wir nur weiter, wenn Du die DB hier einstellst. Zum "Stochern" hat ja kaum jemand Zeit ...

Zu der "forlaufenden Nummer" (das ist übrigens DAS rote Tuch der Szene  ;)) hier ein Link - dort wirst du sehr viel weiteren Lesestoff finden, den zu studieren es sich lohnt:
Linksammlungen bei AtNotes (http://)
Und das ist nur ein Auszug  ;D

Wenn Du schreibst, "allerdings ist die Datenbank nur für einen einzigen Benutzer vorgesehen", dann gewöhne Dir das ganz schnell ab: Diese Aussage ist so sinnhaft wie "nachts ist es kälter als draussen". Sie stimmt nicht. Das wird sich ändern, aber Dein Code bleibt.

Bernhard

PS: By the way - für Dein Vorhaben würde *ich* diese Anzahl on the fly bestimmen und darstellen.
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 19.04.08 - 15:52:13
ACHTUNG MISSVERSTÄNDNISS!

ich will keine Fortlaufenden nummern generieren! ich habe mit einer Maske ein Gerät angelegt und nun will ich zu dem Gerät einen Inventurposten anlegen (IVP) da wir viele geräte in großen Stückzahlen haben! Es wird also für jedes einzelne Stück ein neuer IVP angelegt (der dann auch eine Inventarnummer generiert usw...) und gleichzeitig soll beim anlegen des IVP die anzahl der schon Vorhandenen IVP eines best. Gerätes aus dieser Maske ausgelesen werden und um eins vergrößert wieder zurückgeschrieben werden, so dass ich am ende nur die Maske eines best. Gerätes anklicke und schon weiß ich wie viele IVP dieses GEräts ich habe (und dank eines embedded Views kann ich die dann auch direkt anklicken)

Das was du mit deinem PS meinst ist mir nicht klar!

gruß Martin
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: koehlerbv am 19.04.08 - 15:55:54
Das läuft aber trotzdem exakt auf das Problem der fortlaufenden Nummer heraus und ist kein Missverständnis, Martin.
Und gerade, weil es um die Summe geht, würde ich das "on the fly" machen: Beim Öffnen eines Dokuments bestimmst Du, wieviel Geräte diesen Typs in dieser Datenbank zu diesem Zeitpunkt bekannt sind.

Bernhard
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 19.04.08 - 16:00:28
ok wie realisiere ich das mit dem Zählen on the fly?
mir fehlt dazu jeglicher Ansatz...
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: koehlerbv am 19.04.08 - 16:08:31
Stichwörter wären
@Elements und @dbLookup in Formelsprache
NotesDocumentCollection und NotesView.GetAllDocumentsByKey in LotusScript.

Mehr sage ich nicht dazu (wegen der Grundlage der Belegarbeit).

Bernhard
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 21.04.08 - 08:11:43
Danke!
so werd ichs mal umsetzen!
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 21.04.08 - 09:25:35
Hab es jetzt so Gelößt:

Code
@Elements(@DbLookup( "Notes" : "NoCache" ;""  : ""  ;  "IVP_GZ" ;Gerät_Bezeichnung  ; 1 ))

Danke für diese Elegante Lösung denn jetzt ist der Zählwert ja nicht mehr von den Masken abhängig sondern nur noch von den vorhandenen Datensätzen, und damit sogar mehrbenutzerfähig...

Juhu....


Also Danke an Alle!
Martin


Schade, zu früh gefreut...

folgendes funktioniert noch nicht:
ich will mir ja mit dieser Formel anzeigen lassen wie viele Geräte eines Types ich im Bestand habe, wenn ich nun aber ein Gerät zum Bestand hinzugefügt habe, dann wird diese Feld nur aktualisiert wenn ich die Gerätmaske editiere, ich will ja ber eigentlich dass diese Feld immer aktualisiert wird, also unabhängig davon ob ich die Maske editiere...

Gibt es eine Möglichkeit die Maske im Edit- Mode zu öffnen und sofort in den View only mode zu wechseln ohne dass das der Nutzer merkt?
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: DerAndre am 21.04.08 - 09:45:21
Versteh ich jetzt nicht?
Ist das Doc offen es wird was zugefügt und dann nicht aktualisiert? Oder:
Ist beim öffnen des Doc nach einem zufügen noch der alte Wert drin?
Bei zwei ist das Feld nicht berechnet zur Anzeige, oder?
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 21.04.08 - 10:11:01
mhh das Feld ist Berechnet zur Anzeige (sollte also im moment in dem das Dok geöffnet wird berechnet werden oder?)
allerdings wird es erst aktualisiert wenn ich das Dok in den Edit Modus versetzte (Doppelklick) und Speichere, das reine versetzten in Edit-Mode bringt noch gar nichts!

was kann der Fehler sein?
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: DerAndre am 21.04.08 - 10:12:23
Was ist mit meiner ersten Frage?
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 21.04.08 - 10:17:06
es geht um diesen Effekt:
Zitat
Ist beim öffnen des Doc nach einem zufügen noch der alte Wert drin?
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: DerAndre am 21.04.08 - 11:23:17
Timingproblem?
Nach dem erstellen ein View Refesh gemacht?
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 21.04.08 - 11:28:45
Ja im View ist bereits die Neue Anzahl vorhanden,
Selbst in dem Embedded view in der Maske in der auch der Zählwert ausgegeben wird ist der neue Eintrag vorhanden nur im Zählfeld selbst steht der neue Wert erstwenn ich es bearbeitet, abgespeichert und neu geöffnet habe
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Axel am 21.04.08 - 11:33:35
Dann fehlt doch hier die Aktualisierung des Dokumentes.


Axel
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 22.04.08 - 15:36:11
ja !
es findet keine Aktualisierung statt, aber warum?
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Axel am 22.04.08 - 16:01:12
ja !
es findet keine Aktualisierung statt, aber warum?

Weil du den Refresh in diesem Fall selbst auslösen musst.

Füge @Command( [ViewRefreshFields] ) in die letzte Zeile deiner Formel ein. Evt. musst du aus dem Command ein PostedCommand machen.

Das Dokument selbst muss dabei im Bearbeitungsmodus sein.

Axel
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: koehlerbv am 23.04.08 - 00:43:24
Axel, auch wenn ich mich an diesem Gestocher ohne jeglichen (Lehr-)Plan eigentlich nicht mehr beteiligen mag: Ein Refresh ist hier - so die Aussagen Martin wirklich stimmen - vollkommen unnötig. Es soll sich doch um ein Feld "computed for display" handeln. Beim Öffnen eines Dokumentes wird dieses Feld *immer* neu berechnet, ausser, man hätte etwas ganz anderes verbogen. Das traue ich dem "Frischfleisch" (fresh meat") aber nun eher nicht zu ...

Vulgo - um es zusammen zu fassen:
- Martin hat ein Cfd-Feld in einer Maske, das die identischen Gerätetypen summiert.
- Ein derartiges Dokument wird geöffnet (Lesen oder Schreiben - vollkommen egal): Die aktuell bekannte Summe dieses Gerätetyps wird dargestellt (einfachstes Handwerk, hier deutlich beschrieben)
- Was natürlich so noch nicht besprochen wurde: Neues Dokument wird angelegt. Neues Gerät vom Typ  D2R2 wird angelegt. Um die Summe im aktuellen neuen Dokument auf den neusten Stand zu bringen (also "on the fly", dafür wären natürlich noch ein, zwei Klicks erforderlich. *Aber darum geht es ja gar nicht!

Martin: Bitte bringe Deine aktuelle Problemlage nochmal auf den aktuellen Stand. Ich glaube, ich bin nicht der einzige, der momentan gar nicht mehr durchsieht (und sich daher aus dem Funkverkehr heraushält). Vor allem wage ich zu bezweifeln, dass Du mit einem "computed for display-Feld arbeitest. Da spricht alles dagegen ...

Bernhard

Bernhard
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 23.04.08 - 11:06:38
Bernhard du hast die Lage ziemlich gennau erfasst!
ich hab ein CfD-Feld welches mit der Formel:
Code
@Elements(@DbLookup( "Notes" : "NoCache" ;""  : ""  ;  "IVP_GZ" ;Gerät_Bezeichnung  ; 1 ))
befüllt wird.

In diesem Feld sollte bei jedem öffnen der Maske der aktuelle Wert  (also die Anzahl der vorhanden Geräte) drinne stehen. Tut es aber nicht!
Der richtige Wert wird nur gesetzt wenn ich das Dokument öffne, in den Bearbeitungsmodus versetzte und Aktualisiere. Dies soll aber eben nicht so sein!

Zu den Feldeigenschaften:
Name:  Gerät_Anzahl_Vorhanden
Typ:     Zahl   Berechnet zur Anzeige
Kein Flag bei Mehrfachwerte zulassen
Kein Flag bei Nach Validierung berechnen
Keine Flags im Tab Absatz verbergen

In der Übersicht der Eigenschaften der Maske ist ein Flag bei "Felder automatisch aktualisieren" gesetzt

Hoffe das ich euch ein wenig Entwirren konnte...

Gruß Martin


[EDIT]
Kann es einen grundlegenden Fehler in meinem Notes / Domino geben der die Ausführung bestimmter Befehle verhindert??
Ich habe nämlich grade auch noch ein Problem mit einem @SetDocField (Trau ich nur nicht noch einen Threat aufzumachen damit ihr mich nicht für total bescheuert haltet)
oder muss ich bestimmte Funktionen für eine DB erst irgendwie Freischalten?

PS: Dies ist nicht meine erste Notes Datenbank, und die Anderen Laufen seit über einem halben Jahr sauber und ohne Funktionsstörung (Ein Ticketsystem für EDV-Probleme und ein Schwarzes Brett für hausinterne Mitteilungen)

Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Axel am 23.04.08 - 11:22:40
Axel, auch wenn ich mich an diesem Gestocher ohne jeglichen (Lehr-)Plan eigentlich nicht mehr beteiligen mag: Ein Refresh ist hier - so die Aussagen Martin wirklich stimmen - vollkommen unnötig. Es soll sich doch um ein Feld "computed for display" handeln. Beim Öffnen eines Dokumentes wird dieses Feld *immer* neu berechnet, ausser, man hätte etwas ganz anderes verbogen.

Da hast du natürlich recht. Das muss ich irgendwo überlesen haben.


Axel
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: klaussal am 23.04.08 - 11:23:43
Damit die Sucherei endlich aufhört : häng die DB mal hier rein.
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 23.04.08 - 11:32:23
...da isse....
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: m3 am 23.04.08 - 11:50:07
Nope.  >:D
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: DAU-in am 23.04.08 - 11:56:45
vielleicht hakt es bei mir im Hirn, aber:

du gibst bei einem neuen Gerät die Anzahl genutzter Geräte an, z. B. 3, und die Anzahl vorhandener Geräte wird dann um 1 erhöht?

Ich versteh gerade den Sinn und Zweck des Ganzen nicht

Grüsse

Dau-in
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 23.04.08 - 11:57:43
Doch doch die War da...
ich Hab sie nur wieder runter genommen weil es mir zu heiß ist, hier kann sie ja jeder Runterladen...
wenn du mr ne PM schickts mit ner mailadresse lass ich sie dir zukommen...

MArtin
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 23.04.08 - 11:59:18
@dau-in
Liest du nur mit? oder hast du die DB vorhin runtergeladen?
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: DAU-in am 23.04.08 - 12:00:57
Isch hab sie.

Wieviel bezahlst du?   >:D
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 23.04.08 - 12:05:17
ok
Das Feld "Gerät_anzah_genutz" wir momentan nicht verwendet, ich überlege noch ob ich es überhaupt stehen lasse!
mir icst das Feld Gerät_anzahl_Vorhanden wichtig, diese sollte um eins Erhöht werden wenn du einen neuen IVP  (IVP = Inventarposten) vom Typ des Gerätes anlegst....
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: klaussal am 23.04.08 - 12:08:34
Aber anscheinend erhöhst du den Zähler schon vor dem Anlegen.
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 23.04.08 - 12:15:41
@Klaus
Wie meisnt du das?
wenn ich ein Gerät anlege dann ist der Wert der bei "Gerät_anzahl_Vorhanden" drinn steht erstmal Falsch, weil das Feld Zählt ja Abhängig vom Gerätenamen und der ist zu diesem Zeitpunkt noch gar nicht eingegeben.
Erst wenn ic den ersten IVP angelegt habe soll der Wert im Feld "Gerät_anzahl_Vorhanden"stimmen.
Es gibt keine Funktion oder ähnliches außer dieser

@Elements(@DbLookup( "Notes" : "NoCache" ;""  : ""  ;  "IVP_GZ" ;Gerät_Bezeichnung  ; 1 ))

 die auf das dieses Feld zugreift!
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: DAU-in am 23.04.08 - 12:17:08
@Elements(@DbLookup( "Notes" : "NoCache" ;""  : ""  ;  "IVP_GZ" ;Gerät_Bezeichnung  ; 1 ))


Gerätbezeichnung ist ein Freitextfeld
Wenn da einer das ding mit Kamera bezeichnet, dann findet der keine Camera?

Ich glaube, du solltest den Prozess einmal überdenken.

Ich erstelle nämlich gerade lauter leere Dokumente, und kann so ein beachtliches Inventar aufbauen mit nix.

P.S. ich zähle Dokumente mit leerem Gerätenamen, das geht problemlos.
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 23.04.08 - 12:26:07
er soll auch bei Kamera keine Camera finden! ;-)

Die Maske Gerät dient dazu eine ganz kongretes Produkt anzulegen! zum Beispiel einen Monitor Samtron 76BDF von Samsung.
Un dann lege ich einen Inventurposten an der ein Monitor dieses Types ist! und da ich den monitor halt 30 mal hab lege ich halt 30 IVP an, Der Wert "Gerät_anzahl_Vorhanden" sollte dann eben auch 30 betragen!


PS:
Warum auch immer, die Zählung Funktioniert hervorragend bei Neu angelegten Geräten. Nur bei den alten Testdatensätzen eben nicht.... Seltsam...
zumindest schein mein erstes Problem damit gelöst zu  sein...


 
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 23.04.08 - 12:35:17
wer von meinen Problemen die NAse noch nicht voll hat der kann ja auch mal in aller ruhe das @SstDocField im Button IVP Hinzufügen in der Maske System untersuchen, denn mir ist nicht klar warum es nicht tut was es soll...

PS: das mit dem HAHA ist nur ne testgeschichte, eigentlich soll es den Status des IVP auf Genutzt setzten...)
Titel: Re: 1 +1 = [ ] (warum will notes nicht so rechnen wie ich??)
Beitrag von: Freshmeat am 23.04.08 - 15:47:17
Ok ich habe eben auch diesen Letzten Fehler noch finden un beheben können!
Vielen Dank an Alle die mir geholfen haben!

Diejenigen die noch eine Kopie meiner DB haben bitte ich, selbige unwiederuflich zu vernichten...

Danke
Martin