Leerstring in einer Formel.

Guten Morgen!
Ich möchte eine Formel kreieren die lautet: Wen das Feld A1 leer ist, soll in Feld A2 der Wert “keine Daten” eingetragen werden. Die Formel würde dann, für meinen Kenntnistand, so lauten: IF A1 = “” then “keine Daten”. Wenn ich aber dieses “” als Feld leer in die Formel eingebe, bleibt das zu berechnende Feld A2 leer. Es wird nicht’s berechnet. Dagegen, wenn man in die Funktion “Global erstzen” geht, leert es die Daten im entsprechenden Taabellenfeld. Kann mir hier jemand behilflich sein, ich werde fast verrückt. Habe schon mit unzähligen Zeicheketten ausprobiert, erfolglos.

IF A1 = LEER THEN “keine Daten”

MISSING
LEER Das Feld ist leer (was logisch ein Unterschied zum Wert »0« ist; außerdem wird im Feld nichts dargestellt).

2 „Gefällt mir“

Lieber @Ottmar,
ich fürchte, so ganz habe ich deine Frage nicht verstanden.
Es geht um eine Tabelle, mit den Feldern A1 und A2. A2 soll je nach dem Wert von A1 anzeigen: “A1 ist leer” bzw. “A1 ist nicht leer”.
Als Einzelbedingung könnte man nun unter Feldeigenschaften / Rechenfeld / Formel des Feldes A2 z.B. eine folgender Formeln eintragen:

  1. IF A1 == ‘’ THEN ‘A1 ist leer’
  2. IF A1 THEN ‘A1 ist nicht leer’
  3. IF A1 !== ‘’ THEN ‘A1 ist nicht leer’
  4. IF NOT A1 THEN ‘A1 ist leer’

Um das zusammenzufassen könnte man verketten:

  • IF A1 == ‘’ THEN ‘A1 ist leer’ ELSE ‘A1 ist nicht leer’

Was Papyrus macht: es ersetzt in diesen Formeln die doppelten Anführungszeichen durch die einfachen, was beim Leerstring zu Verwirrung führen kann. ( “x” → ‘x’, aber “” → ‘’)

mfg os|<ar

1 „Gefällt mir“

Lieber Ottmar,

das geht mit den von @Alex.ch und @oskar21 angegebenen Funktionen/Formeln ganz ausgezeichnet (alles andere wäre ja auch grober Unfug!).

Ich habe mal testweise in einer Tabelle zwei Felder namens ‚TestString‘ und ‚TestAuswert‘ angelegt und dann in ‚TestAuswert‘ folgende Formel eingegeben:

IF TestString = LEER THEN ‚Ja‘ ELSE ‚Nein‘ (statt ‚LEER‘ kannst du auch ‚MISSING‘ verwenden).

Dann habe ich im 1. DS in Feld ‚TestString‘ irgendeinen alphabetischen Blubber geschrieben und im 2. DS nichts eingetragen. Daraufhin wertet Feld ‚TestAuswert‘ wie gewünscht so aus:

  1. DS: Nein
  2. DS Ja

Und fertig ist die Laube!

Du kannst auch, wie von Oskar angegeben, flgd. Formel für "TestAuswert’ verwenden: IF TestString = ‚‘ THEN ‚Ja‘ ELSE ‚Nein‘

Viele Grüße von Palinurus

1 „Gefällt mir“

Hallo zusammen!
Ich glaube ich muss in meinem Anliegen ein bisschen weiter ausholen. Ich wollte das eigentlich nicht, denn ich dachte so schwierig kann das ja nicht sein. Aber anscheinend doch.
Die Formeln die Ihr mir alle aufzeigt, sind mir wohl bekannt. Jedoch das Problem liegt eigentlich nicht an der Formulierung der Formel, sondern dass der Leerstring (“”) in der Formel auf das leere Feld A1 nicht angesprochen wird.
D.h.: In das Feld A2 Pflege ich folgene Formel ein: IF A1 = “” then “keine Daten”. Das würde für mich bedeuten, dass in das Feld A2 der Wert “keine Daten” eingetragen werden soll, wenn das Feld A1 leer ist. Und das geschieht eben nicht, sondern im Feld A2 wird gar nicht’s berechnet, es bleibt einfach leer. Ich kann mit MISSING arbeiten ich kann mit LEER arbeiten, ich kann auch so mit “MISSING” oder so “LEER” arbeiten, ich kann mit == arbeiten usw., das Feld A2 wird nicht berechnet.
Meinen Vermutungen nach sehe ich das so, dass der Leerstring (“”) oder MISSING, oder LEER das Feld A1 nicht anspricht, warum auch immer.
Und nun eben die Frage: Warum spricht der Leerstring das Feld A1 nicht an. Hat der Leerstring falsche Zeichen? Muss man ihn anderst schreiben oder was ist hier los. Bei allen funktioniert’s, bei mir nicht. Was mache ich falsch.
Wenn ich nun folgende Formel kreiere: IF A1 = “2” then “keine Daten”, und trage im Feld A1 die 2 ein, dann funktioniert das ganze. Also ist die Formel richtig geschrieben. Nur, wenn ich den Leerstring (“”) in die Formel integriere, dann funktiniert es nicht, dann bleibt das Feld A2 leer. Es wird in Feld A2 nichts berechnet.
Dazu sei noch erwähnt, dass wenn ich mit der Funktion “Global ersetzen” arbeite, und ich im Dialog im unteren Feld den Leerstring (“”) eingebe, dann werden die Inhalte in den Tabellenfelder herausgenommen, die Felder sind dann leer. Hier spricht der Leerstring an, also kann er nicht ganz falsch sein. Nur, warum nicht in meinem Datenfeld.
Dazu muss ich allerdinges noch sagen, dass ich mit einem MAC OSX Version Big Sur arbeite.
Grüße aus Hohenzollern Ottmar

Keine Ahnung. Aber nicht nur diese deine Formel funktioniert bei mir:

IF A1 = ‚2‘ THEN ‚keine Daten‘

Sondern auch wenn ich die „2“ in der Formel entferne (IF A1 = ‚‘ THEN ‚keine Daten‘), funktioniert sie bei mir immer noch und meldet bei Erstellung eines neuen DSes in A2 prompt „keine Daten“! Genauso mit „LEER“.
(Ergänzung: Wenn schon Datensätze vorhanden sind, wird die Wirkung der Formel auch schon vor der Anpassung der Tabelle in der Vorschau sichtbar.)

Ist doch Big Sur schuld? :unamused::smiley:

2 „Gefällt mir“

Lieber Ottmar,

ich kann mir das “Verhalten” in deiner Tabelle nicht erklären, zumal ja bei Eingabe von irgendwas die Formel zu funktionieren scheint. – Hast du das Ganze schon mal mit einer ganz neu agelegten Tab versucht? Vielleicht ist deine TestTab ja korrupt.
Und dann: Hast du die Felddefinitionen überprüft? Kann es sein (nur vermutungsweise), daß eine Felddefinition von A1 vorliegt, die auf einen leeren String nicht anspringt? – Ich frage das, weil es bei bestimmten M$-VBA Programmierungen vorkommt (etwa in Access), daß der “Leerstring”-Operator bei derlei Formeln nicht “anspringt” und man stattdessen mit ‘IsNull’ operieren muß (wobei es sein könnte, daß der in Papyrus verwendete Operator ‘Leer’ dasselbe repräsentiert).

An deiner Stelle würde ich – falls nicht schon geschehen – diese zwei Optionen mal noch probieren. Sonst fällt mir jedenfalls nichts mehr ein. Normalerweise funktionieren derlei If-Then-Schleifen zuverlässig. Komisch scheint mir auch, daß ja offenbar auch der Else-Zweig nicht anspringt (falls du ihn nutzt). Der ließe sich ja so gestalten, daß dann z.B. mal – also als Else-Ausgabe --. der Feldinhalt von A1 in A2 ausgegeben werden könnte, um zu sehen, was dann ausgespuckt wird, wenn tatsächlich (also nach deinem Ermessen) nichts drinsteht!

Ergänzung: Probiere doch mal den “2er-Fall” mit Integration von ELSE aus: Also trage in A2 die Formel ein: IF A1 = ‘’ THEN “Kein String” ELSE A1.
Wenn in A1 tatsächlich eine 2 steht und sie der Formel gemäß in A2 erscheint, wird der ELSE-Zweig der Formel richtig ausgewertet. Dann liegt es schon mal nicht an der Formel, sondern offenbar am Leerstringzeichen in ihr!
Bei deinen zwei Kommentaren im Thread sehe ich immer “”. Es ist aber (bei mir) so, daß das automatisch in ‘’ umgewandelt wird, wenn ich die Formel abschließe nach Eingabe. Offenbar kann in der PapyrusTab das Zeichen “” für Leerstring nicht ausgewertet werden. Will sagen: Was steht denn bei dir exakt als Formel eingegtragen, wenn du die Tab ghespeichert hast? Steht dann immer noch “” oder wird das umgewandelt? Wenn keine Umwandlung erfolgt, trage mal händisch nur ‘’ ein statt “”.

Grüße von Palinurus

1 „Gefällt mir“

Ich denke, da wird schon berechnet.
Versuch doch mal das folgende ins Rechenfeld A2 einzugeben:
IF A1 = LEER THEN “Ist Leer” ELSE “Da ist was”
Dann solltest du immer eine Reaktion erhalten, wenn du etwas in A1 eingetragen oder gelöscht hast und dann das Feld verlässt, auch wenn da eventuell nur ein schlichtes Blank drinsteht…

2 „Gefällt mir“

Versuch mal „A1gleich leer.pap“ zu öffnen. da funktionierts bei mir.

A1gleich leer.pap (5.5 KB)

1 „Gefällt mir“

Hallo zusammen!
Zunächst mal vielen Dank für all Eure Tipps.
Entschuldigt, dass ich mich jetzt erst wieder melde!
Leider habe ich noch eine weitere Baustelle. Bin beim Sanieren der Fassade meines Eigenheimes.

Nun, ich habe einiges ausprobiert, aber des Rätsels Lösung ist, dass es auf den Datentyp des Feldes ankommt, damit der Leerstring interpretiert wird. Warum das so ist, bin ich überfragt.
Nachdem, dass Alex mir eine Datei angehängt hat, habe ich diese heruntergeladen und dann geöffnet, und siehe da, in dieser Datei hat es auch bei mir funktioniert. Ich fragte mich dann, warum nicht auch bei meiner Datei. Irgendwann bin ich dann darauf gekommen, dass ich mal die Datenfeldtypen vergleichen könnte. Und siehe da, bei der Datei von Alex, und vermutlich auch bei allen anderen, waren die Datenfelder, mit denen der Leerstring verknüpft ist, mit dem Datentyp “Text oder Zahl” eingestellt. Bei mir war der Datentyp “ Datum” eingestellt. Nach mehrmaligem hin-und herprobieren hat sich tatsächlich herausgestellt, dass der Leerstring (““, Leer, Messing etc.) in einer Formel nur in den Feldern als “leer” interpretiert wird, welche mit einem Datentyp was Text enthält, eingestellt sind.
Also, es lag nicht am Rechner und auch nicht an der Formulierung der Formel. Es lag einfach an der Einstellung des Datentyps im Datenfeld.
Das muss man allerdings auch erst wissen.

Im Anhang habe ich mal einen Auszug aus meiner Datenbank für Reparaturen und Instandsetzungen. Hier ist auch das Thema entstanden.

Es geht darum die Haltbarkeit der Leuchtmittel (Glühbirnen etc.) zu ermitteln. Hierzu habe ich ein Datenfeld als “Letzte_Maßnahme” benannt.
Da ich zum Zeitpunkt (vor ca 10 Jahre) die Haltbarkeit der Leuchtmittel noch nicht erfasst habe, gibt es hierzu keine Daten. Die Tabelle hört dann irgendwo auf.
Nun möchte ich aber die Haltbarkeit dieser Leuchtmittel erörtern und habe mir Folgendes ausgedacht:
Ich kreiere ein Feld Namens “neue_Maßnahme”, und erstelle die Formel:

Totaldays (neue_Maßnahme-Letzte_Maßnahme)/30) und fertig. Es funktioniert auch.

Weil die Tabelle aber, zu irgendeinem Zeitpunkt endet, gibt es keine, weiterzurückliegenden Daten. Das Feld “Letzte_Maßnahme” ist dann leer.
Dann habe ich gedacht, dass ich dies dann so regle und sage:
Wenn das Feld “Letzte_Maßnahme” leer ist, dann trage mir dort ein, ”keine Daten vorhanden”. Die Formel dazu wäre:

IF Letzte_Maßnahme = ““ THEN “keine Daten vorhanden”.

Nun, dies hat dann in der Form, nicht funktioniert, eben, wegen diesem Leerstring beim Datentyp “Datum”.
Deshalb habe ich nun folgendes gemacht:
Ich habe ein weiteres, neues Feld, mit dem Namen “hilfsfeld_letzte_Maßn” als Ankreuzfeld erzeugt. Wenn ich nun den letzten Datensatz in der Tabelle bearbeite, setzte ich in diesem Hilfsfeld einen Haken, und dann schreibt Papyrus in das Feld “Letzte_Maßnahme” den Text “keine Daten” und in das Feld “Haltbarkeit“ “Berechnung nicht möglich, letzte Maßn. nicht bekannt”.
Die Verknüpfungen sind folgendermaßen:

Im Feld “Letzte_Maßnahme”:
IF hilfsfeld_letzte_Maßn : ‘nicht bekannt’ THEN ‘nicht bekannt’ ELSE ‘‘

Im Feld “Haltbarkeit”:
IF hilfsfeld_letzte_Maßn AND Letzte_Maßnahme : ‘nicht bekannt’ THEN ‘Berechnung nicht möglich, letzte Maßn. nicht bekannt’ ELSE TOTALDAYS(neue_Maßnahme - Letzte_Maßnahme) / 30

Im Feld “hilfsfeld_letzte_Maßn“ ist unter Werte “Letzte Maßnahme nicht bekannt?“ Eingetragen. Dies ist zu erkennen im Eingabeformular. Siehe Bildschirmfoto im Anhang.

Ich hoffe, Ihr könnt die Dateien öffnen, dann könnt Ihr austesten und probieren. Auch die Verknüpfungen und Einstellungen sind dann besser nachvollziehbar.
Bin mit der Hochladerei nicht ganz so fitt.

Bring leider das Eingabeformular nicht hochgeladen, deshalb nur anbei ein Bildschirmfoto.

Es grüßt Euch Ottmar aus dem winterlichen Hohenzollern.
Übrigens, ich wohne tatsächlich am Fuße der Burg Hohenzollern.
Schönen Abend noch.

TestDB_ wegen_Leerstring.pb (1.71 KB)

Rep TestDB_ wegen_Leerstring_20201202.pap (5.04 KB)

1 „Gefällt mir“

Hallo Ottmar,

ich freue mich für dich, daß du den Fehler finden konntest. Daß es daran gelegen haben könnte, hatte ich ja vermutungsweise schon angesprochen. Vgl. dazu:

Ist mir jetzt ganz recht, daß du diese Rückmeldung gibst, dann weiß ich gleich, worauf ich u.a. auch achten muß, wenn ich vielleicht mal so eine Tab nutzen möchte.

Viele Grüße von Palinurus

Hallo Ottmar,

Du kannst das Ganze etwas vereinfachen.
Letzte_Maßnahme und neue_Maßnahme ohne Rechenregeln, das Hilfsfeld_Letzte_Maßn löschen
und bei Haltbarkeit als Berechnungsformel
IF JAHR(Letzte_Maßnahme) >= 1900 THEN TOTALDAYS(neue_Maßnahme - Letzte_Maßnahme) / 30
Die Haltbarkeit wird also nur berechnet, wenn dort ein Datum nach dem 31.12.1899 eingetragen ist. Ist die Letzte_Maßnahme leer oder enthält ein Datum vor 1900, bleibt das Feld Haltbarkeit leer.
Das sollte für Deinen geschilderten Zweck reichen, ich gehe mal nicht davon aus, dass Du irgendwelche Glühbirnen im 19. Jhd das letzte Mal ausgetauscht hast :wink:

2 „Gefällt mir“