Datenbank Adresse

Hallo, meine Frau hat 133 Adress-Datensätze in Papyrus DB. Es soll eine Liste erstellt werden, die folgende Sortierung aufweist: Sortierung nach Geburtstag: Zuerst die Monate (Januar, Februar etc.) dann der Tag des jeweiligen Monats (1,4,6,). Also im Monat 1 hat am Tag 2 Johannes, am Tag 15 Martin, am Tag 25 Hans - im Februar hat am Tag 4 Toni etc. Geburtstag. In der Tabelle sortiert Papyrus erstens das Jahr, dann der Monat und dann der Tag. Für den gedachten Zweck ist es einfacher, wenn es Kalendarisch ist: Also beginnend mit dem Jahr.

Was ich derweilen getan habe, ist eine extrahieren von Monat, Tag und Jahr aus dem Feld Geburtstag. Ich dachte, es ist besser, eine neue Liste zu gestalten und habe in der Hauptliste das Feld Geburtstag als Relation angelegt. Ich Klicke also auf Geburtstag und eröffne einen neuen Datensatz in der Geburtstagsliste.

Und nun weiss ich nicht, wie es weiter gehen soll.

Hat jemand eine Idee oder eine Hilfestellung?

Gruß Romacasa

Aw: Datenbank Adresse

Soll die Liste als Export ein Textdokument sein oder eine zweite Datenbanktabelle?

Textdokument:

Soll es einfach als Export ausgegeben werden, dann einfach drei weitere Spalten anlegen: JAHR(Geburtstag) (Jahreszahl vierstellig); MONAT(Geburtstag) (zweistellig) und TAG(Geburtstag) (zweistellig). Beim Erstellen des Exports dann die Tabelle nach Monat, Tag, Jahr sortieren und diese Sortierung bei der Exportdatei mit festlegen.

Zweite Datenbanktabelle:

Wenn sich bei der Liste nicht all zu oft etwas ändert, einfach die erste Tabelle als Papyrusdatenbank exportieren und dann als zweite Tabelle importieren. Bei dieser zweiten Tabelle dann die drei zusätzlichen Datumsfelder ergänzen und entsprechend sortieren. Dann muss man jede Person, die dazu kommt auch exportieren und importieren bzw. bei Adress- oder Namensänderungen beide Tabellen korrigieren.

Oder eine neue Tabelle erstellen mit den Feldern, die die Geburtstagsliste enthalten soll und mit Relation jede einzelne Person rüberholen und diese Tabelle dann mit den zusätzlichen Datumsfeldern zum Sortieren ausstatten. Jede neue Person, die dazu kommt, muss dann in die zweite Tabelle per Relation rübergeholt werden.

Aw: Datenbank Adresse

Danke, hat funktioniert.

Nun eine andere Frage: Kann man bei einem Report (Tabellarisch) einen Datensatzumbruch erzwingen in diesem Sinne: Ich habe eine Liste, die unterhalb der Daten noch eine leere Zeile (Tabellenzeile) für Notizen enthält. Leider wird zum Teil der Tabellenbereich auseinander gerissen, sodass das Notizfeld auf der nächsten Seite erscheint. Ist nicht so schlimm, wenn es nicht geht, wäre halt schöner und übersichtlicher.

Gruß Romacasa

Aw: Datenbank Adresse

Und noch etwas: Ich möchte die Jahre und Tage einer Mitgliedschaft errechnen lassen. Also: am 02.07.2015 ist Herr Y beigetreten. Heute, am 02.10.2016 ist er 1 Jahr 3 Monate Mitglied. Es würde auch reiche, wenn im Feld stehen würde: “Im ersten Jahr”; Im zweiten Jahr" etc.

Es reicht damit nicht aus, Aktuelles Jahr vom Eintrittsjahr abzuziehen.

Hat jemand eine Idee?

Gruß Romacasa

Aw: Datenbank Adresse

Mit einem Rechenfeld vom Typ Text und ungefähr der folgenden Formel:

STR(JAHR(AKTDATUM) - JAHR(Eintrittsdatum)) + ’ Jahr(e) und ’ + STR((AKTDATUM - Eintrittsdatum) MOD 365.25) + ’ Tag(e)’

Schaltjahre werden hier nur halbherzig berücksichtigt, sodass die Tage +/- 1 schwanken können.

1 „Gefällt mir“

Aw: Datenbank Adresse

Ja, super. wo hast Du das her? Im Handbuch finde ich keine solchen Erklärungen.

Aw: Datenbank Adresse

Nun noch was - ja, ich nerve - Dennoch: Ich bräuchte noch eine Statistik. Jede Person hat in der Gemeinschaft einen Status - insgesamt gibt es 8. Ich habe nun versucht, einen Report als Statistik zu erstellen, was mir nicht gelang. Dann habe ich folgendes getan: Der Status (ist das Feldlabel) ist Text: z.B. HL und HLP sind solche. Ich habe nun 8 Spalten jeweils mit der Auswertung: IF Status = ‘HL’ THEN 1 ELSE ‘’ erstellt - ebenso bei den anderen mit dem jeweiligen Status. Damit stehen in den Spalte lauter 1 - in Übereinstimmung mit dem Status des Feldlabels.

Wie geht es nun weiter? Ich habe in einem neuen Feldlabel (GesammtHL) versucht, eine Summe zu ziehen. Kein erfolg gehabt.

Hat jemand eine Idee?

Gruß Romacasa

Aw: Datenbank Adresse

Was bedeutet “kein Erfolg”? Gibt der Summenbefehl eine Fehlermeldung?

Aw: Datenbank Adresse

Kein Erfolg bedeutet in der Summieren der jeweiligen “1” der jeweiligen Spalte. Ich bringe keine Summieren fertig. Papyrus meckert insofern, dass im Rechterfeld des Feldlabels GesamtHL er SUM(C1…C20) möchte und nur dies sei erlaubt. Ich hab dann die Spalten albbuchstabiert (so, wie es in Excel ist A, B, C, etc) und habe dann die HL Spalte als Y ausmachen können. Damit versuchte ich das Summieren: SUM(Y1…Y99). Und was sagt Papyrus: Unbekannter Typ.

Aw: Datenbank Adresse

Ich Habe es so gedacht: Für Jeden Status - 1 Feldlabel und 1 Gesamtlabel → Beispiel HL und HLGesamt. In der Spalte HL stehen die 1er (durch die obig beschriebene Abfrage ermittelt), in der Spalte HLGesamt steht die Summe aller 1er von HL. Und dieses Vorgehen alle 8 Statuse. Danach brauche ich für den Report nur noch 1 Seite, wo ich HLGesamt, HLPGesamt etc. aufliste mit der nötigen Beschreibun , und ich drucke dann NUR 1 Datensatz - egal welchen, da jeder Datensatz die Zahlen enthalten - aus. Sicher ist dies keine elegante Lösung und ich habe eine Unmenge an Labels in der Tabelle…

Danke für die Hilfe

ROMACASA

Aw: Datenbank Adresse

Im Handbuch sind die einzelnen Funktionen beschrieben (year(), str(), …). Man muss sie nur noch passend kombinieren, wofür ein klein wenig Programmierkenntnisse nützlich sind.

1 „Gefällt mir“

Aw: Datenbank Adresse

Bei einer Datenbank, aus der ich immer wieder eine Geburtstagsliste erstellen wollte, habe ich folgendes gemacht:

Es gibt ein Datenfeld “Geburtstag”, wo ich das Geburtsdatum ganz normal eingetragen habe, sowie ein Feld “Geburtstag_Tag”, in dem ich über eine Variable Bezugsdatum, die ich unter Datenbank-Eigenschaften-Variablen definiert habe, automatisch ein Datum ausrechnen lasse, bei dem durch einen Klick auf die Tabelle, die Datensätze nach Geburtstag geordnet werden).

Außerdem ein Feld Alter, das mir dann das Alter in Bezug zu einem bestimmten Zeitpunkt ausrechnet.

Feld Geburtstag_Tag

IF JAHR(Bezugsdatum) - JAHR(Geburtstag) < JAHR(Bezugsdatum - Geburtstag) THEN

TAG(Geburtstag) + ‘.’ + MONAT(Geburtstag) + ‘.’ + JAHR(Bezugsdatum) ELSE

TAG(Geburtstag) + ‘.’ + MONAT(Geburtstag) + ‘.’ + (JAHR(Bezugsdatum) - 1)

Durch das Bezugsdatum kann ich das korrekte Alter in einem bestimmten Datumsbereich errechnen lassen.

Feld Beitritt_Tag:

IF JAHR(Bezugsdatum) - JAHR(Beitritt) < JAHR(Bezugsdatum - Beitritt) THEN

TAG(Beitritt) + ‘.’ + MONAT(Beitritt) + ‘.’ + JAHR(Bezugsdatum) ELSE

TAG(Beitritt) + ‘.’ + MONAT(Beitritt) + ‘.’ + (JAHR(Bezugsdatum) - 1)

Hier noch die beiden Rechnungen für das Extra-Feld Alter:

Jahr(Geburtstag_Tag) - Jahr (Geburtstag)

Für Mitgliedschaftsdauer entsprechend:

Jahr(Beitritt_Tag) - Jahr (Beitritt)

Mit der Variable Bezugsdatum=20161231 lässt sich z.B. eine Jahresgeburtstagsliste für 2016 erstellen, bzw. eine Liste, wie lange jemand Mitglied war/sein wird in 2016.

Die Feldnamen müssen halt entsprechend angelegt oder verändert werden.

1 „Gefällt mir“

Aw: Datenbank Adresse

OK, danke werde es ausprobieren…