Autor Thema: if Funktion mit Datumsvergleich -wie?  (Gelesen 4185 mal)

Offline liareuper

  • Frischling
  • *
  • Beiträge: 22
  • Geschlecht: Weiblich
if Funktion mit Datumsvergleich -wie?
« am: 27.03.03 - 13:55:05 »
Hallo!
Ich bin grade dabei eine kleine Datenbank zu entwickeln.
Dort möchte ich mit einem Datum "rechnen".
Und zwar sollen zwei Datums miteinander verglichen werden, wenn sie den selben Wert haben soll 0 ausgegeben werden, anders 1.
Die beiden Datums werden über eine Form eingelsen. Das heute Datum wird mit der Formal @today gebildet.

@if(Abgabedatum = Heute; 0; 1)

Wenn ich diese Formal verwende wird immer nur 1 ausgegeben, ob die 2 Werte gleich sind oder nicht. Muss ich bevor damit rechne das Datum zuerst noch formatieren in einen String???

Danke schön mal für eure Hilfe!!

Offline Till_21

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • I love Germany
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #1 am: 27.03.03 - 14:05:45 »
du vergleichst da zwei verschiedene Datentypen...

probiers mal mit :

@if(@date(Abgabedatum) = @today; 0; 1)

gruss

Offline liareuper

  • Frischling
  • *
  • Beiträge: 22
  • Geschlecht: Weiblich
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #2 am: 27.03.03 - 14:22:14 »
das dacht ich mir schon fast, aber dein Vorschlag geht leider auch nicht  :(

"Abgabedatum" ist ja ein Feld in ner Form, und das was darin steht soll mit dem Wert von @today verglichen werden. Gibts ja die Formal
@Text(value ; format) aber ich weiß nit recht wo ich die hinschreiben soll....und ob das überhaupt damit geht...*help*

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #3 am: 27.03.03 - 14:28:25 »
welchen Typ hat das Feld...Text..Nummer...Datum..datum/Zeit....
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 liareuper

  • Frischling
  • *
  • Beiträge: 22
  • Geschlecht: Weiblich
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #4 am: 27.03.03 - 14:33:46 »
Die Felder sind beide vom Typ Text. Bei dem eine Feld "Heute"  ab ich bei Formal eingegeben @today. In das Feld "Abgabedatum" wird dann das Datum eingeben.  Und diese beiden sollen dann miteinander verglichen werden

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #5 am: 27.03.03 - 14:37:06 »
hm...ich weiß ja nicht wo der Vergleich läuft, aber mach - wenn beide TEXT sind - diese Formel nei:

@if(@date(Feld1)=@date(Feld2);"GLEICH";"UNGLEICH")
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 liareuper

  • Frischling
  • *
  • Beiträge: 22
  • Geschlecht: Weiblich
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #6 am: 27.03.03 - 14:45:44 »
Der Vergleich findet in ner View statt. Das Ergebnis soll dann in die Tabell eingetragen werden.

Die beiden Felder sind in ner Form.

Deine Formel geht leider auch nicht :(

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #7 am: 27.03.03 - 15:16:01 »
"der Vergleich findet in einer View statt..."

dann lautet die Spaltenformel auf jeden Fall für die entsprechende Spalte @if(@date(F1)=@date(F2);"JA";"NEIN"), solange im Feld F1 textlich "12.03.03" und im Feld F2 textlich "12.03.03" steht.

Allerdings, wenn man ein Dokument gestern mit Werten befüllt, wird der Wert des Feldes mit der @today Formel auch heute noch "11.03.03" sein, solange man das Doc heute nicht updatet.

Und, darüberhinaus, wenn Du in einer Tabelle (also wiederum einem Dokument) die View abfragen willst, mußt Du schon genau wissen, welche Dokumente/Werte miteinander verglichen werden sollen bzw. welche Infos aus welchen Spalten kommen sollen. Die üblichen Viewformeln in Masken sind @dbcolumn (eine Spalte mit x- Werten auslesen) oder @dblookup (Dokumente nach einem Suchbegriff aus der View heraus finden).

Ich denke, das hilft Dir wohl bißerl weiter...wie weit bist Du in Notes erfahren?
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 liareuper

  • Frischling
  • *
  • Beiträge: 22
  • Geschlecht: Weiblich
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #8 am: 28.03.03 - 09:00:47 »
"...wenn Du in einer Tabelle (also wiederum einem Dokument) die View abfragen willst, mußt Du schon genau wissen, welche Dokumente/Werte miteinander verglichen werden sollen..."

Die Formel steht direkt in der View und das Ergebnis soll auch dort wieder ausgegeben werden. Das hab jetzt auch hingekriegt -
hab dem Feld in der View, in das das Abgabedatum von Hand eingetragen werden soll das Format Date/Time gegeben und das andere Feld, in dem die Formel @today steht das Format Text.

In der View hab ich dann die Formel:
@If( Abgabedatum = Heute ; "richtig" ;  "falsch" ) eingetragen.

Allerdings, muss ich wie du gesagt hast die Felder irgendwie "updaten". Ich hab nämlich gestern einen Vergleich eingeben, und zwar als Abgabedatum 28.03.2003, die Formel hat gestern richtigerweise "falsch" ausgegeben, allerdings müßte das Ergebnis ja heute dann "richtig" sein, ist es aber nicht...????

Erfahren bin ich in Notes nit so wirklich, stehe eigentlich noch ziemlich am Anfang.




 

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #9 am: 28.03.03 - 09:22:16 »
1. Lösung, viewbasierend, mE die beste:
nimm in die Spalte für den Vergleich folgende Formel

Today1 := @TextToTime("Heute");
Today2 := @TextToTime("Today");
Today3 := @TextToTime("Aujourd\'hui");
Today := @If(Today1 > [01.01.1900];Today1;Today2 > [01.01.1900];Today2;Today3);
@If(@Date(Today)=@Date(@TextToTime(FELD_Datum));"JA";"NEIN")

Das schont die Ansicht und man muss die Docs nicht manuell updaten.

2. Lösung, dokumentbasierend per Agentlauf:
nimm nen täglichen Agent, der einmal morgens über alle Docs läuft und per folgender Formel das Feld mit TODAY updatet..

Field TODAY:=@today / oder Field TODAY:=@text(@today)

3. Lösung, viewbasierend:
nimm in die Spalte für den Vergleich folgende Formel
@if(@today<>@date(@textToTime(Feld_DATUM)); "NEIN" ; "JA")
riesiger Nachteil bei vielen Docs...der Server muß den View sehr sehr häufig updaten, da jegliche Zeitformeln in Views dazu führen, dass der View nachgerechnet werden muss, was ja auch logisch ist...tick tack
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 ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #10 am: 28.03.03 - 10:22:40 »
... ich würde aus Performance-Gründen das Updaten der Dokumente vorziehen...

ata
Grüßle Toni :)

Offline liareuper

  • Frischling
  • *
  • Beiträge: 22
  • Geschlecht: Weiblich
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #11 am: 28.03.03 - 10:55:30 »
ähhm sorry, aber da blick ich jetzt nicht so ganz durch, was macht die Formel denn im einzelnen?

Today1 := @TextToTime("Heute");
Today2 := @TextToTime("Today");
Today3 := @TextToTime("Aujourd\'hui");
Today := @If(Today1 > [01.01.1900];Today1;Today2 > [01.01.1900];Today2;Today3);
@If(@Date(Today)=@Date(@TextToTime(FELD_Datum));"JA";"NEIN")

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #12 am: 28.03.03 - 11:10:26 »
die Formel ist quasi ein hidden Feature in Notes.

die Zeile
Today1 := @TextToTime("Heute");
besagt, daß ein deutscher Domino Server den Begriff @texttotime("Heute") tatsächlich versteht...

Da man aber als Entwickler sich nie sicher sein, ob der Server nur english, deutsch oder auch französisch eingestellt ist/umgestellt wird, verwendet man 3 Zeilen mit den entspechenden Begriffen für "Heute" (Heute, Today und Aujourd\'hui) und testet in der letzten Zeile, wo ein Ergebnis vorliegt, das dann zu verwenden ist.
Today := @If(Today1 > [01.01.1900];Today1;Today2 > [01.01.1900];Today2;Today3);

Der große Trick oder Sinn dahinter ist, daß Domino meint, keine Zeitformel vor sich zu haben und datet daher auch den Viewindex nicht jede Sekunde up, wie es bei Verwendung zB von @now, @today, @tomorrow, etc... wäre. Das schont die Ressourcen des Servers, sprich speedfreundlicher. Das merkt man optisch rein am "Schweinekringel" oben links, der in der View nicht ständig angezeigt wird.


Wem das zu unsicher ist und dennoch Zeitformeln in Views unbedingt verwenden möchte (die obige Formel geht ja nur auf Datum, aber nicht auf Stunden und Minuten Vergleiche, daher Einschränkung in Verwendbarkeit..wobei, habe noch nie probiert, ob auch @texttotime("Jetzt") als Äquivalent zu @now gehen würde...da bekommt man ja statt "Heute" komplett Datum/Uhrzeit zurück)..nehme die Zeitformel und stelle den Indexertask der gegegeben View auf "alle x Stunden Ansicht aktualisieren". Das wäre ein Kompromiss aus Performance und Fleixibilität über Verwendung jeglicher Zeitformeln. Nachteil: wenn zwischen den zB stündlichen Updatezyklen neue Docs erstellt werden, tauchen die solange in der View nicht auf, bis der User selbst F9 drückt oder die Stunde rum ist, so daß der Server updatet.
« Letzte Änderung: 28.03.03 - 11:18:25 von Rob Green »
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 liareuper

  • Frischling
  • *
  • Beiträge: 22
  • Geschlecht: Weiblich
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #13 am: 28.03.03 - 14:27:49 »
 :)also das mit wem Vergleich hab ich jetzt DANKESCHÖÖÖN!

Allerdings hat sich jetzt schon wieder das nächste Problem eröffnet.

Möchte, dass in der View nur dann etwas ausgegeben wird, wenn
das Abgabedatum größer oder gleich ist mit dem heutigen Datum.

Allerdings weiß ich nicht, was ich dann da als else schreiben soll.
Also das hier wäre jetzt eine Formel
@If (Abgabedatum >= @Today; Projektname; " ")
Die Funktioniert  ja auch, allerdings wird für meine else Funktion ja trotzdem dann "eine Reihe/ein Eintrag" in der View angelegt, ich möchte aber, dass wenn die Funktion nicht erfüllt ist er garnichts machen soll!

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #14 am: 28.03.03 - 14:47:26 »
ok, wichtig ist erstmal für "welche Dokumente angezeigt werden sollen" nur das SELECT! Die Spaltenformeln sind irrelevant.

zB Select FeldA="ABC" => alle Docs anzeigen mit Feldinhalt ABC in FeldA...der Indexer von Notes geht alle Docs durch und checked ob sie das Feld haben und wenn ja, wie der Inhalt ist. Wenn beides ok, kommen sie in den View.

Dann zu Deinem Fall...zunächst einmal @Today wech...ist genau der Performancekiller, von dem oben bereits mehrfach gesprochen wurde.

Nimm die tricky TODAY Formel oder den Agentansatz.

Wenn es die tricky TODAY Formel ist, dann kommt in die Ansichtsauswahl Formel (!!!!! genau da !!!!)
Today1 := @TextToTime("Heute");
Today2 := @TextToTime("Today");
Today3 := @TextToTime("Aujourd\'hui");
Today := @If(Today1 > [01.01.1900];Today1;Today2 > [01.01.1900];Today2;Today3);
Select Feld_mit_AblaufDatum>=TODAY

ODER
wenn es ein täglicher, zum frühen Morgen laufender Agent ist, der in den Docs ein Feld "Heute" mit @today belegt...dann lautet die Select Formel

Select Feld_mit_AblaufDatum>=HEUTE




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 liareuper

  • Frischling
  • *
  • Beiträge: 22
  • Geschlecht: Weiblich
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #15 am: 31.03.03 - 10:56:56 »
 ??? Irgendwie raff ichs nit, ich hab n Agent, der das Feld "Heute" jeden Morgen mit @today befüllt, is das jetzt richtig, oder nicht?

Und nun möchte ich, dass in der View nur Einträge angezeit werden, deren "Abgabedatum" größer oder gleich des Heutigen Datums sind. Und die Formel dazu soll ich dann in die Ansichtsauswahl der View schreiben, oder?

Sorry, das ich irgendwie ein wenig schwer von Begriff bin!

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #16 am: 31.03.03 - 11:03:07 »
Annahme, Agent schreibt:
Field Heute:=@today
ok..


Gehe in View
auf Ansichtsauswahlformel

SELECT FELD_ABGLEICHDATUM>=HEUTE
oder
SELECT @date(FELD_ABGLEICHDATUM)>=HEUTE

Bedingung (wie in vorigen Postings schon klargemacht....): Beide Felder müssen Datumsfelder sein. Wenn sie textfelder sind, gibt es keinen größer/kleiner Vergleich
« Letzte Änderung: 31.03.03 - 11:03:34 von Rob Green »
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 liareuper

  • Frischling
  • *
  • Beiträge: 22
  • Geschlecht: Weiblich
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #17 am: 31.03.03 - 11:09:06 »
Oh man ich danke dir, ich habs jetzt endlich gerafft und jetzt gehts auch! *ganzdollfreu* ;D

Tja ich schätze deine Gute Tat für heute hast du grade hinter dich gebracht :o)!

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #18 am: 31.03.03 - 11:10:44 »
komm ich jetzt in den Himmel?  ;D :P
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 liareuper

  • Frischling
  • *
  • Beiträge: 22
  • Geschlecht: Weiblich
Re:if Funktion mit Datumsvergleich -wie?
« Antwort #19 am: 31.03.03 - 11:14:15 »
na mindestens würde ich sagen :) allerdings bin ich mit der Datenbank noch nicht fertig, als fang dann da  oben am Besten schon mal an zu beten, das ich nicht noch mehr lustige Datumsformel schreiben will! :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz