Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: bikerboy am 26.06.06 - 16:09:40

Titel: @adjust
Beitrag von: bikerboy am 26.06.06 - 16:09:40
Hi leute....habe ein problem


Code
_value := @TextToNumber(dauer) - 1;
@Adjust(abwann;0;0;_value;0;0;0)

was ist an dem Adjust falsch ?

dauer ist ein Feld mit einer Zahl, aber wenn ich das @TextToNumber nicht setzt meckert er. Wenn ich die Zahl festeintrage ist alles super aber wenn ich ne Variable setze geht es nicht mehr. Muss ich vielleicht einfach mein Notes wieder Neustarten ? (siehe @mailsend)

gruss robert
Titel: Re: @adjust
Beitrag von: 0xse am 26.06.06 - 16:18:14
Ist dauer denn auch ein Feld vom Typ Zahl?
Titel: Re: @adjust
Beitrag von: bikerboy am 26.06.06 - 16:19:40
jap
Titel: Re: @adjust
Beitrag von: VB3Bernd am 26.06.06 - 16:28:37
Hallo robert,

ich würde -um Probleme zu vermeiden- einfach nur "@ToNumber" anstelle von "@TextToNumber" verwenden.

Das Feld "abwann" muss ein Datumsfeld sein. Ist es ein Textfeld, musst Du "@ToTime(abwann)" nehmen.

Ansonsten sollte es so klappen.

Grüße
Bernd
Titel: Re: @adjust
Beitrag von: bikerboy am 26.06.06 - 16:32:36
@Bernhard

Das ist ja das komischen. Ich habe beachtet dass das eine ein Nummernfeld sein muss und das andere ein Datumsfeld. Normalerweise könnte ich mir das @TexttoNumer komplett sparen,aber dann wirft er mir nen Fehler
Titel: Re: @adjust
Beitrag von: koehlerbv am 26.06.06 - 16:37:08
Da muss irgendwas anderes schief laufen: Ich habe in 14 Jahren Notes noch niemals ein @TextToNumber auf ein Zahlenfeld anwenden müssen.

Um Spekulationen vorzubeugen: Wie lautet die konkrete Fehlermeldung?

Bernhard
Titel: Re: @adjust
Beitrag von: bikerboy am 26.06.06 - 16:47:45
Gut Gut ;

Fehlermeldung kann ich mir leider nicht merken, aber mit dem @tonumber geht es nun.... Ich bedanke mich
Titel: Re: @adjust
Beitrag von: VB3Bernd am 26.06.06 - 16:54:09
Hallo robert,

naja, wenn ein Zahlenfeld mit @TextToNumber umgewandelt wird, dann kommt eine Fehlermeldung ("Zahl erwartet" oder so).

Wenn das Feld "dauer" ein Zahlenfeld IST, dann kannst Du einfach den Feldnamen eintragen, die Formel wäre dann:

_value := dauer - 1;
@Adjust(abwann;0;0;_value;0;0;0)

Grüße
Bernd
Titel: Re: @adjust
Beitrag von: bikerboy am 26.06.06 - 17:06:01
@Bernhard

Ja aber genau das passiert ja nicht. Wenn ich es ohne Umformung versuche, dann sagt er ( Number expected or .....) aber ist ist doch ein Zahlenfeld (HERR IM HIMMEL) manchmal macht das programieren keinen Spass.

Code
_dauer := @ToNumber(dauer);
_value := _dauer - 1;
@Adjust(abwann;0;0;_value;0;0;0)

Jetzt hat sich ein weiteres Problem ergeben. Er rechnet immer einen Tag runter, weil er dauer nicht erkennt und durch das -1 bin ich einen Tag zurück.

Naja, was macht das @tonumber, wenn es schon ein Zahl ist ? Dann gibt er mir doch nicht wieder Text raus oder? Ich meine, dass wäre schon schlecht.
Titel: Re: @adjust
Beitrag von: koehlerbv am 26.06.06 - 17:13:02
Also heisst das Feld gar nicht "dauer"! Und ein nicht-vorhandenes Feld wird als LeerSTRING zurückgegeben, daher ist @TextToNumber erforderlich.

Warum wird eigentlich zuerst auf Notes geflucht und ggf. erst dann an sich selbst gezweifelt?

Bernhard
Titel: Re: @adjust
Beitrag von: VB3Bernd am 26.06.06 - 17:14:00
Hallo robert,

nur mal zur Klarstellung - ich bin nicht Bernhard - der ist hier einer der Moderatoren und Notes-Götter die viel Wissen. Ich bin nur ein kleines Lichtlein  ;D

Irgendwie muss Dein Problem an den Feldeigenschaften liegen oder vielleicht Du musst vorher Dein Dokument mal refreshen, vielleicht liegts daran.

Ist jetzt ziemlich schwierig - so aus der Ferne. Du solltest möglichst alle Infos liefern, sonst stochert man sozusagen im Nebel.  :-:

Das @ToNumber macht aus (fast) allem eine Zahl, (fast) egal was es bekommt  ;)

Grüße
Bernd
Titel: Re: @adjust
Beitrag von: bikerboy am 26.06.06 - 17:23:55
@Bernhard

doch das Feld heisst "dauer" und ist ein Zahlenfeld.

Robert
Titel: Re: @adjust
Beitrag von: koehlerbv am 26.06.06 - 17:29:09
Nein, ist es nicht. Zumindest nicht in dem Kontext, in dem Du die Formel ausführst.
Und jetzt wäre eben dieser Kontext interessant.
Schicke bitte einen Screenshot mit den document properties, aus dem Typ und Inhalt des Feldes hervorgeht.

Bernhard
Titel: Re: @adjust
Beitrag von: koehlerbv am 26.06.06 - 17:32:46
... Bernhard - der ist hier einer der Moderatoren und Notes-Götter die viel Wissen. Ich bin nur ein kleines Lichtlein  ;D

Bernd, stell Dein Licht (nicht "Lichtlein") mal nicht unter den Scheffel  ;) Und wir sind keine Götter, sondern auch voller Zweifel, dafür aber mit jahr(zehnt)elanger Erfahrung. Und sehr engagiert. Sonst aber vollkommen normal  :)

Bernhard

PS: Natürlich trotzdem "Danke für die Blumen!". Eitel ist man ja auch  ;D
Titel: Re: @adjust
Beitrag von: bikerboy am 26.06.06 - 17:47:43
fotos.web.de/r_kreutzer/Screenshots (http://fotos.web.de/r_kreutzer/Screenshots)

So bitte schön


Robert
Titel: Re: @adjust
Beitrag von: Thomas Schulte am 26.06.06 - 17:59:17
Das ist leider der falsche Screenshot. Was Bernhard meinte waren die document Properties. Also so was wie das hier:
Titel: Re: @adjust
Beitrag von: bikerboy am 26.06.06 - 18:07:04
ja bitte nochmal rein gucken
Titel: Re: @adjust
Beitrag von: VB3Bernd am 26.06.06 - 18:17:45
Hallo robert,

sehe ich das richtig ... steht die Formel im "Default Value"? Wenn ja, dann ist das Feld bearbeitbar und es kann nicht gehen, weil zum Zeitpunkt des Dokumentaufrufes das Feld "dauer" noch leer ist.

Setze das Ziel-Feld auf "Berechnet", dann müsste es funzen.

Grüße
Bernd
Titel: Re: @adjust
Beitrag von: Thomas Schulte am 26.06.06 - 18:25:23
Das ist das eine und außerdem solltest du Dauer von einer Zahlenliste auf Zahl umstellen (kein Multivalue erlauben).

Und dann noch abfangen ob Dauer denn tatsächlich einen Wert hat also entweder mit 0 vorbelegen, oder in der Formel überprüfen ob _intdauer := @text(dauer="";0;dauer)
Titel: Re: @adjust
Beitrag von: koehlerbv am 26.06.06 - 19:20:43
Wie schon vermutet: Es ist ganz was anderes faul  ;) Und: Das Feld "dauer" gab es wirklich nicht.

Begründung:
Die Default-Formel wird nur bei der Neuerstellung eines Dokumentes oder wenn es das entsprechende Item bei bestehendem Dokument noch nicht gibt, ausgeführt. Und bei der Erstellung des Dokuments ist das editierbare Feld "dauer" noch nicht ausgefüllt, ergo auch keine Zahl. @TextToNumber macht dann aber aus "" eine 0.

Vulgo: Notes works as designed. Und das hätten wir schon eher herausfinden können, wenn gleich von Anfang an alle Karten auf den Tisch gelegt worden wären. Nach dem Formel-Kontext hatte ich auch extra gefragt.

Bernhard
Titel: Re: @adjust
Beitrag von: bikerboy am 27.06.06 - 08:46:05
Danke Leute.....

das mit dem Default Value hätte ich eigentlich sehen müssen. naja :-[ passiert.... hatte ne schon ne @if davor gesetzt die darauf reagiert wenn das fällt leer ist aber nun passt es auch so...

DANKE DANKE DANKE
Titel: Re: @adjust
Beitrag von: koehlerbv am 27.06.06 - 08:52:49
Das mit dem @If war schon ein guter Ansatz ... Wenn man mit Werten rechnen will, muss man vorher sicherstellen, dass auch Werte da sind. Beispiel:

@If (IsNumber (Preis); Preis * 1,16; 0)

Oder mit Datumswerten:

@If (@IsTime (StartDate) & @IsTime (EndDate); (EndDate - StartDate) / 86400; 0)

HTH,
Bernhard