Seite 1 von 1

Feld in Tabelle einen Befehl zuordnen

Verfasst: Di 23. Mai 2017, 18:26
von dackelpack
Ich versuche gerade für unseren Verein eine Vereinsverwaltung aufzubauen, alles was man käuflich erwerben kann, hat uns entweder nicht gefallen oder war für unsere Zwecke zu teuer. Ich bin was Datenbanken angeht ein absoluter Anfänger und wurschtele mich so durch. Ich hab ein paar Tabellen angelegt, mir Formularfelder und ein paar Abfrage erstellt und komme soweit auch zurecht. Jetzt habe ich aber ein Problem und konnte weder bei Google, hier im Forum noch im BASE-Handbuch etwas finden (da ich vermutlich die falschen Suchworte benutze). Also, ich habe eine Tabelle "Mitglieder" in der es die Felder ID, Name, Vorname usw. und so fort gibt. Für das Feld "Alter" brauche ich ja eigentlich nicht rechnen bzw. das Alter eintragen, geht ja mit unten aufgeführten SQL-Code. Auch das Feld "Geschlecht" möchte ich nicht immer ausfüllen, da sich "männlich" oder "weiblich" ja über mein Feld "Anrede Herr/Frau" ableiten lassen würde. Mein Problem ist aber, ich finde keine Möglichkeit, den Tabellen-Feldern die entsprechenden Befehle zuzuweisen. In Calc ist das ja recht einfach über die Funktionen gelöst wie aber funktioniert das bei BASE? D.h. wo muss ich den unten aufgeführten Befehl in meiner Tabelle eingeben? Bei den Abfragen (siehe unten) ist das kein Problem, nur bei den Tabellen kann ich nichts finden!

Code: Alles auswählen

SELECT "Anrede", "Titel", "Nachname", "Vorname", "Straße", "PLZ", "Wohnort", "Geschlecht", "Familienstand", "Mgl.-Nr.", "Geburtsdatum",
CASEWHEN ((MONTH("Geburtsdatum") > MONTH(CURDATE())) OR
((MONTH("Geburtsdatum") = MONTH(CURDATE())) AND (DAY("Geburtsdatum") >
DAY(CURDATE()))) , DATEDIFF('yy',"Geburtsdatum",CURDATE())-1,
DATEDIFF('yy',"Geburtsdatum",CURDATE()))
AS "Alter" FROM "Mitglieder"

Re: Feld in Tabelle einen Befehl zuordnen

Verfasst: Di 23. Mai 2017, 19:21
von F3K Total
Versuche es mit dieser Abfrage:

Code: Alles auswählen

SELECT "Anrede", "Titel", "Nachname", "Vorname", "Straße", "PLZ", "Wohnort", "Geschlecht", "Familienstand", "Mgl.-Nr.", "Geburtsdatum",
CASEWHEN ((MONTH("Geburtsdatum") > MONTH(CURDATE())) OR
((MONTH("Geburtsdatum") = MONTH(CURDATE())) AND (DAY("Geburtsdatum") >
DAY(CURDATE()))) , DATEDIFF('yy',"Geburtsdatum",CURDATE())-1,
DATEDIFF('yy',"Geburtsdatum",CURDATE()))
AS "Alter",  CASEWHEN ("Anrede" = 'Herr', 'männlich', 'weiblich') AS "Geschlecht" FROM "Mitglieder"
So siehst du das Geschlecht.
Es ist natürlich auch möglich eine neue Spalte "Geschlecht" in der Tabelle anzulegen und diese mit 'männlich' oder 'weiblich', je nach Anrede zu füllen.
Geht alles per SQL.
Aber das wäre doppelte Datenführung.
Gruß R

Re: Feld in Tabelle einen Befehl zuordnen

Verfasst: Di 23. Mai 2017, 21:46
von dackelpack
Danke schon mal für die Antwort aber mein Problem bleibt! Wie/Wo kann ich die BASE-Tabelle damit füttern (keine Abfrage, sondern einfach die Einträge in der/dem entsprechenden Feld/Spalte)? Ich gehe davon aus, dass ich aktuell Bretter vorm Kopf habe aber leider lichtet sich der Wald nicht!

Re: Feld in Tabelle einen Befehl zuordnen

Verfasst: Mi 24. Mai 2017, 19:39
von RobertG
Hallo dackelpack,

grundsätzlich haben Felder, die aufgrund der Eingabe in andere Felder berechnet werden sollen, in der Tabelle nichts zu suchen. Wenn Sich Felder berechnen lassen, dann geschieht dies in einer Abfrage (oder einer Ansicht(View)). Das hat mehrere Gründe:
Tabellen sollen nur die notwendigen Daten enthalten. Alles das, was sich daraus erschließen lässt, bläht eine Datenbank nur auf.
Felder in Tabellen werden einmal beschrieben. Der Inhalt ist also mit dem Eingabewert, nicht mit einer Formel gespeichert. Das geben schon die Feldtypen gar nicht her.

Wenn Du tatsächlich über eine Formel (mittels Makro) z.B. das Alter in die Tabelle schreiben lässt, dann ist die Spalte eventuell schon einen Tag später veraltet - wenn die Person einen Tag später Geburtstag hat.

Gruß

Robert

Re: Feld in Tabelle einen Befehl zuordnen

Verfasst: Mi 24. Mai 2017, 19:57
von dackelpack
Hallo Robert,
Danke für deine Erklärung! Nachdem was ich heute recherchieren konnte ist es wohl (leider) so. Ich hab mich da ein bisschen verrannt, eine Abfrage ist ja nichts schlimmes :)!

Ich wünsche allen einen schönen Feiertag

dackelpack