Geburtsdatum, Figuren, Datenbank

Naja, habe ich gesucht. Ich möchte das Geburtsdatum einer Figur in einem Kalender eingeben können. Das Alter der Figur ist dann in der Story immer aktuell. Jetzt lege ich sie an, 28 Jahre z. B. und die Geschichte geht weiter. Nach 10 oder 20 Jahren muss ich jedes Mal nachrechnen, wie alt ist der Charakter jetzt gerade? Passt die Szene zum Alter? Bei einer „Kalender-Geburt“ wird die Figur mit dem Fortgang der Geschichte gleichsam mit älter. Gruß zurück.
In der Eingabemaske habe ich jetzt das Feld >>Geburt<< als Datentyp-Zeitpunkt. Daneben das Feld >>Alter<< als Datentyp-Text-oder-Zahl. In diesem Feld möchte ich nach Eingabe der Geburt, das Alter angezeigt (ausgerechnet) haben. Wie geht das?
Danke und Gruß.

Gar nicht, denn dafür müsste die Datenbank ja wissen, zu welchem Zeitpunkt der Geschichte ab welchem Startpunkt der Geschichte die Angabe gemacht werden soll. Wir denken darüber nach, ist aber Zukunftsmusik.

1 „Gefällt mir“

Es geht zwar nicht ganz automatisch, wie @Ulli sagte, es braucht ein Bezugsdatum.
Möglich ist folgendes:
Das Feld Geburtsdatum (als Datum, hast Du ja schon),
ein Feld Bezug (Datentyp Datum, Default-Wert = CURRENT_DATE) in der Tabelle anlegen,
ein Feld Alter (Datentyp Text/Zahl, berechnetes Feld, Formel: Year(Bezug) - Year(Geburtsdatum) + " Jahre alt"
in die Tabelle einfügen (Datenbank/Feldeigenschaften) und speichern.

Die Felder im Eingabeformular einfügen. Jetzt muss halt immer das Bezugsdatum im Feld Bezug angegeben werden, damit sich das Rechenergebnis ändert.
Bei mehreren Bänden oder längeren Zeiträumen würde vlt. eine eigene Tabelle das Ganze erleichtern.

Vielleicht ist ja ein Denkansatz dabei. :wink:

4 „Gefällt mir“

Ja, großen Dank. Ich versuche das. Ich denke, wenn eine Geschichte ein Startdatum hat, dann 1. Tag 2. Tag oder Datum-der-Geschichte eingestellt ist, wäre es schön, wenn das Alter einer Figur mit diesen Datumsangaben verknüpft werden könnte.
PS. Funktioniert so leider nicht. Habe ja noch meine externe Excel Tabelle.
Guten Rutsch

Ich habe das mal getestet. Benötigt dafür werden 3 Felder: Geburtsdatum - Heute und Alter. Alle Felder Typ Datum.

  1. “Geburtsdatum”
  2. “Heute” - Initialisiert mit =AKTDATUM
  3. Berechnungsfeld “Alter”; Formel: Heute - Geburtsdatum

Eingabe “Geburtsdatum”: 27.03.1934
Wert von Feld “Heute”: 28.12.2019
Berechnete Größe in Feld “Alter”: 05.10.086 also 86 Jahre

Das gleiche in einer Tabellenkalkulation berechnet ergibt den Wert 85.

Was ich nicht in der PAP DB gefunden habe, ist die Möglichkeit die Formatierung des Ausgabefeldes nur auf das JAHR, also “JJ” oder “JJJJ”. Es sind zwar viele Vorgaben vorhanden, aber keine die Formatierungen nur Tage, Monate oder Jahre anzeigen. Vielleicht weiß das hier jemand, wie man das benutzerdefiniert formatieren kann.

Wie auch immer, man kann sich die drei Felder in die Figuren-DB einbauen. Wenn man dann das “Heute”-Feld auch noch ausblenden könnte, wäre das elegant.

3 „Gefällt mir“

Danke für die große Mühe. Wenn ich das bei >Werte< eingebe klappt es nicht. Wo soll ich es eingeben, bzw. initialisieren?

Alles im Tabellenentwurf, das “=” muss weg.
Aktuelles Datum = Standardwert für neue (leere) Datensätze. (Registerkarte Rechenfeld, obere Hälfte)
Alter = Rechenfeld (Registerkarte Rechenfeld, untere Hälfte).
Die Registerkarte Werte brauchst Du gar nicht.

Die Formel von @Greifenklau hat den Vorteil, dass tatsächlich auf das Geburtsdatum (mit Tag und Monat) eingegangen wird und nicht pauschal die Jahre voneinander abgezogen werden.

  1. Berechnungsfeld “Alter”; Formel: Jahr(Heute - Geburtsdatum)-1 + " Jahre" (hängt einfach den Text in Anführungszeichen dran)

Das -1 hängt damit zusammen, dass Papyrus bereits das aktuelle Jahr (noch vor dem ersten Geburtstag) gleich mit einem Wert (1) versieht. Das verkompliziert das Ganze etwas.

Folgende Formel behebt das Problem:
IF (MONAT(bezug) >= MONAT(Geburtstag)) AND (TAG(bezug) >= TAG(Geburtstag)) AND (JAHR(bezug) > JAHR(Geburtstag)) //Bereits Geburtstag gehabt
THEN RETURN JAHR((bezug) - (Geburtstag)) - 1 + ’ Jahre alt’
ELSE RETURN JAHR((bezug) - (Geburtstag)) - 2 + ’ Jahre alt’ //noch keinen Geburtstag gehabt
ENDIF

3 „Gefällt mir“

DANKE! Es Geht, es geht …:laughing:
upload_2019-12-28_14-38-57.png
Was für eine riesen Freude. Wahnsinn. Alles Glück der Welt für dich und `n guten Rutsch.
LeonTee

1 „Gefällt mir“

@Greifenklau
Deine Idee ist im Prinzip gut. Das Problem ist, dass man nicht das reale aktuelle Datum nehmen kann, sondern man braucht das fiktive von der Geschichte. Man will ja das Alter der Figur in der Geschichte wissen. Und die kann irgendwann spielen. Dieses Datum müsste man vom Zeitstrahl nehmen. Aber das geht im Moment nicht.

2 „Gefällt mir“

Die Idee stimmt schon, es geht nur um die Vorbelegung des Datenbankfeldes bei Neueingaben. Das Feld kann dann im Formular händisch verändert werden und das Alter wird dann anhand der neuen Eingabe berechnet.
Die Zeit vom Zeitstrahl geht nicht, wäre auch kompliziert bei eigenen “Kalendersystemen” oder relativen Bezügen usw.
Also nur ein Workaround (und ein wenig Spielerei mit der Datenbank :wink: ).

1 „Gefällt mir“

Oder … würde es gehen?, wenn man ein Feld >Start-Datum der Geschichte< z. B. 1978 - (oder 13.02.1978). Dazu ein Feld >Start-Alter der Figur< genau oder Jahr. Also ist sie z. B. in 1978 (oder am 13.02.1978) 14 Jahre (oder 14 Jahre 1 Monat und 2 Tage) alt. Drittes Feld >Alter heute< Aber ich bin kein Datenbank Fachmann, dass seid ihr ja wohl mehr und besser. Aber kann man das so austricksen?

Momentan stehe ich etwas auf dem Schlauch: IF (MONAT(bezug) was soll da in den Bezug rein?

1 „Gefällt mir“

@LeonTee
Das würde ich dann in einer eigenen Tabelle machen. Da kommen aber schon Relationen ins Spiel (sonst müsste man Geburtsdatum redundant - und damit fehlerträchtig - eingeben). Aber es ändert nichts daran, dass Du Zeitstrahl UND Datenbank gleichzeitig pflegen und auch synchron halten musst…

@Greifenklau
Das Feld bezug ist das Bezugsdatum (die Namen sind halt noch die aus meiner DB).

Letztlich bekommst Du das Jahr eines Datums (also 86 oder 85) mit der Funktion Jahr(BetroffenerDatumswert).

1 „Gefällt mir“

Das Problem, was @neugierug aufzeigen wollte ist, dass Du ja irgendwo in der Geschichte stehst, z.B. 1991. Wie willst Du dann automatisch sehen können, wie alt Deine Figur jetzt ist? Du musst immer einen Bezug zum JETZT herstellen, also in ein Feld das Datum eingeben, in dem die Szene gerade spielt. Das mit der Zeitleiste war m.E. schon in die richtige Richtung.

1 „Gefällt mir“

Klar, verstehe. Also müssen letztendlich die Macher von Papyrus da ran. Aber ich versuche nachher die Formel von @neugierig

Ich habe mal die DB angehängt. Heute_Szene ist ein Feld für die aktuelle Datumseingabe und Alter-Szene rechnet nach der Formel von @neugierig das aktuelle Alter der Figur in der Szene.

Berechnung Alter.pb (1.42 KB)

1 „Gefällt mir“

@LeonTee
Ich habe noch mal nachgedacht. Wenn Du bei der Vorplanung schon wissen könntest, zu welchen Zeitpunkten Deine Figur auftritt, könntest Du in der DB das „Heute_Szene“-Feld als Combo-Feld festlegen und unter der Option „Werte“ die bekannten Zeitpunkte eingeben (pro Zeile 1 Datum); das funktioniert auch mit einem dem Datum angegliederten Text: 27.12.2019 Szene2 oder 27.12.2019 Rudis Flucht usw. In der Auswahlbox „Heute_Szene“ siehst Du dann jeweils diese Angaben. Wenn Du wissen willst, wie alt Rudi bei seiner Flucht ist, dann wählst Du „27.12.2019 Rudis Flucht“ aus dem Kombi-Feld und sofort siehst Du dann sein Alter zu dem jeweiligen Zeitpunkt.
Anbei mal die geänderte DB.

Recherche DB.zip (35.9 KB)

2 „Gefällt mir“

@Greifenklau Mega Dank. Ich wende das jetzt so an.

Man könnte auch für die Hauptfiguren an wichtigen Stellen ein Ereignis mit dem Alter setzen. Dann sieht man im Text und im Zeitstrahl das Alter und muss nicht in der DB nachschauen.

2 „Gefällt mir“