Geburtstag suchen

Geburtstag suchen

Beitragvon Privateer3000 » So 23. Okt 2011, 12:10

Hallöchen Gemeinde,
ich beschäftige mich erst seit kurzem mit FM
den unser Verein gekauft hat.
Bisher bin ich ganz gut zurecht gekommen, doch jetzt
hab ich Schwierigkeiten mit den Datums.
Ich möchte,wenn das Layout Mitglieder aufgerufen wird,
separat anzeigen lassen welche heute Geburtstag haben oder
in der Luxuxvariante noch 3 Tage vorraus.
Die Spalte geburtstage liegt im Format dd.mm.yyyy vor.
Es müssen also Tag und Monat mit dem heutigen (plus 3 Tage) verglichen werden.

Wie stellt man das an? Und wie läßt man dies anzeigen (ein Element in einem Registersteuerelement wäre toll)?

Grüße
Privateer3000
 
Beiträge: 13
Registriert: So 23. Okt 2011, 10:28

Re: Geburtstag suchen

Beitragvon humbert » Mo 24. Okt 2011, 21:01

Wenn Du mit einem Register arbeitest, stellst Du Deine Daten wahrscheinlich in einem Ausschnitt dar. Und dann baust Du einfach eine Beziehung vom aktuellen Layout (Tabelle1) zu der Tabelle der Mitgliederdaten über folgende Felder (alles gespeicherte Formeln):
Tabelle1::Datum1 = Datum (MonatZahl (Hole (Systemdatum)); Tag (Hole (Systemdatum)); 2000)
Tabelle1::Datum2 = Datum (MonatZahl (Hole (Systemdatum)+3); Tag (Hole (Systemdatum)+3); 2000)
Mitglieder::Datum = Datum (MonatZahl (Geburtstag); Tag (Geburtstag); 2000)

Beziehung:
Tabelle1::Datum1 ≤ Mitglieder::Datum UND
Tabelle1::Datum2 ≥ Mitglieder::Datum

Dann kannst Du in Dein Register einen Ausschnitt bauen, in dem nur die Geburtstage der nächsten 3 Tage gezeigt werden.
humbert
 
Beiträge: 58
Registriert: Fr 19. Jun 2009, 00:00
Wohnort: Hamburg

Re: Geburtstag suchen

Beitragvon Privateer3000 » Mo 24. Okt 2011, 22:26

Vielen Dank humbert,
soweit hab ich das verstanden,
die Formeln leuchten mir halbwegs ein.
Da aber das Layout auch das der Mitgliedertabelle sein soll
muss wohl ein selbstverweis her oder? Sind Datum1 und 2 variablen oder Felder?Was bedeutet die 2000 in der Formel?
Denn Die Mitgliedertabelle und dessen Layout quasi die Startseite darstellt
auf der sich alle relevanten Sachen (im Register) überblicken lassen.
Schade dass nur Auschnitte aus anderen Tabellen sich darstellen lassen und nicht aus der aktuellen Tabelle.
Die Ausschnitte sind quasi nur Grids und da sollte das doch möglich sein...

Danke
Grüße
Privateer3000
 
Beiträge: 13
Registriert: So 23. Okt 2011, 10:28

Re: Geburtstag suchen

Beitragvon humbert » Mo 24. Okt 2011, 23:35

Privateer3000 hat geschrieben:Schade dass nur Auschnitte aus anderen Tabellen sich darstellen lassen und nicht aus der aktuellen Tabelle.


Wer sagt denn, daß sich in Ausschnitten nur fremde Tabellen darstellen lassen? Na siehst Du. Stichwort Self-Join-Beziehung.

ABER: Ich würde Dir das in diesem Fall nicht empfehlen. Dann müßtest Du nämlich die Felder Datum1 und Datum2 (Formelfelder, keine Variablen; für eine Beziehung brauchst Du immer Felder) als global definieren, und dann bekommst Du Probleme mit der Aktualisierung des Datums (irgendein Bug bei der Indizierung).

Meine Empfehlung: definiere eine Tabelle für ein Maskenlayout, welche nur einen Datensatz hat, und in welche Du nur die von mir beschriebenen (und bei Bedarf noch weitere) Schlüsselfelder packst. Um dann alle Mitglieder in einem Ausschnitt darzustellen, benutzt Du eine x-Beziehung (Formelfeld mit "1" definieren, Beziehung: Maske::eins x ID-Mitglied oder ähnlich), und dann kannst Du in Deine Register die verschiedenen Ausschnitte setzen, z.B. nur Mitglieder anzeigen, die noch nicht gezahlt haben etc.

Allerdings habe ich noch keine gute Vorstellung davon, wie Dein Layout jetzt aussieht. Wenn Du die Datensätze als Liste darstellst, kannst Du schlecht mit Registersteuerelementen arbeiten. Wie auch immer: eine Maskenlösung ist in der Regel zukunftsfähig.
humbert
 
Beiträge: 58
Registriert: Fr 19. Jun 2009, 00:00
Wohnort: Hamburg

Re: Geburtstag suchen

Beitragvon Privateer3000 » Di 25. Okt 2011, 07:47

Vielen Dank humbert,
es ist irgendwie alles so umständlich. Von Delphi/Lazarus oder auch php bin ich einfach anderes gewöhnt.
Warum kann man nicht einfach ne Abfrage (View) basteln und dann in einem Grid darstellen?
Aber gut. Eine Tabelle... mit Datumfelder? Dann ein Script mit deinen Formeln(s.o.)?
Du sagst mit einem Datensatz?! Also ein leerer?

Grüße
Privateer3000
 
Beiträge: 13
Registriert: So 23. Okt 2011, 10:28

Re: Geburtstag suchen

Beitragvon humbert » Di 25. Okt 2011, 14:46

Es kommt immer drauf an, von wo man kommt; wenn man jahrelang mit FM gearbeitet hat, kann man sich kaum noch etwas anderes vorstellen. Aber Du wirst nicht glücklich werden mit dem Programm, wenn Du Dich nicht in die Grundbegriffe einarbeitest. Was ich oben beschrieben habe ist eine Beziehung - dafür brauchst Du keine Scripts, aber Felder, die mit den richtigen Daten gefüllt sind. Du kannst das Ganze auch als Suche mit Listendarstellung lösen - das geht aber eben nicht innerhalb eines Registersteuerlements.

Wenn Du Deine Datenbank (mit Beispieldaten) hochladen magst, kann ich mir das anschauen und die Geburtstage einbauen.
humbert
 
Beiträge: 58
Registriert: Fr 19. Jun 2009, 00:00
Wohnort: Hamburg

Re: Geburtstag suchen

Beitragvon Privateer3000 » Di 25. Okt 2011, 16:50

Hallo humbert,

ich versuche ja das ganze zu verstehen. Ich habe auch schon einige Sachen eingebaut
bei der mir meine Kenntnisse aus anderen DBMs hilfreich waren.
Aber dein Beispiel von oben werde ich erstmal ausprobieren.
Wenn ich es nicht schaffe komme ich auf dein Angebot zurück.

Grüße & Danke!
Privateer3000
 
Beiträge: 13
Registriert: So 23. Okt 2011, 10:28

Re: Geburtstag suchen

Beitragvon Privateer3000 » Di 25. Okt 2011, 18:09

So hab jetzt erstmal alles so gemacht, jedenfalls versucht:
Tabelle1 heisst bei mir gebdatum

Tabelle1::Datum1 = Datum (MonatZahl (Hole (Systemdatum)); Tag (Hole (Systemdatum)); 2000)
Tabelle1::Datum2 = Datum (MonatZahl (Hole (Systemdatum)+3); Tag (Hole (Systemdatum)+3); 2000)
Mitglieder::Datum = Datum (MonatZahl (Geburtstag); Tag (Geburtstag); 2000)

Beziehung:
Tabelle1::Datum1 ≤ Mitglieder::Datum UND
Tabelle1::Datum2 ≥ Mitglieder::Datum

"Tag" kennt der Formeleditor nicht. Habe stattdessen KalendertagZahl genommen. Wird aber nicht richtig sein?!
datum1 = Datum ( MonatZahl ( Hole (SystemDatum ) );KalendertagZahl ( Hole (SystemDatum));2000)

In der Beziehungskiste steht allerdings die Mitgliedertabelle links, habe den Operator also umgekehrt.
Aber ich glaube dass das falsch ist, ich weiss nicht wie der FM das handhabt aber bei einem Join sollte links und rechts richtig sein.
Fakt ist, ich habe einen Auschnitt gesetzt mit den Feldern Name,Vname, gebdatum und nun zeigt der Ausschnitt
vom aktuellen Datensatz das Gebdatum an.
Also funktioniert das nicht so....
Privateer3000
 
Beiträge: 13
Registriert: So 23. Okt 2011, 10:28

Re: Geburtstag suchen

Beitragvon humbert » Di 25. Okt 2011, 20:24

Sorry, aber ich habe wirklich Schwierigkeiten, zu verstehen, was Du letztendlich machst. Formel und Beziehung scheinen richtig (KalenderTagZahl ist korrekt, mein Fehler), aber wie hast Du es jetzt aufgebaut? Self-Join? Maske? Zumindest ein Screenshot vom Beziehungsdiagramm und vom Layout/Ergebnis wären hilfreich.
humbert
 
Beiträge: 58
Registriert: Fr 19. Jun 2009, 00:00
Wohnort: Hamburg

Re: Geburtstag suchen

Beitragvon Privateer3000 » Di 25. Okt 2011, 20:52

schicke ich morgen mal nach
Danke erstmal :-)
Privateer3000
 
Beiträge: 13
Registriert: So 23. Okt 2011, 10:28

Re: Geburtstag suchen

Beitragvon Privateer3000 » Mi 26. Okt 2011, 09:19

So, hier drei Screens mit den entsprechenden Dialogen.
die Felder datum1 und datum2 sind identisch konfiguriert,

Grüße
Dateianhänge
form2.JPG
Register Überprüfung - Überprüfung durch Berechnung
form1.JPG
Feldoptionen Register Überprüfung
bez1.JPG
Beziehungen der Tabellen
Privateer3000
 
Beiträge: 13
Registriert: So 23. Okt 2011, 10:28

Re: Geburtstag suchen

Beitragvon humbert » Mi 26. Okt 2011, 09:28

Die Felder müssen Formeln (als Feldtyp, Ergebnistyp Datum), Überprüfung durch Berechnung hat damit nichts zu tun.
humbert
 
Beiträge: 58
Registriert: Fr 19. Jun 2009, 00:00
Wohnort: Hamburg

Re: Geburtstag suchen

Beitragvon Privateer3000 » Mi 26. Okt 2011, 15:34

Wo gehören die Formeln denn dann hin?
Code: Alles auswählen
Tabelle1::Datum1 = Datum (MonatZahl (Hole (Systemdatum)); Tag (Hole (Systemdatum)); 2000)
Tabelle1::Datum2 = Datum (MonatZahl (Hole (Systemdatum)+3); Tag (Hole (Systemdatum)+3); 2000)
Mitglieder::Datum = Datum (MonatZahl (Geburtstag); Tag (Geburtstag); 2000)

Stimmen wenigstens die Beziehungen?
Privateer3000
 
Beiträge: 13
Registriert: So 23. Okt 2011, 10:28

Re: Geburtstag suchen

Beitragvon humbert » Mi 26. Okt 2011, 17:20

Nochmal sorry, ab das ist jetzt wirklich Grundkurs. Dieses Wissen kannst Du DIr nicht über das Forum aneignen.
humbert
 
Beiträge: 58
Registriert: Fr 19. Jun 2009, 00:00
Wohnort: Hamburg

Re: Geburtstag suchen

Beitragvon Privateer3000 » Mi 26. Okt 2011, 22:53

humbert hat geschrieben:Wenn Du mit einem Register arbeitest, stellst Du Deine Daten wahrscheinlich in einem Ausschnitt dar. Und dann baust Du einfach eine Beziehung vom aktuellen Layout (Tabelle1) zu der Tabelle der Mitgliederdaten über folgende Felder (alles gespeicherte Formeln):
Tabelle1::Datum1 = Datum (MonatZahl (Hole (Systemdatum)); Tag (Hole (Systemdatum)); 2000)
Tabelle1::Datum2 = Datum (MonatZahl (Hole (Systemdatum)+3); Tag (Hole (Systemdatum)+3); 2000)
Mitglieder::Datum = Datum (MonatZahl (Geburtstag); Tag (Geburtstag); 2000)

Beziehung:
Tabelle1::Datum1 ≤ Mitglieder::Datum UND
Tabelle1::Datum2 ≥ Mitglieder::Datum

Dann kannst Du in Dein Register einen Ausschnitt bauen, in dem nur die Geburtstage der nächsten 3 Tage gezeigt werden.

Trotzdem Danke für Deine Hilfe.
Nebenbei habe ich das Buch vonRadke, Datenbankmanagement mit FM PRO 11 durchgewältzt.
Das Prinzip habe ich verstanden.
Mich irritiert nur das man Formeln an vielerlei Stellen angeben kann.
Dein Tipp von oben
(alles gespeicherte Formeln
kann ich einfach nicht zuordnen.
WO?
Privateer3000
 
Beiträge: 13
Registriert: So 23. Okt 2011, 10:28

Re: Geburtstag suchen

Beitragvon Privateer3000 » So 13. Nov 2011, 18:14

Hallo,
ich möchte nochmal um Hilfe bitten denn ich schaffe es einfach nicht.

Ich habe wie von humbert beschrieben eine Tabelle angelegt.
Tabelle gebdatum mit zwei Feldern
datum1, Typ formel, Ergebnistyp datum
datum2, Typ Formel, Ergebnistyp Datum

Zusätzlich habe ich in der Tabelle mitglieder ein
Feld Typ Formel angelegt
Alle Formeln wie vom humbert beschrieben.

Dann die genannten Beziehungen angelegt.

Wenn ich nun den Datensatz von der Tabelle gebdatum ansehe, stehen da Fragezeichen. So wie über meinem Kopf.
Der Datenauschnitt zeigt natürlich auch nichts,

Ich weiß einfach nicht weiter, ich habe nun mittlerweile einige Sachen im FM hinbekommen, aber scheitere ich wohl.

Kann mir bitte jemand weiterhelfen?
:-(
Privateer3000
 
Beiträge: 13
Registriert: So 23. Okt 2011, 10:28

Re: Geburtstag suchen

Beitragvon Privateer3000 » Di 15. Nov 2011, 09:29

Endlich geschafft.
Vielen Dank an humbert für die Tipps.
Das einzige was ich nicht bedacht habe war, dass der Auschnitt nicht auf dem Layout
der Mitgliedertabelle angezeigt wird. Auf dem Layout der Tabelle mit Formeln schon.

Läßt sich das irgendwie bewerkstelligen auf einem beliebigen Layout anzuzeigen???

Grüße
Privateer3000
 
Beiträge: 13
Registriert: So 23. Okt 2011, 10:28


Zurück zu Berichte und Auswertungen