Mai 19, 2022, 17:43:47

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Inhalt eines ungebundenen Textfeldes speichern

Begonnen von Ratoncito, April 05, 2022, 08:07:52

⏪ vorheriges - nächstes ⏩

Ratoncito

Hallo,

Zitat von: Beaker s.a. am April 15, 2022, 14:10:28
Zitat von: undefinedDie Jahreszahl ist da eher hinderlich.
Nein, nein, nein, ein Datum ist ein Datum, ist ein Datum, ist ein Datum.

Auch wenn die Termine (Tag+Monat) immer gleich sind, so verändert
sich doch die Ausschüttung, - die erfasst du doch? Wie willst du aber
ohne Jahreszahl jemals eine Entwicklung ableiten (Jahres-, 5Jahres-
Vergleiche u.ä.)?

Ja, aber...

Im Prinzip hast Du vollkommen recht, aber in diesem konkreten Fall nicht so ganz. Auf diesem Formular werden mir alle Zinstermine und Beträge der im Bestand befindlichen Wertpapiere für das laufende Jahr zur Kontrolle in einem Unterformular angezeigt. Nun kann ich eines dieser Wertpapiere aufrufen und alle zu diesem Wertpapier getätigten Transaktionen werden in einem anderen Unterformular angezeigt.
Es dient mir lediglich zur Kontrolle, ob die Zahlungen erfolgt sind oder nicht.

Die tatsächlichen Erträge bzw. Transaktionen werden selbstverständlich separat gebucht und dem entsprechenden Wertpapier zugeordnet. Auf anderen Formularen und Berichten wird mir die Entwicklung und die bereits erzielten Gewinne / Verluste angezeigt. Für die verkauften Werte habe ich ebenfalls die erzielten Gewinne oder Verluste. Aber das hat mit dem aktuell angesprochenen Formular nichts zu tun.

Was mich tatsächlich brennend interessieren würde ist die real erzielte Rendite. Hierfür habe ich keinen praktikablen Lösungsansatz. Etwas kaufen und nach x Tagen wieder verkaufen und aus der Differenz zwischen Kauf- und Verkaufspreis und der Zeit dazwischen die Jahresrendite zu errechnen ist kein Problem. Aber es gibt auch Mehrfachkäufe, Teilverkäufe und gezahlte Zinsen. Man müsste ermitteln, welcher Betrag für welchen Zeitraum eingesetzt wurde, um daraus die Rendite zu berechnen. Berechnen könnte ich das, aber das in Access umzusetzen, da bin ich absolut überfordert.

Nochmals vielen Dank an alle die sich hier eingebracht haben und schöne Ostern - Wolfgang

Ratoncito

Hallo,

das Thema um das Textfeld und Format Datum beschäftigt mich immer noch. Daher hätte ich gerne gewusst, wie man es richtig macht.
Alle grundlegenden Daten zu einem Wertpapier sind in einer Tabelle gespeichert, die dazugehörigen Transaktionen in anderen.
Zu den grundlegenden Daten gehören zum Beispiel:
Wertpapierkennnummer
Name
Kupon
Anzahl der Zinstermine
erster Zinstermin

Die jeweiligen Zinstermine sind abhängig von der Anzahl (1 - 2 - 3 - 4 - 6 oder 12) und dem ersten Zinstermin im Jahr.

Wenn ich richtig informiert bin, sollen keine berechneten Daten in Tabellen gespeichert werden. Daher habe ich die Anzahl der Zinstermine und den ersten Zinstermin gespeichert. Alle weiteren Zinstermine werden bei Bedarf berechnet.

Die Zinstermine haben mir mal ziemliche Probleme bereitet. Ich habe einen Weg gefunden, mit dem ich zurechtkomme.

Jetzt hätte ich gerne gewusst, wie und in welchem Format man Anzahl und den ersten Zinstermin speichert und die eventuell auftretenden Probleme beseitigt.

Vielen Dank für Eure Hilfe - Wolfgang

ebs17

ZitatWas mich tatsächlich brennend interessieren würde ist die real erzielte Rendite.
Renditerechnung von beliebigen Zahlungsplänen
Mit freundlichem Glück Auf!

Eberhard

ebs17

Zitatwie und in welchem Format man Anzahl und den ersten Zinstermin speichert
Eine Möglichkeit wäre es, eine Tabelle zu verwenden, die sich an den Argumenten von DateAdd orientiert. Dann kann man nämlich recht einfach über eine Zahlenhilfstabelle Folgetermine in einer Abfrage hochrechnen.
Siehe WartungsPlanung
Mit freundlichem Glück Auf!

Eberhard

Ratoncito

April 25, 2022, 09:31:32 #19 Letzte Bearbeitung: April 25, 2022, 09:36:00 von Ratoncito
Hallo,

mit dem Startthema hat es eigentlich nichts mehr zu tun, trotzdem ein kurzes Update.

Zitat von: ebs17 am April 17, 2022, 15:35:32
Zitat von: undefinedWas mich tatsächlich brennend interessieren würde ist die real erzielte Rendite.
Renditerechnung von beliebigen Zahlungsplänen

Ja, viel eleganter hätte ich es auch nicht hinbekommen :-)

Spaß bei Seite, das Kontomodell mit Ein- und Auszahlungen ID 5 ist genau das, was ich benötige.

In meiner DB gibt es praktisch nur Kontomodell 5, allerdings mehrfach, für jedes Wertpapier eins.

Um die Berechnung für meine Zwecke zu nutzen musste ich "nur noch" die benötigten Daten bereitstellen und SQL-Anweisungen an den richtigen Stellen anpassen. Mit meinen Kenntnissen eine gewaltige Aufgabe, die nach unzähligen vergeblichen Anläufen endlich geklappt hat. Bleibt noch die Integration in meine DB.

Da Du den Code veröffentlichst gehe ich davon aus, dass ich ihn in meiner rein privaten DB verwenden darf?

Vielen Dank und einen guten Start in die neue Woche - Wolfgang

PS Den Knopf "Thema gelöst" habe ich immer noch nicht entdeckt


Ratoncito

Hallo,

ich habe mich intensiver mit der Renditeberechnung beschäftigt und die Funktion auf einem Formular verwendet. Das funktioniert einwandfrei.

Nun möchte ich die Funktion auch auf einem anderen Formular mit anderen Werten anwenden. Dabei habe ich einige Fragen.

Im Code gibt es folgenden Aufruf:
If Me.cboAuswahl > 0 Then Me.txtRendite = InterestRate(Me.cboAuswahl, _
                                                           Me.txtStichtag, _
                                                           Me.cboAuswahl.Column(2), _
                                                           Me.txtGuthaben, _
                                                           0)

Hier ist ein IF-Block ohne End IF.
Ist das Absicht? Habe ich bis jetzt so noch nicht gesehen.

Wozu dient der Aufruf Me.cboAuswahl in der ersten Zeile?
Meine Daten stehen in diesem Formular in anderen Feldern, daher möchte ich den Aufruf anpassen und habe Probleme mit der ersten Zeile.

Vielen Dank für Eure Hilfe - Wolfgang

ebs17

Wenn die IF-Anweisung einzeilig ist, braucht man von der Syntax her kein End If.

ZitatWozu dient der Aufruf Me.cboAuswahl in der ersten Zeile?
Eine Rechnung macht nur Sinn, wenn sie für ein vorhandenes Konto ausgeführt wird, in dem es Zahlungen und auch Guthaben gibt, siehe Datenherkunft der ComboBox.
Mit freundlichem Glück Auf!

Eberhard

Ratoncito

Hallo,
Zitat von: ebs17 am Mai 05, 2022, 10:26:09Wenn die IF-Anweisung einzeilig ist, braucht man von der Syntax her kein End If.
Danke für die Info.

Zitat von: ebs17 am Mai 05, 2022, 10:26:09Eine Rechnung macht nur Sinn, wenn sie für ein vorhandenes Konto ausgeführt wird, in dem es Zahlungen und auch Guthaben gibt, siehe Datenherkunft der ComboBox.

Ja, auch das ist mir klar und habe ich in einem Formular so verwendet. Dort geschieht die Auswahl über eine ComboBox. Die und die nötigen Abfragen haben ich angepasst. Das hat funktioniert.

Nun möchte ich auf einem anderen Formular als ersten Schritt die aktuelle Rendite aller Transaktionen über die gesamte Zeit anzeigen. Später auch die des aktuellen Jahres. Eine Auswahl über eine ComboBox ist dafür nicht nötig, da die benötigten Daten entweder auf dem Formular schon vorhanden sind, oder in einer Abfrage bereitstehen.

Ich finde leider nicht den richtigen Bezug zwischen der Codezeile mit der die Berechnung ausgeführt wird und dem VBA-Code vermutlich im Modul modRendite. Da hakt es leider bei mir gewaltig.

Über Hilfe würde ich mich freuen.

Liebe Grüße - Wolfgang

ebs17

Wenn alle nötigen Daten vorhanden sind, muss man nicht prüfen, ob man rechnen will.

Die Berechnung selber ist eine Funktion, die man auch hier vermutlich sogar in einer Abfrage aufrufen könnte (habe ich noch nicht probiert), also alle Konten auf einmal. Man muss nur vorher die nötigen Argumente bereitstellen.

Public Function InterestRate(ByVal Account As Long, _
                             ByVal DateYieldAnalysis As Date, _
                             ByVal StartYieldAnalysis As Date, _
                             ByVal CreditOnDateYieldAnalysis As Variant, _
                             ByVal CreditOnStartYieldAnalysis As Variant, _
                             Optional ByVal TerminationDifference As Double = 0.01) _
                             As Variant
'// --------------------------------------------------------------------------------------------------------------------------
'// Methode:   | Errechnung Rendite aus Zahlungsplan und einem resultierenden Guthaben
'// --------------------------------------------------------------------------------------------------------------------------
'// Parameter: | Account ... Schlüssel als Long, der das betrachtete Konto in tblZahlungen identifiziert
'//            | DateYieldAnalysis ... Stichtag, zu dem die Ermittlung der Rendite erfolgt
'//            | StartYieldAnalysis ... Starttag für den Zeitraum, der die betrachteten Zahlungen enthält
'//            | CreditOnDateYieldAnalysis ... vorhandenes Guthaben zum Stichtag
'//            | CreditOnStartYieldAnalysis ... Vor-Guthaben zum Starttag
'//            | TerminationDifference ... Abbruchbedingung für Dezimalstellengenauigkeit
'// --------------------------------------------------------------------------------------------------------------------------
'// Rückgabe:  | Zinssatz als Double bei Erfolg, bei Fehler Null
'// --------------------------------------------------------------------------------------------------------------------------
'// Autor:     | ebs17
'// --------------------------------------------------------------------------------------------------------------------------
'// Verfahren: | Zur Berechnung der resultierenden Rendite werden alle Zahlungen zwischen Starttag (StartYieldAnalysis)
'//            | und Stichtag (DateYieldAnalysis) auf das Konto und abgehend vom Konto mit einem Tageszins abgezinst
'//            | auf einen Barwert zum Starttag.
'//            | Das entstandene Guthaben zum Stichtag (CreditOnDateYieldAnalysis) wird mit dem gleichen Zinssatz abgezinst
'//            | auf den Barwert zum Starttag. Ist die Differenz aus Summe der Barwerte der Zahlungen und des Barwertes aus
'//            | dem Guthaben gleich 0, entspricht der verwendete Zins dem gesuchten Zinssatz.
'//            | Der Zins wird durch Iteration ermittelt. Gerechnet wird mit einem Tageszinssatz mit dem mathematischen Fehler
'//            | unberücksichtigter Schalttage bei der Zinsermittlung des Tageszinses.
'// --------------------------------------------------------------------------------------------------------------------------

' ...

Was daran ist nicht verständlich?
Mit freundlichem Glück Auf!

Eberhard