September 29, 2022, 02:46:51

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" 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

Ratoncito

Hallo,

eigentlich hat es nichts mehr mit dem Ausgangsthema zu tun. Vielleicht kann ein Moderator diesen Beitrag mit dem Link zur DB mit der Renditeberechnung von ebs17 (im Beitrag #17) in ein neues Thema verschieben?

@ ebs17

Die Renditeberechnung gefällt mir außerordentlich gut. Ich verwende sie etwas abgewandelt auf einem Formular mit Informationen zu einzelnen Wertpapieren.

Gerne würde ich eine Renditeberechnung auf einem anderen Formular gleich mehrfach für verschiedene Zeiträume einsetzen.
Auf diesem Formular werden mir der Kontostand, die Kurse und Werte meiner im Bestand befindlichen Wertpapiere im Verlauf einer Woche (5 Werktage), 2 Wochen zurück und die Werte 3 Monate zurück angezeigt.
Gerne würde ich die Rendite zwischen diesen Terminen, seit Jahresbeginn und seit Eröffnung des Depots anzeigen.

Hierbei habe ich Probleme mit der Bereitstellung der Daten und der Übergabe der Parameter zur Berechnung.

In einem Bericht zeige ich den erzielten Gewinn/Verlust je verkauften Wertpapiere an. Auch hier wäre es schön, wenn man für jedes einzelne Wertpapier die erzielte Rendite pro Jahr anzeigen könnte.

Über Hilfe bei der Umsetzung würde ich mich freuen.

Liebe Grüße - Wolfgang

Ratoncito

Mai 31, 2022, 14:28:57 #25 Letzte Bearbeitung: Juni 01, 2022, 13:01:21 von Ratoncito Grund: Anhang gelöscht
Hallo,

im Anhang ist eine etwas abgewandelte DB die auf der Renditeberechnung von ebs17 aufbaut.

Mein Wunsch ist eine gleichzeitige Renditeberechnung zu unterschiedlichen Terminen. Dazu habe ich das Formular ein wenig abgeändert.

Das Feld zur Anzeige der Rendite ist mehrfach vorhanden, die Termine für die unterschiedlichen Stichtage sind im Feld davor angegeben.

Die getätigten Zahlungen sind in der qryRendZahlung. Da es sich um Wertpapiere handelt ist das Guthaben zum Stichtag ein Produkt aus "Bestand am Stichtag" * "Kurs am Stichtag". Die Käufe und Verkäufe sind in in der tblRendBewegung. Hieraus muss der Bestand zum Stichtag ermittelt werden.

An der ursprünglichen Form der Berechnung über Auswahl über das cbo und Anzeige der Berechnung im Feld Rendite habe ich nichts geändert, wird aber in neuen Formular nicht benötigt.

In meiner DB existiert in dem Formular kein cbo zur Auswahl und die Gesamtrendite für alle Konten sollte bei Klick auf den Button für die Felder Rendite2 bis 5 zu den jeweiligen Stichtagen davor angezeigt werden.

Ich hoffe, dass das möglich ist.

Als nächsten Schritt könnte ich mir noch eine Erweiterung vorstellen, in der die Rendite jedes einzelnen Wertpapiers angezeigt wird.


Für Hilfe inm Voraus besten Dank - Wolfgang


Sie dürfen in diesem Board keine Dateianhänge sehen.

ebs17

Meine erste Erwartung ist, wenn da einige mir nicht vertraute Tabellen auftreffen, dass ich diese im Beziehungsfenster wiederfinde, damit ich auf einen Blick Zusammenhänge erfassen kann.
Ist das nicht so und also umständlicher, ist das ein guter Grund, gleich wieder abzuschalten.
Mit freundlichem Glück Auf!

Eberhard

Beaker s.a.

Hallo Wolfgang,
ZitatIn meiner DB existiert in dem Formular kein cbo zur Auswahl und die Gesamtrendite für alle Konten sollte bei Klick auf den Button für die Felder Rendite2 bis 5 zu den jeweiligen Stichtagen davor angezeigt werden.
Das ist genau das, was Eberhard dir hiermit aufgezeigt hat
ZitatDie 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.

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

Ratoncito

Juni 01, 2022, 11:43:59 #28 Letzte Bearbeitung: Juni 01, 2022, 13:37:33 von Ratoncito
Hallo,

sorry, an die Beziehungen habe ich im Beispiel nicht gedacht.

In meiner DB habe ich die Berechnung an meine Daten angepasst und in ein Formular mit cbo eingebaut. Das habe ich gerade noch so hinbekommen.

Bei allen weiteren Versuchen die Gesamtrendite auf einem Formular zu unterschiedlichen Terminen oder in einem Bericht für mehrere WePas gleichzeitig anzuzeigen bin ich kläglichst gescheitert.

Ich mache das Beispiel neu.

Gruß - Wolfgang

Ratoncito

Hallo,

ich habe in der DB die Tabellen aus meiner DB eingefügt und die Daten angepasst. Einige Tabellen haben daher andere Namen.
Auf dem frmRenditeberechnung habe ich einige Felder gelöscht.


Original             neueDB

tblKonten           tblWePa
tblZahlungen     tblKonto
tblGuthaben      nicht vorhanden, das Guthaben muss aus Bestand und Kurs zum Stichtag berechnet werden
                            tblBewegung Veränderungen im Bestand eines WePas

Die qryRendZahlungen entspricht der tblKonto bzw. tblZahlungen in der Original-DB. Es wäre schön, wenn die Abfrage statt der Tabelle zur Berechnung verwendet wird, da in meiner DB die Zahlungen nicht direkt vorhanden sind und erst in der Abfrage bereitgestellt werden.

Für Eure Hilfe im Voraus vielen Dank - Wolfgang


Sie dürfen in diesem Board keine Dateianhänge sehen.