Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: dobby110 am Oktober 19, 2015, 10:04:06

Titel: Bestandswert errechnen
Beitrag von: dobby110 am Oktober 19, 2015, 10:04:06
Hallo zusammen,

ich habe eine Frage wie man den Bestandswert an Hand des Umsatzes errechnen kann.
In meiner Datenbank erfassen wir verschiedene Massnahmen, die zu Bestandsveränderungen führen.
Dazu habe ich eine Eingabemaske in der unter anderem der Umsatz eingetragen wird.
Das Bestandsfeld errechnen wir derzeit noch selbst und tragen den Wert ein, damit das Formular im Anschluss den aktuellen Wert mit Bestand x Kurs errechnen kann.

Kann ich den Bestandswert nicht automatisch errechnen lassen?
In meinem Bericht zieht er zwar die Summe und gibt den richtigen Bestand aus, aber da ich auch den aktuellen Wert mit der Massnahme hinterlegen muss, brauche ich den Wert bereits im Formular bei der Eingabe.
Ich füge mal ein Screenshot aus dem Bericht bei.
Den Umsatz gebe ich mit der Massnahme ein. Den Bestand muss ich selbst errechnen aus der letzten Zeile heraus + Umsatz.
Wert je Aktie trage ich ein und der aktuelle Wert wird automatisch errechnet.
Titel: Re: Bestandswert errechnen
Beitrag von: MaggieMay am Oktober 19, 2015, 14:43:48
Hallo,

die Suche nach "access differenz zum vorherigen datensatz" sollte hierzu reichlich Futter liefern.
Titel: Re: Bestandswert errechnen
Beitrag von: dobby110 am Oktober 19, 2015, 15:05:56
Danke für die Antwort, ich habe aber auch schon selbst etwas gesucht, aber nie das gefunden was ich brauche.

Das Problem bei mir ist, dass in der Tabelle ALLE Massnahmen eingetragen werden. Man kann sich daher leider nicht einfach auf den letzten Datensatz beziehen.
Sondern der letzte Datensatz ergibt sich aus Kombination Wertpapier und Fonds.
Ich will also den letzten Bestandswert von einem Wertpapier in ausgewählten Fonds. Und zu diesem Wert soll dann mein Umsatz hinzugerechnet werden.
Die Frage ist auch, ob das überhaupt funktioniert?
Titel: Re: Bestandswert errechnen
Beitrag von: MaggieMay am Oktober 19, 2015, 15:27:55
Der "vorherige" Datensatz sollte sich mittels Sortierung über Wertpapier, Fonds und Datum ermitteln lassen.
Titel: Re: Bestandswert errechnen
Beitrag von: dobby110 am Oktober 21, 2015, 11:10:02
Hallo nochmal.
Ich habe jetzt eine Abfrage gebastelt, die mir die Summen aller Umsätze je Investment errechnet.

Wie bekomme ich den Wert denn jetzt in meinem Datensatz angezeigt?

Das Feld in der Abfrage heißt


=[abr_Bestand_je_Investment]![Summe von Umsatz]


Das Problem liegt wohl daran, dass der Feldname nicht ausreicht, sondern dass ich das Feld auf den aktuell offenen Datensatz beziehen muss.
Kann mir da einer weiterhelfen?
Habe es mit derzeit mit einem Textfeld versucht und den Feldnamen als Steuerelementinhalt eingetragen. Das funktioniert aber leider nicht
Titel: Re: Bestandswert errechnen
Beitrag von: MaggieMay am Oktober 21, 2015, 12:17:32
Hi,

ich vermute, du suchst etwas in der Art:
=DomWert("Summe von Umsatz";"abr_Bestand_je_Investment";"Investment=" & [Investment])
wobei "Investment" ein Datenfeld sowohl aus der Datenquelle des Formulars als auch der Abfrage sein sollte.

Das hat aber mit deiner ursprünglichen Frage nicht mehr viel zu tun, oder?
Titel: Re: Bestandswert errechnen
Beitrag von: dobby110 am Oktober 21, 2015, 12:43:02
Ich versuche es jetzt über diesen Zwischenschritt.
Dann wird mir zumindest der bisherige Bestand angezeigt. Darauf kann ich dann aufbauen.

Der Code funktioniert leider nicht.
Das Datenfeld auf welches ich mich beziehen würde heißt "Kombi ID"
Leider mit einem Leerzeichen drin, was man ja vermeiden sollte.

=DomWert("Summe von Umsatz";"abf_Bestand_je_Investment";"Kombi ID=" & [Kombi ID])

Habe es dann so versucht, bekomme aber einen Fehler.
Titel: Re: Bestandswert errechnen
Beitrag von: DF6GL am Oktober 21, 2015, 12:57:15
Hallo,

wenn schon Leerzeichen in Namen, dann eben in Eckklammern einschließen:


=DomWert("Summe von Umsatz";"abf_Bestand_je_Investment";"[Kombi ID]=" & [Kombi ID])
Titel: Re: Bestandswert errechnen
Beitrag von: dobby110 am Oktober 21, 2015, 13:00:58
ZitatDomWert("[Summe von Umsatz]";"[abf_Bestand_je_Investment]";"[Kombi ID] = " & [Kombi ID])

genau so funktioniert es. Habe es gerade rausgefunden ;-)
Vielen Dank.

Ich gebe über mein Formular ja Daten in eine Tabelle ein.
Wenn ich da ein ungebundenes Textfeld einbaue, wo mir ein Wert errechnet wird, dann landet dieser ja nicht in meiner Tabelle. Gibts dafür auch noch eine Lösung. Zum Beispiel das genau dieser Wert in meiner Tabelle eingetragen wird?
Titel: Re: Bestandswert errechnen
Beitrag von: DF6GL am Oktober 21, 2015, 13:11:58
Hallo,


http://www.donkarl.com/?FAQ4.11
Titel: Re: Bestandswert errechnen
Beitrag von: MaggieMay am Oktober 21, 2015, 17:47:09
Hi,

wenn sich das Feld aus anderen Feldern des aktuellen Datensatzes berechnen lässt, käme u.U. auch der Datenfeldtyp "Berechnet" in Frage. Ein Grund, warum man das machen sollte, fällt mir dazu aber nicht ein.
Titel: Re: Bestandswert errechnen
Beitrag von: dobby110 am Oktober 22, 2015, 09:40:20
Nochmals vielen Dank für die Hilfe.

Jetzt wird es allerdings kurios.
Ich habe ja die Abfrage erstellt, die mir die Bestände errechnet.

Dann habe ich jetzt in meinem Formular über folgenden Code

ZitatDomWert("[Summe von Umsatz]";"[abf_Bestand_je_Investment]";"[Kombi ID] = " & [Kombi ID])

den Bestand "gezogen".
Das funktioniert soweit auch, aber nur so lange bis ich die Datenbank schließe. Wenn ich sie einige Zeit später öffne, funktioniert der Code nicht mehr und es steht "#Name?" in dem Feld.
Hat jemand eine Idee woran das liegen kann?
Wenn ich das Feld lösche und im Entwurf neu erstelle, dann funktioniert es wieder. Aber wie gesagt ... bis ich die Datenbank schließe und später neu öffne  :o ::)
Titel: Re: Bestandswert errechnen
Beitrag von: MaggieMay am Oktober 22, 2015, 10:39:45
Gibt es in der Abfrage tatsächlich ein Datenfeld namens "Kombi ID"??

Zeig doch bitte auch mal den SQL-Code der Abfrage.
Titel: Re: Bestandswert errechnen
Beitrag von: dobby110 am Oktober 22, 2015, 11:20:53
ZitatSELECT Investments.[Name Ziel-Investment], Bewertungen.Bewertung, Bewertungen.Währung, Bewertungen.[Bericht per], [Name Ziel-Investment] & [Bericht per] AS Bericht
FROM Investments INNER JOIN Bewertungen ON Investments.ID = Bewertungen.[Ziel-Investment]
WHERE (((Bewertungen.[Bericht per]) Is Not Null));

Das ist der SQL in der Abfrage
Prinzipiell funktioniert es ja. Aber nur wenn ich das Feld in meinem Formular neu erstelle. Nachdem die Datenbank geschlossen wurde und wieder neu geöffnet wird, funktioniert es nicht mehr.
Titel: Re: Bestandswert errechnen
Beitrag von: MaggieMay am Oktober 22, 2015, 11:24:59
Ok, wie man sieht gibt es in dieser Abfrage kein Datenfeld namens "Kombi ID", daher kann das Kriterium, das du bei der DomWert-Funktion angegeben hast, schon mal nicht funktionieren.
Was also wiillst du da womit vergleichen?!

BTW:
Gewöhne dir an, sinnvolle Feldnamen ohne Sonderzeichen zu vergeben und meide reservierte Wörter wie bspw. "Bericht".

PS:
Auch "Summe von Umsatz" gibt es in der Abfrage nicht, da hast du wohl den falschen Code gezeigt?
Titel: Re: Bestandswert errechnen
Beitrag von: dobby110 am Oktober 22, 2015, 11:31:00
Sorry, falsche Abfrage kopiert

ZitatSELECT DISTINCTROW Massnahmen.[Name Investment], Massnahmen.[betroffener Fonds], Massnahmen.[Kombi ID], Sum(Massnahmen.Umsatz) AS [Summe von Umsatz]
FROM Massnahmen
GROUP BY Massnahmen.[Name Investment], Massnahmen.[betroffener Fonds], Massnahmen.[Kombi ID];

Um die hier geht es in diesem Fall.
Titel: Re: Bestandswert errechnen
Beitrag von: dobby110 am Oktober 22, 2015, 11:36:26
anbei mal noch zwei Screenshots
Screen1.jpg zeigt den Fehler ...
Wenn ich in den Entwurf wechsele und erstelle ein neues Textfeld und trage den gleichen Code darin ein, dann funktioniert es wieder.
Beim nächsten öffenen aber nicht mehr.
Titel: Re: Bestandswert errechnen
Beitrag von: dobby110 am Oktober 22, 2015, 11:39:36
habe das Feld jetzt nochmal in meinem Formular erstellt und die Datenbank gespeichert, geschlossen und neu geöffnet.

Dann sieht es so aus (siehe Screenshot)
Titel: Re: Bestandswert errechnen
Beitrag von: MaggieMay am Oktober 22, 2015, 13:02:28
Es wäre wohl logisch und konsequent, alle drei Gruppenfelder im Kriterium anzugeben, oder was meinst du?

Wie lautet denn die Datenquelle des Formulars? Zeige bitte den SQL-Code der Abfrage.
Titel: Re: Bestandswert errechnen
Beitrag von: dobby110 am Oktober 22, 2015, 13:08:43
Das Formular ist ein Geteiltes Formular, welches auf eine Abfrage "Wiedervorlage" geht.
Überalle wo ein Wiedervorlage-Datum gesetzt ist, die Massnahmen fallen dort raus.

Im dazugehörigen Formular werden mir dann alle Felder der Tabelle Massnahme angezeigt, die ich befüllen kann.
Damit die Eingabe einfacher ist, weil ich den neuen Bestand, nach dem Umsatz eintragen und festhalten muss, hätte ich gerne zur Hilfe den bisherigen Bestandswert angezeigt.
Das ist der Hintergrund.

SQL der Abfrage steht weiter oben schon. Habe ich bereits hier rein kopiert.
Liegt das Problem vielleicht daran, dass ich ein geteiltes Formular verwende?
Titel: Re: Bestandswert errechnen
Beitrag von: MaggieMay am Oktober 22, 2015, 13:15:47
Am geteilten Formular liegt es sicherlich nicht...

Aber wenn das die Datenquelle des Formulars ist:
SELECT Investments.[Name Ziel-Investment], Bewertungen.Bewertung, Bewertungen.Währung, Bewertungen.[Bericht per], [Name Ziel-Investment] & [Bericht per] AS Bericht
FROM Investments INNER JOIN Bewertungen ON Investments.ID = Bewertungen.[Ziel-Investment]
WHERE (((Bewertungen.[Bericht per]) Is Not Null));

und dies die Abfrage "abf_Bestand_je_Investment":
SELECT DISTINCTROW Massnahmen.[Name Investment], Massnahmen.[betroffener Fonds], Massnahmen.[Kombi ID], Sum(Massnahmen.Umsatz) AS [Summe von Umsatz]
FROM Massnahmen
GROUP BY Massnahmen.[Name Investment], Massnahmen.[betroffener Fonds], Massnahmen.[Kombi ID];

nach welchen Kriterien soll denn dann die Umsatzsumme ermittelt werden?

So jedenfalls nicht:
DomWert("[Summe von Umsatz]";"[abf_Bestand_je_Investment]";"[Kombi ID] = " &[color=red] [Kombi ID][/color])
denn das Formular kennt "Kombi ID" ja wohl nicht, oder?
Titel: Re: Bestandswert errechnen
Beitrag von: dobby110 am Oktober 22, 2015, 13:38:48
Hallo nochmal.

Den ersten Code kannst du vergessen. Den hatte ich aus einer anderen Abfrage versehentlich kopiert.
Meine Datenquelle des Formulars zielt auf die Tabelle "Massnahmen" ab.
Da ist dieses Feld natürlich hinterlegt.

Ich mache mal einen Screenshot von dem Formular. Da sieht man ja alle Felder.
Und mein Code funktioniert ja. Er funktioniert nur dann nicht mehr, wenn ich Access schließe und neu öffne.
Wenn mein Code falsch wäre, dann würde er ja generell gar nicht funktionieren und das ist nicht mein Problem. Problem ist wirklich, dass er nach erneutem Öffnen der Datenbank nicht mehr funktioniert. Siehst du ja auch an den Screenshots, die ich zuvor gepostet habe, dass da auch der richtige Wert drin stehen kann.

Noch ein Beispiel. Ich öffne mein geteiltes Formular, der Bestandswert wird nicht mehr angezeigt. Ich wechsele ich die Entwurfsansicht, kopiere das bestehende Textfeld (siehe die Felder "bisheriger Bestand" und "Text499" in meinem Screenshot), in dem mein Bestand angezeigt werden soll, wechsele wieder in die Normale Ansicht und in beiden Feldern (bisheriges und neu kopiertes) sehe ich den richtigen Bestand.
Jetzt schließe ich meine Datenbank. Öffne sie erneut und beide Felder zeigen nur noch den Fehler "#Name?" an.
Titel: Re: Bestandswert errechnen
Beitrag von: MaggieMay am Oktober 23, 2015, 13:07:28
ZitatDas Formular ist ein Geteiltes Formular, welches auf eine Abfrage "Wiedervorlage" geht.
Den Code dieser Abfrage würde ich doch gern noch sehen, auch wenn du es für unnötig hältst.
Titel: Re: Bestandswert errechnen
Beitrag von: dobby110 am Oktober 23, 2015, 16:04:02
Ich glaube mein Problem hat sich selbstständig gelöst.

Ich habe die Datenbank heute geteilt und habe nur ein FE und BE.
Seitdem ich das gemacht habe, wird der Wert korrekt gezogen.
Manche Dinge kann man und muss man wohl nicht versehen.

Die Abfrage zeigt einfach nur die Datensätze an, die ein Datum im Feld Wiedervorlage stehen haben. Mehr ist da nicht dahinter.