Geburtsdatum, Figuren, Datenbank

Dieses Thema im Forum "Vorschläge und Wünsche" wurde erstellt von LeonTee, 25. Dezember 2019.

  1. LeonTee

    LeonTee Member

    Hallo,
    es wäre sehr schön, wenn die jeweiligen Geburtsdaten der Figuren eingestellt werden können. Jetzt kann ja nur das Alter eingetragen werden. So altert die Figur mit dem Fortgang der Geschichte und das (aktuelle) Alter wird auch angezeigt.
    Danke
     
    Lilablau und alfredo gefällt das.
  2. neugierig

    neugierig Active Member

    Das Schöne an Papyrus ist, dass die Datenbank nicht geschlossen ist. D. h. jeder kann sie nach eigenen Wünschen anpassen.
    Im Handbuch ist das recht anschaulich beschrieben. Ansonsten einfach im Forum fragen, wenn es wo hakt... ;)
     
    LeonTee und Sarina gefällt das.
  3. LeonTee

    LeonTee Member

    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ß.
     
    Zuletzt bearbeitet: 28. Dezember 2019
  4. LeonTee

    LeonTee Member

  5. Ulli

    Ulli Administrator Mitarbeiter

    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.
     
    LeonTee gefällt das.
  6. neugierig

    neugierig Active Member

    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. ;)
     
  7. LeonTee

    LeonTee Member

    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
     
    Zuletzt bearbeitet: 28. Dezember 2019
  8. Greifenklau

    Greifenklau Well-Known Member

    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.
     
    LeonTee, oskar21 und Milar gefällt das.
  9. LeonTee

    LeonTee Member

    Danke für die große Mühe. Wenn ich das bei >Werte< eingebe klappt es nicht. Wo soll ich es eingeben, bzw. initialisieren?
    upload_2019-12-28_14-24-45.png
     
  10. neugierig

    neugierig Active Member

    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.

    3) 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
     
    Zuletzt bearbeitet: 28. Dezember 2019
    Greifenklau, LeonTee und oskar21 gefällt das.
  11. LeonTee

    LeonTee Member

    DANKE! Es Geht, es geht ...:LOL:
    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
     
    neugierig gefällt das.
  12. Milar

    Milar Well-Known Member

    @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.
     
    Greifenklau und LeonTee gefällt das.
  13. neugierig

    neugierig Active Member

    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 ;) ).
     
    LeonTee gefällt das.
  14. LeonTee

    LeonTee Member

    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?
     
  15. Greifenklau

    Greifenklau Well-Known Member

    Momentan stehe ich etwas auf dem Schlauch: IF (MONAT(bezug) was soll da in den Bezug rein?
     
    LeonTee gefällt das.
  16. neugierig

    neugierig Active Member

    @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).
     
    LeonTee gefällt das.
  17. Greifenklau

    Greifenklau Well-Known Member

    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.
     
    LeonTee gefällt das.
  18. LeonTee

    LeonTee Member

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

    Greifenklau Well-Known Member

    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.
     

    Anhänge:

    LeonTee gefällt das.
  20. Greifenklau

    Greifenklau Well-Known Member

    @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.
     

    Anhänge:

    LeonTee und Milar gefällt das.