Autor Thema: tausendertrennzeichen sofort anzeigen  (Gelesen 8573 mal)

Offline Roooky

  • Junior Mitglied
  • **
  • Beiträge: 50
tausendertrennzeichen sofort anzeigen
« am: 12.12.07 - 09:20:37 »
Moin moin!

Ich hab ein bearbeitbares Zahlenfeld und hätte gern, dass das eingestellte Tausendertrennzeichen sofort angezeigt wird, wenn der Benutzer eine Eingabe gemacht hat...
Wie geht das wohl? Irgendwie bei Exiting was zum Aktualisieren reinschreiben? Ich leider nix LotusScript...

Vielen Dank schon mal!
Lutz

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: tausendertrennzeichen sofort anzeigen
« Antwort #1 am: 12.12.07 - 09:31:03 »
Gib bei den Maskeneigenschaften an, dass Felder automatisch aktualisiert werden sollen.
Hat die maske sehr viele Felder oder ungecachete @dbLookups, geht das aber performancemässig nach hinten los.

Bernhard

Offline Roooky

  • Junior Mitglied
  • **
  • Beiträge: 50
Re: tausendertrennzeichen sofort anzeigen
« Antwort #2 am: 12.12.07 - 09:34:41 »
Danke Bernhard!
Leider ist es nur so wie vermutet und die Performance leidet etwas, grooooße Maske. Kann ich nicht wie beschrieben nur das Feld aktualisieren?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: tausendertrennzeichen sofort anzeigen
« Antwort #3 am: 12.12.07 - 09:36:44 »
Doch - mit LotusScript im Exiting- oder OnChange-Event.

Bernhard

Offline Roooky

  • Junior Mitglied
  • **
  • Beiträge: 50
Re: tausendertrennzeichen sofort anzeigen
« Antwort #4 am: 12.12.07 - 14:48:07 »
Falls jemand ähnliches vorhat: Folgender Code tuts im Exiting Bereich des Feldes.´


Sub Exiting(Source As Field)
   
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim Wert As String, WertNeu As String
   
   Set uidoc = ws.CurrentDocument
   
   Wert = uidoc.FieldGetText("Feldname")
   WertNeu = Format(Wert, "#,###")
   Call uidoc.FieldSetText("Feldname",WertNeu)
   
End Sub


Gruß und Danke,
Lutz

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: tausendertrennzeichen sofort anzeigen
« Antwort #5 am: 12.12.07 - 14:56:56 »
Das geht kürzer, Lutz:

   Dim ws As New NotesUIWorkspace
   Call ws.CurrentDocument.Refresh

Bernhard  ;)

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: tausendertrennzeichen sofort anzeigen
« Antwort #6 am: 12.12.07 - 14:59:27 »
Aber dann wird doch das ganze doc refreshed, oder?
Und das wollte Lutz doch nciht.
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: tausendertrennzeichen sofort anzeigen
« Antwort #7 am: 12.12.07 - 15:17:01 »
Der Refresh erfolgt aber nur einmal (i.d.R.), wohingegen der erste Vorschlag mit dem permanenten Aktualisieren das ja tatsächlich bei jeder Feldänderung tut.
Und Format nagelt Dich hier auch mit den digits fest ...

Bernhard

Offline Roooky

  • Junior Mitglied
  • **
  • Beiträge: 50
Re: tausendertrennzeichen sofort anzeigen
« Antwort #8 am: 12.12.07 - 15:19:57 »
Eigentlich möchte ich das nicht, stimmt. Aber so schlimm wärs nu auch wieder nicht, das Feld wird nur sehr selten geändert. Hautpsache ist, dass ich nicht den Effekt von "Felder automatisch aktualiseren" hab.
Lutz

@bernhard: du warst schneller....

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: tausendertrennzeichen sofort anzeigen
« Antwort #9 am: 12.12.07 - 15:26:38 »
Ah, Antwort#1 hat sich mir irgendwie entzogen...
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline Roooky

  • Junior Mitglied
  • **
  • Beiträge: 50
Re: tausendertrennzeichen sofort anzeigen
« Antwort #10 am: 12.12.07 - 16:10:41 »
Hallo nochmal!

Jetzt hab ich leider ein anderes Problem, was vielleicht mit dem ersten zusammenhängt.

In die Eingabevalidierung des gleichen Feldes schreibe ich:

@If(StZahl_1 <= 150000; @Success; @Failure("Über 150.000 produzierte Teile in dieser Schicht? Herzlichen Glückwunsch, Sie sind der Mitarbeiter des Monats!"))

StZahl_1 ist ein bearbeitbares Zahlenfeld.
Die Validierung arbeitet korrekt, aber beim ersten öffnen der Maske bekomme ich eine Fehlermeldung: "Für Vergleichsoperatoren müssen zwei Werte desselben Datentyps angegeben werden."
Tja, seh ich ja auch so. Nur was mache ich falsch?
Hab das mit dem Tausendertrennzeichen schon wieder rausgenommen, keine Änderung.
Hab die 150000 in Anführungszeichen gesetzt, StZahl_1 in Text umgewandelt, und alle Änderungen untereinander fröhlich kombiniert - aber es geht einfach nicht...

please support  ::)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: tausendertrennzeichen sofort anzeigen
« Antwort #11 am: 12.12.07 - 16:13:21 »
Das hat mit dem Exiting nichts zu tun.

@If(@IsNumber (StZahl_1) & StZahl_1 >= 150000; @Success; @Failure("Über 150.000 produzierte Teile in dieser Schicht? Herzlichen Glückwunsch, Sie sind der Mitarbeiter des Monats!"))

Beim Erstellen des Dokuments ist StZahl_1 ja noch "" ...

Bernhard

Offline Roooky

  • Junior Mitglied
  • **
  • Beiträge: 50
Re: tausendertrennzeichen sofort anzeigen
« Antwort #12 am: 12.12.07 - 16:24:34 »
Danke Bernhard!!!

Einen kleinen Fehler hattest du allerdings, tztztz   ;)
Klar, aus "<" muss ">" werden (wurde mir zumindest irgendwann klar...), aber es müssen auch @success und @failure getauscht werden.

THX!!

Offline Roooky

  • Junior Mitglied
  • **
  • Beiträge: 50
Re: tausendertrennzeichen sofort anzeigen
« Antwort #13 am: 12.12.07 - 16:27:41 »
Ach so, das Problem könnte eventuell gewesen sein, dass du den @failure-Text ernst genommen hast... Ist allerdings ironisch gemeint, denn mehr als 150.000 Teil pro Schicht kann man nicht produzieren...

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: tausendertrennzeichen sofort anzeigen
« Antwort #14 am: 12.12.07 - 16:37:37 »
Nein, nein, das war schon mein Fehler - ich habe nur auf das <= gestiert und nicht gesehen, dass die Reihenfolge @Success / @Failure ja zum gewünschten Ergebnis führt!

Bernhard

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: tausendertrennzeichen sofort anzeigen
« Antwort #15 am: 18.12.07 - 13:21:35 »
Hallo Bernhard,

ich möchte mich mal zu dem ursprünglichen Problem einmischen:

Ich verwende sehr oft diese in der Hilfe beschriebe Möglichkeit, um den gewünschten Effekt zu erhalten:

Sub Exiting(Source As Field)
  Dim workspace As New NotesUIWorkspace
  Dim uidoc As NotesUIDocument
  Set uidoc = workspace.CurrentDocument
  Call uidoc.Refresh
End Sub

Wo liegt der große Unterschiede zu deiner "kurzen" Lösung? Welche Lösung ist evtl. performanter?


Gruß
Stefan
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Glombi

  • Gast
Re: tausendertrennzeichen sofort anzeigen
« Antwort #16 am: 18.12.07 - 13:23:53 »
Das Exiting Event ist denkbar schlecht für sowas, denn es wird nicht immer ausgeführt. Wenn bspw. der User <Strg>-S und dann ESC druckt oder es eine Aktion in der Aktionsleiste gibt, die das macht, wird der Focus im Dokument nicht verändert und das Exiting Event wird nicht ausgeführt.

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: tausendertrennzeichen sofort anzeigen
« Antwort #17 am: 18.12.07 - 13:27:16 »
Der "grosse Unterschied" ist: Ich muss weniger tippen ...

In diesem Fall entspricht der NotesUIWorkspace bereits dem geöffneten NotesUIDocument. NotesUIDocument.Refresh und NotesUIWorkspace.ViewRefresh triggern dann beide das PostRecalc der Maske. Somit gibt es auch seitens der Performance keine (messbaren) Unterschiede.

Andreas: Das unter bestimmten Umständen (tatsächlich und natürlich) das Exiting gar nicht erst getriggert wird, ist im vorliegenden Fall aber vollkommen Banane  ;)

Bernhard

Offline cebolina

  • Senior Mitglied
  • ****
  • Beiträge: 386
  • Geschlecht: Männlich
Re: tausendertrennzeichen sofort anzeigen
« Antwort #18 am: 18.12.07 - 13:36:31 »
@Bernhard
Also ist es (bis auf meinen erhöhten Schreibaufwand) egal.
Danke

@Glombi
Dass das Exiting Event nicht immer ausgeführt wird ist (zumindest in meinem Fall) tatsächlich egal - wie Bernhard bereits geschrieben hat. Aber trotzdem Danke für den Hinweis.

Gruß
Stefan
Server: Lotus Domino 9.0.1FP4 HF70
Client: Release 9.0.1FP6

Offline Roooky

  • Junior Mitglied
  • **
  • Beiträge: 50
Re: tausendertrennzeichen sofort anzeigen
« Antwort #19 am: 08.01.08 - 19:11:32 »
Nachtrag: Es ist doch nicht egal!

Der kurze Refresh-Code produziert einen Fehler, wenn die Zahl geändert wird.
Wenn z.B. tausend, also "1.000", im Feld steht und man merkt, dass man sich vertippt hat und eine Null wegnimmt, bleibt "1.00" stehen, nicht "100".

Nach Speichern und erneutem Öffnen heißt es dann: "FEHLER: Nicht erkannte Zeichen hinter Zahl"...

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz