Autor Thema: Felder in Teilmaske vergleichen  (Gelesen 9013 mal)

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Felder in Teilmaske vergleichen
« am: 27.01.12 - 11:49:42 »
Hallo,

ich würde gerne beim Schließen einer Teilmaske den Inhalt zweier Felder vergleichen.
Ich dachte eine Simple abfrage würde da gehn und habs so probiert:
@If(@GetField("NameAmAnfang")!=@GetField("NameAmEnde");@Prompt([Ok];"test";"Name ist geändert");@Return(""))

Irgendwas mach ich falsch. Ist der Code falsch? Die Meldung kommt nämlich nie. In welchem Event wäre denn eine solche Abfrage richtig angesiedelt?

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Felder in Teilmaske vergleichen
« Antwort #1 am: 27.01.12 - 12:08:04 »
Die Felder befinden sich in der Maske, die die Teilmaske enthält, oder direkt in der Teilmaske? Dann verzichte auf das @GetField

@If(NameAmAnfang != NameAmEnde;@Prompt([Ok];"test";"Name ist geändert");@Return(""))

Auf das @Return kannst Du verzichten, falls danach nichts mehr passiert

@If(NameAmAnfang != NameAmEnde;@Prompt([Ok];"test";"Name ist geändert");"")

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Felder in Teilmaske vergleichen
« Antwort #2 am: 27.01.12 - 12:24:44 »
Irgendwie sagt mir meine in die Jahre gekommene Glaskugel gerade, dass Du eine Dialogbox meinst, ich erinnere mich schwach, dass wir schon mal über den Unterschied von Teilmaske und Dialogbox diskutiert hatten.

Bei einer Dialogbox würde ich das alles in Script machen.

Temporäres Dokument erstellen
Relevante Felder kopieren
Dialogbox basierend auf temporärem Dokument öffnen
Nach Beenden der Dialogbox Inhalte der Felder überprüfen und davon abhängige Handlungen starten, aufrufendes Dokument aktualisieren

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Felder in Teilmaske vergleichen
« Antwort #3 am: 27.01.12 - 13:00:19 »
Hallo Peter,

danke für deine Hilfe. Ja. Du hast recht. Ich hab eine Dialogbox, die mir eine Teilmaske anzeigt, die Werte aus einem Dokument lädt und auch wieder welche in das Dokument schreibt.
Dein Code klappt super. Macht genau was es soll. Dafür schonmal Danke!! :)

Ja, wir haben schonmal drüber gesprochen. Ich hab den Thread auch nochmal durchgelesen.
http://atnotes.de/index.php/topic,51153.0.html

Über
Code
changecheck = ws.DialogBox ("Teilmaske", True , True, False, True, False, False, "Dialog Box",,True)
Ruf ich eine Teilmaske auf, ich kann was ändern, prüfe kurz die Felder und alles passt.

Was spricht denn gegen meine Vorangehensweise? Bringt die Nachteile mit sich?
Oder war das auf die Prüfung der Felder in @Formula bezogen?

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Felder in Teilmaske vergleichen
« Antwort #4 am: 27.01.12 - 15:03:25 »
Ich bin mir nicht wirklich sicher, was Du konkret meinst. Was ist denn Deine Vorgehensweise, die evtl. Nachteile mit sich bringen kann, vorallem, gegenüber welcher anderen?

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Felder in Teilmaske vergleichen
« Antwort #5 am: 27.01.12 - 15:49:15 »
Ich hab mich auf deine Empfehlung zum Script bezogen.
 
Bei einer Dialogbox würde ich das alles in Script machen.

Temporäres Dokument erstellen
Relevante Felder kopieren
Dialogbox basierend auf temporärem Dokument öffnen
Nach Beenden der Dialogbox Inhalte der Felder überprüfen und davon abhängige Handlungen starten, aufrufendes Dokument aktualisieren

Meine grobe Vorangehensweise:
Ich öffne aus einem Dokument heraus eine Dialogbox(Script), die mir eine Teilmaske zeigt, die ausgewählte Felder des Dokuments enthält.
Da kann man nun Änderungen machen die ich dann in das Ursprüngliche dokument schreib.
Und wenn sich nun der Name ändern sollte, möchte ich ein spezielles Feld des Dokuments ändern. Und deshalb hab ich zu einer kurzen @Formel gegriffen, anstatt mich mit einem längeren script zu befassen.

Ich bin ja mit Teilmasken und Dialogboxen (immer)noch ein Anfänger und bin froh, das es jetzt läuft so wie es soll. Aber mich würde es schon interessieren, warum du den oben Zitierten Weg gehen würdest  :)

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Felder in Teilmaske vergleichen
« Antwort #6 am: 27.01.12 - 17:06:54 »
Wenn es funktioniert, was Du machst, ist es grundsätzlich in Ordnung.

Ich arbeite generell mit temporären Dokumenten in der Dialogbox, da ich nicht will, dass mir eine Dialogbox irgendwelche Steuerfelder, die ich nur in der Box brauche, zurück in das Dokument schreibt. Mit einem temporären Dokument habe ich alles selbst in der Hand und entscheide, welche Information ich ins aufrufende Dokument schreibe und welche nicht. Auch eine notwendige Validierung, die ich vielleicht nicht in der Box durchführen kann, weil die möglicherweise allgemeingültig ist, kann ich dann bequem nach der Box im Script erledigen und ggf. die Box erneut mit den eingetragenen, oder auch korrigierten Werten anzeigen, ohne dass mir zwischenzeitlich die nicht gewollten Werte ins Ursprungsdokument geschrieben werden.

Das ganze ist etwas aufwendiger, mir persönlich aber wesentlich sympathischer, weil es eine saubere Trennung von Dialogbox und aufrufendem Dokument gibt. Das entspricht meinen Vorstellungen von modularer Bauweise.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Felder in Teilmaske vergleichen
« Antwort #7 am: 27.01.12 - 18:04:04 »
Hallo Chris,

hier sind meine 2 cents:
Peter hat hier wirklich best practices beschrieben. Diese Methode gibt Dir die volle Kontrolle über alles!

Weiters (nur, um das klarzustellen):
Es ist vollkommen wurscht, ob Du für die Dialogbox (LotusScript oder Formel) eine Maske oder eine Teilmaske verwendest.
Ich persönlich (!!) neige dazu, Teilmasken wirklich absolut nur dann einzusetzen, wo sich dies gar nicht anders vermeiden lässt - so vermeidet man das sprichwörtliche "Flöhehüten" und vieles andere auch (beispielsweise, dass eine Teilmaske nicht in allen Fällen "on the fly" neu durchrechnen lässt).

Good luck,
Bernhard

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Felder in Teilmaske vergleichen
« Antwort #8 am: 27.01.12 - 19:30:21 »
Da muss ich doch mal eine Lanze für Teilmasken brechen. Ich verwende (zumindest in zusammenhöngenden Systemen) immer Teilmasken. Jede Maske enthält wenigstens eine Kopf- und eine Fußteilmaske, die in allen Masken identisch sind (gemeinsame Schablone, Elemente verteilt mittels Designtask). Zusätzlich kann es weitere Teilmasken geben, die jeweils ein spezielles Thema abdecken. Nur so ist eine saubere Modulbauweise möglich. Z.B. Schaltflächen wie Schließen, Speichern, Bearbeiten, Hilfe usw. baue ich nur ein einziges Mal, nämlich in der Kopfteilmaske (bzw. die Hilfe in der Fußteilmaske, damit die immer die letzte ist). Neudeutsch nennt man sowas wohl Framework.

Kleiner Nachteil: Eigene Schaltflächen der Maske müssen in einer separaten Teilmaske realisiert werden, da die sonst vor denen der Kopfteilmaske erscheinen.

Noch nie habe ich einen einzigen Floh gesehen, der dabei gehütet werden wollte ...

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Felder in Teilmaske vergleichen
« Antwort #9 am: 28.01.12 - 00:36:03 »
Ich spreche nicht den Subforms ihr Existenzrecht ab. Wirklich nicht! Ich setze diese auch ein, aber jeweils aus wirklich wohlüberlegtem Grund.
Und die Probleme / "Flöhe", die auftauchen können, sind schon spezifisch und würden in einen eigenen Thread gehören.

Bernhard

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Felder in Teilmaske vergleichen
« Antwort #10 am: 31.01.12 - 14:08:53 »
Okay. Das heißt also, dass Teilmasken jedesmal komplett alle Felder (soweit möglich) nochmal neu in das Dokument schreiben und eine Prüfung der Eingaben - wie es in Dokumenten möglich ist - da nicht gegeben ist.
Gut zu wissen!

Danke euch beiden für eure Hilfe! :)

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Felder in Teilmaske vergleichen
« Antwort #11 am: 31.01.12 - 18:31:44 »
Nein, das sind immer noch keine Teilmasken. Und Dialogboxen schreiben die Felder nicht "nochmal neu" ins Dokument, sondern aktualisieren alle Felder des dahinterliegenden Dokuments, sofern das nicht über einen Parameter ausgeschaltet ist.

Eine Teilmaske ist ein Element, um Masken mit wiederverwendbaren Modulen erweitern zu können. Eine Dialogbox ist eine Funktion, mit der Daten im Dialog eingegeben werden können. Das Aussehen einer Dialogbox wird durch die verwendete (Teil-)Maske definiert.

Früher hätte man das 50 mal abschreiben und von den Eltern abzeichnen lassen müssen. Vielleicht hilfts ... ;)

Offline smokyly

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.169
  • Geschlecht: Männlich
  • Nicht jeder ist ersetzbar.
Re: Felder in Teilmaske vergleichen
« Antwort #12 am: 31.01.12 - 21:33:40 »
Darf ich mal ne Zwischenfrage stelle, ohne gleich einen neuen Fred auf zu machen?
Ich habe Dialogboxen aufgrund von Teilmasken erstellt. Diese Dialogboxen verwende ich in zig Hauptmasken - oder will es zumindest. Was wäre daran denn ein Fehler? Es werden doch nur zusätzlich die Felder weg geschrieben, die in dieser Teilmaske definiert sind. Diese Felder sind aber definitiv nicht in der eigentlichen Maske vorhanden.

Vielen Dank, wenn ich klarer sehen darf.
Geri

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Felder in Teilmaske vergleichen
« Antwort #13 am: 31.01.12 - 22:08:26 »
Es gilt das, was Peter schon geschrieben hat, Geri: Teilmasken sind TEIL einer anderen Masken und können ausser in Dialogboxen nicht stand alone betrieben werden.
Doppelte Feldnamen (in der Summe von Maske und Teilmasken) sind ebenfalls nicht zulässig (probiert es halt mal aus  ;)).

Für ein Dokument (also Backend!) spielen Masken / Teilmasken keinerlei Rolle.
Im Frontend: Felder verhalten sich auch so, als wenn sie in der (Ober-)Maske vorhanden wären.

Bernhard

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Felder in Teilmaske vergleichen
« Antwort #14 am: 31.01.12 - 22:10:58 »
In Deiner Teilmaske sind Felder, die nicht in der Maske sind? Und Du bearbeitest das Dokument mit einer Dialogbox, die auf der Teilmaske basieren? Dann kann es sein (je nach Aufruf der Dialogbox), dass durch die Felder, die sich in der Teilmaske befinden, gleichnamige Items im Dokument angelegt werden.

Das ist grundsätzlich kein Fehler, die Frage ist aber, brauchst Du die Felder im Dokument? Mal ein extremes Beispiel:

In der Dialogbox willst Du einen Wert aus einer Liste auswählen lassen. Aus irgendeinem Grund berechnest Du die Liste nicht in dem Auswahlfeld, sondern in einem separaten Feld in der Teilmaske und greifst mit dem Auswahlfeld darauf zu (dagegen ist absolut nichts einzuwenden). Der Inhalt dieses Feldes kann nun recht groß sein, und wenn Du die Dialogbox so aufrufst, dass neue Felder im aufrufenden Dokument gespeichert werden, hast Du diese Liste nach der Box in Deinem Dokument. Dort brauchst Du es aber nie, riskierst aber die vielgeliebte 32k-Fehlermeldung.

Natürlich kann man die Dialogboxen so aufrufen, dass keine neuen Felder übernommen werden. Und alle Felder, die man aus der Dialogbox braucht, übernimmt man in die Maske, die anderen lässt man weg. Aber spätestens, wenn man allgemeingültige Dialogboxen baut, kommt man ins straucheln. Wenn Du zum Beispiel eine Dialogbox hast, die ein Feld "Wert" enthält, in dem der aus der Liste ausgewählte Wert eingetragen wird, und Du diese Dialogbox innerhalb desselben Dokuments (Maske) an verschiedenen Stellen aufrufst, um in jeweils separate Felder den ermittelten "Wert" übernehmen zu können, ist es nur sinnvoll, das über ein temporäres Dokument zu tun und dann den Inhalt von Wert in das gewünschte Feld zu schreiben, ohne Rücksicht auf irgendwelche anderen Felder nehmen zu müssen.

Ohne temporäres Dokument müsstest Du entweder nach der Dialogbox den über die Dialogbox im Dokument gespeicherten Wert verschieben (schlecht), oder Du baust für jedes Feld eine eigene (Teil-)Maske, über die Du mit der Dialogbox das jeweilige Feld füllst, obwohl die Dialogbox logisch immer gleich ist (noch viel schlechter).

Deshalb nehme ich IMMER ein temporäres Dokument als Grundlage für eine Dialogbox, und mir fallen bestimmt noch mehr Gründe dafür ein, wenn ich länger darüber nachdenke.

Offline smokyly

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.169
  • Geschlecht: Männlich
  • Nicht jeder ist ersetzbar.
Re: Felder in Teilmaske vergleichen
« Antwort #15 am: 01.02.12 - 11:03:10 »
Vielen Dank für die Erläuterungen!

Beste Grüsse
Geri

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Felder in Teilmaske vergleichen
« Antwort #16 am: 03.02.12 - 09:17:23 »
Nein, das sind immer noch keine Teilmasken. Und Dialogboxen schreiben die Felder nicht "nochmal neu" ins Dokument, sondern aktualisieren alle Felder des dahinterliegenden Dokuments, sofern das nicht über einen Parameter ausgeschaltet ist.

Eine Teilmaske ist ein Element, um Masken mit wiederverwendbaren Modulen erweitern zu können. Eine Dialogbox ist eine Funktion, mit der Daten im Dialog eingegeben werden können. Das Aussehen einer Dialogbox wird durch die verwendete (Teil-)Maske definiert.

Früher hätte man das 50 mal abschreiben und von den Eltern abzeichnen lassen müssen. Vielleicht hilfts ... ;)

In den heutigen Zeiten - vorallem in der IT - schreibt doch keiner mehr was ab. Wozu gibts denn auch sonst Copy & Paste ? ;)

Ich werd mir den Thread aufjedenfall als Nachschlagewerk dokumentieren.
Danke nochmal!  :)

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz