Autor Thema: Datum ohne Punkte eingeben  (Gelesen 10257 mal)

Offline Detlef

  • Junior Mitglied
  • **
  • Beiträge: 78
  • Ich liebe dieses Forum!
Datum ohne Punkte eingeben
« am: 21.03.04 - 18:15:32 »
Hallo und einen schönen Sonntag,

sag mal, kennt einer von euch eine Eingabeüberstzung in der ich in einem Datumsfeld ein Datum ohne Punkte (z.B. 210304 o. 21032004) eingeben kann und die Punkte automtisch gesetzt werden?

Danke für Tips

Gruß
Detlef

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Datum ohne Punkte eingeben
« Antwort #1 am: 21.03.04 - 18:23:09 »
Hi Detlef,

noch nicht gemacht, aber sollte bestimmt möglich sein.

Schau Dir mal u.a. folgende Formelsprache-Befehle an:
@Contains, @Left, @Middle, @Replace, @ReplaceSubstring, etc.

Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:Datum ohne Punkte eingeben
« Antwort #2 am: 21.03.04 - 18:55:51 »
probiere mal mein

tmp:=@Text(210304);
day:=@Left(tmp;2);
month:=@Middle(tmp;2;2);
year:=@If(@Length(tmp) =6; @Right(tmp;2);@Right(tmp;4));

myDate:=day+"."+month+"."+year;
@Prompt([Ok];"Hallo Welt";myDate)

Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Datum ohne Punkte eingeben
« Antwort #3 am: 21.03.04 - 19:14:33 »
Die Formel von Eknori sieht gut aus.

Generell noch:
Afaik gibts Probleme, wenn Du ein Datumsfeld verwendest, da hier die Notes-interne Prüfung zuschlägt bevor es deine Input Translation auswertet.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Datum ohne Punkte eingeben
« Antwort #4 am: 21.03.04 - 19:17:11 »
Ich befürchte, so einfach geht das nicht.
@Ulrich:
Code
tmp:=@Text(210304);
Du verwendest da eine Zahl. Für den 21.03.2004 sieht das ja gut aus, aber Deine Auswerte-Formel funktioniert nicht mehr am
01042004,
denn daraus wird
1042004.
Der Datumswert muss schon Text sein und auf eine gültige Länge geprüft werden, weiterhin auf gültige Tage und Monate.

Das ist ganze wird sicherlich ein netter, kleiner Parser ;-)

Ciao,
Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Datum ohne Punkte eingeben
« Antwort #5 am: 21.03.04 - 20:03:10 »
Wenn wer gerade daran arbeitet (ist ja eine nette Sonntag-Abend-Aufgabe  ;D ):

Man sollte auch noch berücksichtigen, dass User auch das Datum wie folgt eingeben könnten:
1304 (01. März 2004)
91204 (09. Dez. 2004)
9124 (9. Dez. 2004)
1314 (13. Jan. 2004)
134 (01. März 2004)

 :)
Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Datum ohne Punkte eingeben
« Antwort #6 am: 21.03.04 - 20:29:03 »
Hier hilft sowieso nur eine Regel für die Eingabe oder die Aufteilung in die Felder DD, MM und YYYY.
01112004 ist in Ordnung.
1 - 11 - 04 ist in Ordnung (wenn dies jetzt in drei Feldern steht !)

Sonst wird es lustig:
Was bedeutet
111 ?
11. Januar (des aktuellen Jahres) oder
11. November (des aktuellen Jahres) ?

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Datum ohne Punkte eingeben
« Antwort #7 am: 21.03.04 - 20:45:44 »
Hast Recht, Bernhard, mein Vorschlag ist wirklich nicht sinnvoll gewesen (ohne Vornullen wenn Tag/Monat einstellig). 3 Felder ist ja gegen jede Usabilty, da kann der User genausoschnell auch ein "-" eingeben auf dem Zahlenblock als wie zum nächsten Feld wechseln.

Also was wirklich schick - und umsetzbar - wäre imho:
010103 -> 01. Jan. 2003
12032003 -> 12.März 2003
0101 -> 01. Januar vom aktuellen Jahr
h -> @today
g -> @yesterday

Was mich noch stört, ist der Umstand, dass Eingabeübersetzung so im Datumsfeld nicht funktioniert, da (wie oben schon erwähnt) die notesinterne Prüfung zuvorkommt.
Und Exiting-Event lässt nur Script zu (klar, wäre deswegen kein Hindernis).

Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:Datum ohne Punkte eingeben
« Antwort #8 am: 21.03.04 - 22:00:14 »
ok, ok, war quick'ndirty Sonntags Fingerabeit ...

wie sieht denn eure Formel aus ??

Ulrich
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Datum ohne Punkte eingeben
« Antwort #9 am: 21.03.04 - 22:15:22 »
Wenn mir mal das Datums-/Zeitdeld nicht ausreicht, mache ich mir darüber tiefgründigere Gedanken (ich mag ja eh Parser bauen  ;D)
Wenn es jemand anderes vorher eher ernsthaft (begründet) braucht, denke ich natürlich auch asap nach !

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Datum ohne Punkte eingeben
« Antwort #10 am: 21.03.04 - 22:25:08 »
wie sieht denn eure Formel aus ??

Das wollte ich hören, Ulrich  ;D

Hier mein quick'n'dirty Exiting-Event, leider keine Formel sondern Script, weil Exiting Formeln nicht mag:

Code
Sub Exiting(Source As Field)
   Dim session As New NotesSession
   Dim uiws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   
   Set db = session.CurrentDatabase
   Set uidoc = uiws.CurrentDocument
   Set doc = uidoc.Document
   
   Dim strDatum As String
   Dim iDatumlaenge As Integer
   strDatum = uidoc.fieldgettext ("Datum")
   iDatumlaenge = Len(strDatum)
   
   Dim strDay As String
   strDay = Left$(strDatum,2)

   Dim strMonth As String
   strMonth = Mid$(strDatum,3,2)

   Dim strYear As String
   If iDatumlaenge = 6 Then
      strYear = Right$(strDatum,2)
   Else
      strYear = Right$(strDatum,4)
   End If
   
   Dim strDatumNeu As String
   If iDatumlaenge = 6 Or iDatumlaenge = 8 Then
      strDatumNeu = strDay & "." & strMonth & "." & strYear
      Call uidoc.fieldsettext("Datum", strDatumNeu)      
   End If
   
   If strDatum = "t" Then
      strDatumNeu = Str$(Today())
      Call uidoc.fieldsettext("Datum", strDatumNeu)      
   End If   
   
   
End Sub

Wer bietet mehr ?

 ;D

Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:Datum ohne Punkte eingeben
« Antwort #11 am: 21.03.04 - 22:29:55 »
ich mag ya blind sein, aber was macht dein script großartig anders als meine Formel ??
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Datum ohne Punkte eingeben
« Antwort #12 am: 21.03.04 - 22:34:46 »
Das Script funktioniert - das ist der Unterschied :-)

Deine Formel klappt mit einem Datumsfeld nicht, sondern stößt auf Fehler (weil Notes meckert wenn "030303" oder "t" im Datumsfeld steht - und man die Formel (leicht angepasst) in der Input Translation ausführt.

Außerdem keine Probleme mit Vornullen, da hier der Eintrag direkt als String gezogen wird.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:Datum ohne Punkte eingeben
« Antwort #13 am: 21.03.04 - 22:36:50 »
deshalb hatte ich eingangs gefragt, ob die Ausgangdaten genau in den zwei Formen vorliegen; und da funktioniert mein Script...
« Letzte Änderung: 21.03.04 - 22:39:47 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Datum ohne Punkte eingeben
« Antwort #14 am: 21.03.04 - 22:41:09 »
das ungute an der Exiting-Event-Lösung ist, dass das Event nicht zwangsläufig abgefeuert wird, nämlich dann nicht, wenn der Benutzer das Feld nicht verlässt
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Datum ohne Punkte eingeben
« Antwort #15 am: 21.03.04 - 22:41:58 »
deshalb hatte ich eingangs gefragt, ob die Ausgangdaten genau in den zwei Formen vorliegen; und da funktioniert mein Script...

Please explain. Habe den Satz jetzt 3 mal gelesen und oben Deine Postings gecheckt,  verstehe ich aber trotzdem noch nicht, den Satz.

Danke, Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Datum ohne Punkte eingeben
« Antwort #16 am: 21.03.04 - 22:46:12 »
das ungute an der Exiting-Event-Lösung ist, dass das Event nicht zwangsläufig abgefeuert wird, nämlich dann nicht, wenn der Benutzer das Feld nicht verlässt
Ja leider. Ich hab mir das mal angesehen, aber eine andere Möglichkeit hat man wohl nicht - weil eben Notes in einem Datumsfeld nach F9 / Aktualisierung 030303 (oder sonstige Strings) ablehnt.

Ich sehe nur 2 Möglichkeiten:
 a) Exiting-Event
 b) Textfeld

Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re:Datum ohne Punkte eingeben
« Antwort #17 am: 21.03.04 - 22:46:15 »
Sorry, hatte ein posting abgesetzt, was ich aber zwischenzeitlich gelöscht habe. Da hatte ich gefragt, ob das Datum als Text genau in den eingangs erwähnten Formaten vorliegt...
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:Datum ohne Punkte eingeben
« Antwort #18 am: 21.03.04 - 22:50:27 »

Ich sehe nur 2 Möglichkeiten:
 a) Exiting-Event
 b) Textfeld


eine andere: zwei Felder (1 Datum, 1 berechnetes Textfeld ). Dann z.B. im Editmodus nen Datepicker anzeigen und im Readmodus/in Ansichten das Textfeld mit übersetztem Datum
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Datum ohne Punkte eingeben
« Antwort #19 am: 21.03.04 - 22:53:29 »

Ich sehe nur 2 Möglichkeiten:
 a) Exiting-Event
 b) Textfeld


eine andere: zwei Felder (1 Datum, 1 berechnetes Textfeld ). Dann z.B. im Editmodus nen Datepicker anzeigen und im Readmodus/in Ansichten das Textfeld mit übersetztem Datum

Hab ich auch schon dran gedacht. Problem aber dabei genauso: Das Datumsfeld wird ja im Editmodus benutzt, und da hat man dann eben wieder das Problem: User gibt 030303 oder "t" (für Today)  ein.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz