Tabelle Vereinseinnahmen

Hundenanny

Aktiver Benutzer
Beiträge
27
Hallo,

in meiner DB bin ich schon recht weit. Stundenlanges suchen und ausprobieren hat leider nicht geholfen.:( Ich muss eine Tabelle anlegen, in der die monatlichen Zahlungseingänge für jedes Mitglied erfasst werden kann.

Ich weiß einfach nicht weiter.:oops:

Es gibt Mitglieder, die bleiben nur ein Jahr, andere über Jahre. Der Zahlungseingang wird später per Hand in ein Formular eingegeben. Es kann sein, dass ein Mitglied mal vergisst den Beitrag zu bezahlen, dann sollte dies im Formular rot erscheinen.

Jetzt fehlt mir die Grundlage für das Formular - die Tabelle. :eek:

Ich habe eine Tabelle mit allen Kundendaten, und eine Tabelle mit ID, Eintrittsdatum, Beitrag und für Kündigungsdatum (Feld ist leer bis zur Kündigung).

Dazwischen sollte noch eine Tabelle sein für die Monate oder kann ich das direkt über eine Abfrage bzw. Formular erstellen?

Hoffentlich kann mir hier jemand helfen:rolleyes:

Hundenanny
 
Werbung:
Ich habe eine Tabelle mit allen Kundendaten, und eine Tabelle mit ID, Eintrittsdatum, Beitrag und für Kündigungsdatum (Feld ist leer bis zur Kündigung).

Dazwischen sollte noch eine Tabelle sein für die Monate oder kann ich das direkt über eine Abfrage bzw. Formular erstellen?

Das erste sind die Stammdaten. Die Bewegungsdaten, also die monatlichen Zahlungen etc., kommen in eine eigene Tabelle. Ob alle bezahlt haben kann man dann mit einem Select erfragen. Das könnte man auch als VIEW definieren.

Das wäre so in etwa der Weg, wie man das in SQL-Datenbanken macht. Von Access hab ich aber no clue.
 
Hallo akretschmer,

vielen Dank für die schnelle Antwort.

Wäre dann die Tabelle mit montlichen Zahlungen eine Tabelle mit Beginn Datum und Kündigung leer, dazwischen die Berechnung evtl. Endlosformular?????

Das mit SQL habe ich schon probiert, da hatten wir auch schon Kontakt. Da komme ich leider nicht weiter, deshalb steht die Datenbank jetzt in Access. Auch wenn es etwas umständlicher ist, ist es für mich einfach leichter, da ich (zwar schon Jahre her) Schulungen in Access hatte.

Liebe Grüße
Hundenanny
 
Das mit SQL habe ich schon probiert, da hatten wir auch schon Kontakt. Da komme ich leider nicht weiter, deshalb steht die Datenbank jetzt in Access. Auch wenn es etwas umständlicher ist, ist es für mich einfach leichter, da ich (zwar schon Jahre her) Schulungen in Access hatte.

SQL ist auch nicht schwer.

Du hast z.B. diese Tabellen:

Code:
test=*# \d hunde_master
  Table "public.hunde_master"
  Column  |  Type  | Modifiers
----------+-----------+-----------
 id  | integer  | not null
 name  | text  |
 mitglied | daterange |
 beitrag  | integer  |
Indexes:
  "hunde_master_pkey" PRIMARY KEY, btree (id)
Referenced by:
  TABLE "hunde_zahlungen" CONSTRAINT "hunde_zahlungen_mitglied_fkey" FOREIGN KEY (mitglied) REFERENCES hunde_master(id)

test=*# \d hunde_zahlungen
 Table "public.hunde_zahlungen"
  Column  |  Type  | Modifiers
----------+---------+-----------
 mitglied | integer |
 datum  | date  |
 betrag  | integer |
Foreign-key constraints:
  "hunde_zahlungen_mitglied_fkey" FOREIGN KEY (mitglied) REFERENCES hunde_master(id)

und diese Daten:

Code:
test=*# select * from hunde_master ;
 id |  name  |  mitglied  | beitrag
----+------------+---------------+---------
  1 | mitglied 1 | [2015-01-01,) |  10
  2 | mitglied 2 | [2015-02-01,) |  15
(2 rows)

test=*# select * from hunde_zahlungen ;
 mitglied |  datum  | betrag
----------+------------+--------
  1 | 2015-01-10 |  10
  1 | 2015-02-10 |  10
  1 | 2015-04-10 |  10
  2 | 2015-02-10 |  10
  2 | 2015-03-10 |  15
  2 | 2015-04-10 |  15
(6 rows)

beachte, Mitglied 2 ist erst seit februar Mitglied, muß also im Januar nix zahlen. Hat aber im Februar 5 EUR zu wenig bezahlt.

Du willst nun eine Übersicht über die Zahlungen der ersten 6 Monate, was schon gezahl wurde, was fehlt, wo zuwenig. Einfach:

Code:
test=*# select *, hm.beitrag-hz.betrag as fehlbetrag from hunde_master hm cross join (select to_char('2015-01-01'::date + s * '1 month'::interval,'yyyy-mm') as monat from generate_series(0,5) s) monate left join hunde_zahlungen hz on (hz.mitglied, monate.monat) = (hm.id,to_char(hz.datum,'yyyy-mm')) where to_date(monate.monat,'yyyy-mm') <@ hm.mitglied order by id;
 id |  name  |  mitglied  | beitrag |  monat  | mitglied |  datum  | betrag | fehlbetrag
----+------------+---------------+---------+---------+----------+------------+--------+------------
  1 | mitglied 1 | [2015-01-01,) |  10 | 2015-01 |  1 | 2015-01-10 |  10 |  0
  1 | mitglied 1 | [2015-01-01,) |  10 | 2015-02 |  1 | 2015-02-10 |  10 |  0
  1 | mitglied 1 | [2015-01-01,) |  10 | 2015-03 |  |  |  |
  1 | mitglied 1 | [2015-01-01,) |  10 | 2015-04 |  1 | 2015-04-10 |  10 |  0
  1 | mitglied 1 | [2015-01-01,) |  10 | 2015-05 |  |  |  |
  1 | mitglied 1 | [2015-01-01,) |  10 | 2015-06 |  |  |  |
  2 | mitglied 2 | [2015-02-01,) |  15 | 2015-02 |  2 | 2015-02-10 |  10 |  5
  2 | mitglied 2 | [2015-02-01,) |  15 | 2015-03 |  2 | 2015-03-10 |  15 |  0
  2 | mitglied 2 | [2015-02-01,) |  15 | 2015-04 |  2 | 2015-04-10 |  15 |  0
  2 | mitglied 2 | [2015-02-01,) |  15 | 2015-05 |  |  |  |
  2 | mitglied 2 | [2015-02-01,) |  15 | 2015-06 |  |  |  |
(11 rows)

Die Zahlungsmoral im Verein läßt also zu wünschen übrig. Mitglied 1 hat im März nicht gezahl, Mitglied 2 im Feruar 5 EUR zu wenig.

PostgreSQL, Daterange und so.
 
Hallo akretschmer,

ja, genau das meine ich. Glaubst Du, wir bekommen das in Access auch irgendwie hin? Fast die komplette Datenbank steht in Access mit allen Mitgliedern, 35 Tabellen mit allen Beziehungen, sämtlichen Formularen mit xUnterformularen und einigen Abfragen, es fehlt nicht mehr viel, dann wäre sie fertig.

Ich benötige noch Rechnungen und eben die Eingabe der Beiträge und Seminarangebote mit dazu gehörigen Rechnungen, dann wäre ich fertig.

Natürlich sollte dann auch bei jedem Mitglied noch vermerkt sein, an welchen Aktivitäten er mitmacht und was er schon alles gekauft (z. B. Leinen, Futter usw) hat.

Kannst Du mir helfen, das alles in Access fertig zu stellen?

Vielen Dank für Deine Mühe.

Liebe Grüße
Hundenanny
 
Hallo akretschmer,

schön, dass Du Dich mit dein einfachen Dingen auskennst;););):rolleyes:. Access ist für mich etwas leichter zu verstehen. SQL bringt mich enorm an meine Grenzen. Wenn ich das alles verstanden hätte, wäre die Datenbank in SQL, da ich wesentlich schönere und bessere Bedienungsmöglichkeiten (Formular usw) habe. Auch kann ich die Datenbank besser sichern.

Es scheitert allerdings schon daran, dass ich bei MySQL schon beim Erstellen einer Datenbank Fehlermeldungen bekomme und ich gar keine neue DB anlegen kann. Ich bekomme nicht heraus, woran das liegt. Ich habe sogar schon MySQL noch mal darüber installiert nichts klappt. Die erste Testdatenbank konnte ich anlegen und seitdem geht nichts mehr.

MySQL ist doch auch auf Windows-Ebene, oder?

Ich benötige die DB so dringend und bin am verzweifeln, dass ich es einfach nicht schaffe.

Vielleicht gibt es ja noch eine Möglichkeit? Was meinst Du?

Liebe Grüße
Hundenanny
 
upload_2015-4-21_12-15-24.png

Hallo akretschmer,

das ist die Meldung, die ich bekomme, deshalb habe ich bei MySQL nicht weiter gemacht. Ich habe keine Ahnung wo der Fehler liegt.

Außerdem brauch ich doch da noch php und das kann ich gar nicht. Da müsste ich mich auch noch neu einlesen.

Wenn Du schreibst, das ist nicht schwer, kann ich es nicht verstehen?

Um die Datenbank in MySQl aufzubauen, würde ich wahrscheinlich mehrfach täglich Hilfe benötigen. Oder was meinst Du?

Liebe Grüße

Hundenanny
 
Hallo akretschmar,

was ist Microsoft und was ist Müll? Wie könnte ich da weitermachen?

Soll ich da noch etwas neues erstellen?

Bei Access sehen die Beziehungen jetzt so aus:

upload_2015-4-21_12-59-39.png
 

Anhänge

  • upload_2015-4-21_12-57-57.png
    upload_2015-4-21_12-57-57.png
    145,2 KB · Aufrufe: 1
Werbung:
Also in MS-SQL geht das, dort gibt es aber kein generate_series() oder to_char(). Das ist DB-spezifische Syntax und müsste umformuliert werden. Da Access auch von Microsoft ist, geht dort vieles (nicht alles) mit der selben Syntax wie in MS-SQL.

Wichtig wäre in jedem Fall, das du zu Fehlermeldungen auch immer den Code mit postest.
 
Zurück
Oben