Neuigkeiten:

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

Mobiles Hauptmenü

Steuerelementinhalt

Begonnen von dobby110, August 19, 2022, 16:06:31

⏪ vorheriges - nächstes ⏩

dobby110

Hallo zusammen,

ich hoffe mir kann jemand weiterhelfen.
Und zwar arbeite ich gerade an einem Bericht und hätte gerne den passenden Devisenkurs in diesem Bericht.

Im Bericht selbst habe ich das Feld "txt_Währung" aus dem die Währung hervorgeht.
Jetzt möchte ich an Hand dieser Währung den entsprechenden Devisenkurs im Bericht haben.

Dieser befinden sich in der gleichen Abfrage, auf der mein Bericht aufbaut und heisst "dec_EUR/EUR" oder "dec_EUR/USD" oder "dec_EUR/GBP" usw....

Das "dec_EUR/" will ich vorgeben. Die Währung soll er aus dem Feld "txt_Währung" ziehen.

Ich hatte jetzt mal versucht ="dec_EUR/" & [txt_Währung]unter dem Steuerelementinhalt einzutragen, damit wird aber nicht der richtige Kurs gezogen, sondern der Steuerelementinhalt wird genauso, wie ich den "Code" eingetragen habe, auch auf dem Bericht angezeigt.

Wie schaffe ich es denn, dass mir wie gewünscht der entsprechende Devisenkurs angezeigt wird?
Wo liegt mein Fehler?

DF6GL

Hallo,

Zitat...Devisenkurs im Bericht haben....

Dieser befinden sich in der gleichen Abfrage, auf der mein Bericht aufbaut und heisst "dec_EUR/EUR" oder "dec_EUR/USD" oder "dec_EUR/GBP" usw....

Das "dec_EUR/" will ich vorgeben. Die Währung soll er aus dem Feld "txt_Währung" ziehen.


Unklar.  Wie heißt das Feld für den Devisenkurs?

Was sind dies für Werte und wo stehen die?:
Zitat"dec_EUR/EUR" oder "dec_EUR/USD" oder "dec_EUR/GBP"



Zitatdamit wird aber nicht der richtige Kurs gezogen,

Da steht ja auch nichts von einem Devisencode...


Zitatsondern der Steuerelementinhalt wird genauso, wie ich den "Code" eingetragen habe, auch auf dem Bericht angezeigt.

ja, hätte ich auch stark erwartet. 8)

Vermutlich muß in die Berichtsabfrage die Devisencode-Tabelle mit aufgenommen werden, damit Du auf dises oder ein anderes zugehörendes Feld zugreifen kannst.







dobby110

in der Berichtsabfrage habe ich die jeweiligen Felder drin.
Ich möchte den Bericht aber nicht unnötig aufblähen, sondern nur den Devisenkurs mit der entsprechenden Währung anzeigen.

Ich füge mal ein Screenshot der Berichtsabfrage an.
Vielleicht wird es dann deutlicher.

Vorne sieht man "txt_Währung" und an Hand von diesem Feld soll der passende Devisenkurs gezogen werden.

Sollte also EUR vorne bei "txt_Währung" stehen, möchte ich den Devisenkurs "dec_EUR/EUR"
Wenn USD bei "txt_Währung" steht, möchte ich den Devisenkurs "dec_EUR/USD"

usw.


Ich hoffe so war es verständlicher?

MzKlMu

Hallo,
das kommt davon, wenn man eine Datenbank falsch aufbaut. Die Kurse gehören eigentlich als je ein Datensatz in eine extra Tabelle mit einem Fremdschlüssel zur Währung. Dann wäre das ein Kinderspiel und ganz einfach über die Verknüpfung zu lösen.
So wie das jetzt ist, musst Du über die letzten 3 Buchstaben der dec.... Felder per DLookup den Wert auslesen. Da habe ich jetzt aber nichts parat.


PS:
Mir ist gerade aufgefallen, dass Du so gut wie nie Feedback zu Deinen Themen gibst. Feedback gehört aber in einem Forum in dem man um Hilfe bittet unbedingt dazu. Der der antwortet will ja auch wissen, ob seine Antwort geholfen hat (oder eben nicht).
Gruß Klaus

DF6GL

Hallo,

der Tabellenaufbau genügt nicht den Normalisierungsregeln, so dass die Lösung der Aufgabe etwas schwieriger bis gar unmöglich wird...



Die Abfrage selber ist für Berichte ebensowenig brauchbar, als dass Gruppierungen in der Abfrage vom Bericht in der Regel einfach ignoriert werden.


Korrekt ist es,die Devisencode-Felder in eine Tabelle "tblDevisencodes" auszulagern, wobei es in dieser Tabelle 3 Datensätze  für für jeweils eine Währungen geben sollte.

Zusätzlich gilt das Gleiche für den "Währungstext", der in einer Tabelle "tblWaehrungen" geführt werden sollte und mit passender Beziehung zu den anderen Tabellen stehen muss.


Die Gruppierungen (und Sortierungen) werden ausschließlich im Bericht vorgenommen.



Als Quick&Dirty-Lösung für den aktuellen Zustand könnte eine geschachtelte Wenn-Dann-Bedingung im Steuerelementinhalt  (oder in einer berechneten Abfragespalte) in Frage kommen.


(Luftcode:)
= Wenn([txt_Währung] = "EUR" ; [dec_EUR/EUR];  Wenn ([txt_Währung] = "USD" ; [dec_EUR/USD];  Wenn ([txt_Währung] = "GBP" ; [dec_EUR/GBP])))

dobby110

#5
Vielen Dank für die Rückmeldung.

Ich werde den Code von DF6GL gleich mal probieren.
Vielleicht zur Erklärung, warum ich den Tabellenaufbau so gewählt habe.

Ursprünglich wollte ich für die Devisenkurse je Währung einen eigenen Eintrag machen. Aber ich denke, dass ich am Ende das gleiche Problem haben werde, wie bei meiner jetzigen Lösung. Für diese habe ich mich letztendlich entschieden, da man so die Devisenkurse einfacher in einer Reihe eintragen kann und somit auch nichts vergisst. Trage ich jeden Kurs einzeln ein, könnte eine Währung auf der Strecke bleiben, da der Anwender (theoretisch) nicht zwingend weiß, welche Währungen eingetragen werden müssen. -> natürlich weiß er es, aber es könnte trotzdem ein Eintrag auf der Strecke bleiben.

Die Devisenkurse benötige ich lediglich für eine Statistik. Sie spielen demnach keine große Rolle.
Im Bericht ziehe ich je Fonds die ganzen Summen der Bestände. Dieser wird nur einmal pro Monat (am letzten Tag) gestartet. D.h. es gibt jeden Monat auch neue Devisenkurse, die händisch eingetragen werden müssen.
Gleiches gilt für die Fondsvermögen. Diese haben mit meiner eigentlichen Datenbankstruktur nichts zu tun und werden nur für die Statistik einmal pro Monat eingetragen.

Mein Problem besteht darin, das alles in einem Bericht zusammen zu bringen.

Einmal der Fonds mit seinem Fondsvermögen bspw. per 31.07.
Fondsvermögen erhalte ich immer in EUR und trage ich in einer eigenen Tabelle ein.
 
Dann ziehe ich die Summen der ganzen Bestände. Die Bestände sind teilweise in einer anderen Währung.
Deswegen habe ich eine weitere Tabelle mit den Devisenkursen. Diese trage ich auch nur einmal pro Monat ein.

Wenn ich den Bericht starte, gebe ich das gewünschte Datum an, zu dem der Bericht aufgebaut werden soll.

Bspw. 31.07. - dann werden alle Bestände per 31.07. gezogen und aufgelistet.
Das Fondsvermögen wird gezogen, welches per 31.07. eingetragen wurde.
Die Devisenkurse per 31.07. werden gezogen und in der Abfrage auch richtig angezeigt.
Aber ich will natürlich nicht alle Devisenkurse auf dem Bericht haben, sondern nur den, der der Bestandswährung entspricht, damit ich den Bestand in EUR umrechnen lassen kann. Dieser Wert wird im Anschluss nochmals mit dem Fondsvermögen verrechnet.

Vielleicht bin ich selbst nicht drauf gekommen, aber wie würde denn ein korrekter Tabellenaufbau für meinen Fall aussehen?
Selbst wenn ich jede Währung einzeln in die Tabelle eintragen würde, dann wüsste der Bericht ja immer noch nicht, welcher Devisenkurs von dem gewünschten Termin benötigt wird? Die Währungen tauchen in der Tabelle dann x Mal auf. Nur zu einem anderen Termin. Und in der Abfrage könnte ich auch wieder nur jede Währung einzeln ziehen.

Vielleicht stehe ich auf dem Schlauch, aber mir fällt da keine bessere Lösung ein.


Ich füge mal noch ein Screenshot vom Abfrage-Ergebnis an. Da sieht man, dass die Währungen richtig gezogen werden. Aber ich will halt nicht alle Kurse auf dem Bericht stehen haben.

Ergänzung: Die Wenn-Dann-Bedingung funktioniert !