PDA

Vollständige Version anzeigen : Zinsberechnung Sparverein


Leukos
10.05.2004, 09:22
Hi Leute, ich habe folgendes Problem!

Ich muss für eine Prüfung voraussichtlich einen Sparverein mit einer Access Datenbank verwalten.

Ich hab die DB bisher so aufgebaut:
Tabelle Mitglieder:
ID, Geburtsdatum, Vorname, Nachname, Strasse, PLZ, Ort

Tabelle Einzahlungen
ID, MitgliederID (Mit verweis auf die ID der Mitglieder), Betrag, Art (Strafe, Zinsen, Einzahlung)

Nun soll ich mit einer Funktion die Zinsen sowie die Strafen berechnen lassen. Das währen zB 4 % Zinsen pro Jahr und € 2 pro Monat Strafe falls der Einzahlungsbetrag unter € 10 liegt.

Für mich stellt sich nun die Frage wie ich das ganze angehen soll. Ich finde einfach keinen punkt wo ich ansetzen könnte.

Danke für eure Hilfe

mfg

Leukos

J_Eilers
10.05.2004, 09:39
Hi,

erstmal solltest du die Art in eine separate Tabelle packen und nur die Schlüßek übergeben.
Dann könnte man sich Monatsweise die Summe der Einzahlungen anschauen und falls diese unter 10€ liegen, 2€ Strafe erheben.
Und dann kann man sich mit Zins und Zinseszins beschäftigen. Aber wer kontrolliert, ob die Strafe bezahlt wurde?

stpimi
10.05.2004, 09:41
Für die Zinsen wirst Du Dir wohl eine Funktion in einem Modul erstellen müssen. Wie genau sind die Zinsen zu berechen? Nur mit der einfachen Zinsformel oder mit Zinseszinsen?

Die Strafen sind grundsätzlich recht einfach:
Mit DCount und einer entsprechenden Bedingung bekommst Du die Monate, in denen der eingezahlte Betrag zu gering ist.

Fraglich ist: Gibt es genau eine Einzahlung pro Monat oder mehrere, die zuerst summiert werden müssen? Straf- und Zinszahlungen sind auch keine "echten" Einzahlungen und müssen zuerst herausgefiltert werden ...
Dann wirst Du wohl auch hier mit einer VBA-Funktion besser bedient sein.

Mfg, Michael

Leukos
10.05.2004, 09:47
Modul usw. ist schon klar.

Also es kann x einzahlungen pro Monat geben. Es braucht nur die einfache Zinsrechung durchgeführt werden.

Und dann stellt sich noch die Frage wo ich festhalte wann die letze Berechnung stattgefunden hat?

mfg

Leukos

stpimi
10.05.2004, 09:56
Dafür würde sich wohl eine Steuertabelle anbieten. Ich gehe davon aus, das die letzte Berechnung für alle Mitglieder zum gleichen Zeitpunkt erfolgt und die Zinsen dann gutgeschrieben werden.

Der Funktion Zinsberechnung übergibst Du als Parameter die MitgliedsID.
Du stellst fest, ab wann die Verzinsung zu erfolgen hat (unterjähriges Einstiegsdatum...)
Dann liest Du die zu verzinsenden Beträge, verzinst jeden einzeln (wegen unterschiedlicher Anzahl von Zinstagen und summierst die Beträge.
Das Ergebnis schreibst Du in den Rückgabeparameter der Funktion,

Ich kann Dir jetzt mangels Access keinen konkreten Code liefern, aber ich hoffe, Du kommst auch damit weiter.

Im Formular kannst Du dann die Funktion im Steuerelementinhalt eines Anzeigefeldes verwenden.

Mfg, Michael

Leukos
13.05.2004, 08:55
Also hier mal mein konkreter code zur zinsverrechnung. Nur wie gehe ich jetzt mit den strafzahlungen um die jedes monat abgebucht werden sollten.


Public Function zinsenVerbuchen(ByVal MitgliederID As Long) As Double
Dim SummeDerEinzahlungen As Double
Dim SummeDerZinsen As Double
Dim DifferenzDerTage As Integer
Dim ZinsenProzent As Double
Dim Zinskapital As Double

SummeDerZinsen = 0

' Zuerst mal alle Einzahlungen des Mitgliedes
' aus der Datenbank holen lassen außer natürlich
' den Zinsen und der Strafzahlungen
Dim rsEinstellungen As dao.recordset
Set rsEinstellungen = CurrentDb.OpenRecordset("Einstellungen")
ZinsenProzent = rsEinstellungen.Fields!Verzinsung

Dim rsEinzahlungen As dao.recordset
Set rsEinzahlungen = CurrentDb.OpenRecordset("SELECT * FROM Einzahlungen WHERE Einzahlungen.Art = 'Einzahlung' AND Einzahlungen.Mitglied = " & MitgliederID)

Do While Not (rsEinzahlungen.EOF)
DifferenzDerTage = DateTime.Date - rsEinzahlungen.Fields!Einzahlungsdatum
Zinskapital = (rsEinzahlungen.Fields!Betrag * ZinsenProzent * DifferenzDerTage) / (36000)
SummeDerZinsen = SummeDerZinsen + Zinskapital
rsEinzahlungen.MoveNext
Loop

zinsenVerbuchen = SummeDerZinsen
End Function


bitte vergebt mir wenn der code nicht all zu sauber ist. das ist die erste woche in der ich mit access arbeite und in 10 tagen muss ich einen test damit durchstehen.

mfg

leukos

stpimi
13.05.2004, 09:14
Für die Ermittlung der Strafzahlungen brauchst ebenso ein Recordset über die Einzahlungen. Du summierst die Beträge monatsweise und wenn der Betrag < 10 ist, schreibst Du in Deiner Umsatztabelle einen entsprechenden Datensatz. Das geht mit einem SQL-INSERT:

INSERT INTO Umsatztabelle FIELDS (.....) VALUES (.....)

Das ganze mit einem DBEngine(0)(0).Execute abgesetzt.

Du musst dann nur noch sicherstellen, daß Monate, für die die Strafzahlung bereits verrechnet wurde, irgendwie festgehalten werden, damit es zu keiner Doppelverrechnung kommt.

Tipps zum Code Zinsberechnung:
Alle Variablendeklarationen ganz am Anfang machen, immer ein typspezifisches Präfix vervenden. Siehe hier! (http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=105285)