Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Access Formular Lösung

Begonnen von dobby110, Oktober 10, 2014, 11:29:03

⏪ vorheriges - nächstes ⏩

dobby110

Hallo zusammen,

ich wäre auf Hilfe angewiesen. Bin im Prinzip ein Access Neuling, habe aber schon eine kleine Datenbank zusammen gebastelt.
Jetzt habe ich folgendes Problem:

Ich habe zum Beispiel eine Fonds ... in diesem Fonds gibt es mehrere Wertpapiere.
Von den Tabellen her, habe ich eine für alle Fonds und eine Tabelle mit allen Wertpapieren.
Jetzt kann es natürlich vorkommen, dass ich ein Wertpapier in mehreren Fonds habe.
Das Wertpapier lege ich dann auch mehrmals in der Tabelle Wertpapiere an, habe in dieser Tabelle aber auch ein Feld, in dem ich den dazugehörigen Fonds angebe.

Wenn Massnahmen in den Wertpapieren stattfinden, will ich diese in die Datenbank eintragen. Dafür habe ich mir ein Formular gebastelt, welches als Eingabemaske dient.
Ich wähle in dem Formular über ein Kombinationsfeld zuerst den Fonds, in einem zweiten Kombinationsfeld das Wertpapier. Ich bekomme in dem zweiten Kombinationsfeld aber alle Wertpapiere angezeigt und weiß nicht, wenn ich doppelte habe, welches das richtige ist.
Gibt es hierfür eine Möglichkeit, dass mir im zweiten Kombinationsfeld NUR die Wertpapiere angezeigt werden, welche in dem Fonds enthalten sind, den ich über das erste Kombinationsfeld ausgewählt habe?

So wie ich es derzeit gelöst habe, kann ich nur unter allen Fonds wählen und dann im zweiten Schritt unter allen Wertpapieren, die dann auch doppelt auftauchen.

Hoffe es war soweit verständlich gewesen.
Nun bin ich mal gespannt, ob wir eine Lösung für mein Problem finden können.
Vorab schon einmal vielen Dank.

Und nochmal, bin absoluter Neuling und hoffe auf verständliche Antworten. ;-)

MaggieMay

Hallo,
Zitat von: dobby110 am Oktober 10, 2014, 11:29:03Das Wertpapier lege ich dann auch mehrmals in der Tabelle Wertpapiere an, habe in dieser Tabelle aber auch ein Feld, in dem ich den dazugehörigen Fonds angebe.
ich denke, das solltest du besser mit einer Zwischentabelle lösen, damit kannst du jedem Fonds beliebig viele verschiedene Wertpapiere zuordnen. Dabei kannst du neben den Verknüpfungsschlüsseln auch noch Informationen wie Anzahl und Kaufdatum etc. in dieser Tabelle ablegen.
Zitatdass mir im zweiten Kombinationsfeld NUR die Wertpapiere angezeigt werden, welche in dem Fonds enthalten sind, den ich über das erste Kombinationsfeld ausgewählt habe?
Dazu musst du die Datensatzherkunft von Kombi-2 nach Auswahl in Kombi-1 aktualisieren. Je nach Einstellung der Abfrage genügt ein Requery oder es ist eine Neuzuweisung des SQL-Strings erforderlich.
Freundliche Grüße
MaggieMay

dobby110

Was sollte in der Zwischentabelle dann drin stehen oder was wäre dann das Kriterium, welches mein Problem lösen würde?

Datensatzherkunft habe ich jetzt

SELECT [Investments].[ID], Investments.[Name Ziel-Investment] FROM Investments;

Aber wie kann ich mich dann noch auf das Kombinationsfeld 1 in diesem Code beziehen?

Bin wie gesagt Neuling und habe fast alles nur über die Assistenten aufgebaut.

MaggieMay

Was sind denn bei dir "Investments", die Fonds (engl. fund) oder die Wertpapiere (engl. security)?

ZitatAber wie kann ich mich dann noch auf das Kombinationsfeld 1 in diesem Code beziehen?
Indem du ein Kriterium hinzufügst, bspw. so:SELECT [Investments].[ID], Investments.[Name Ziel-Investment] FROM Investments WHERE Investments.Fonds_ID = [kombifeld1];eingetragen als Datensatzherkunft von Kombifeld2.
Freundliche Grüße
MaggieMay

dobby110

Hallo nochmal,

vielen Dank für den Tipp.
Habe es versucht, aber leider ohne Erfolg. Habe auch über den Formelgenerator die Formel versucht anzupassen, aber entweder bekomme ich im zweiten Kombinationsfeld gar keine Werte mehr angezeigt oder nur noch ein Wert von einem Investment. Warum gerade das, verstehe ich selbst auch nicht.


MaggieMay

Dann zeige doch bitte auch deinen Code dazu.
Freundliche Grüße
MaggieMay

dobby110

Hallo, hatte Urlaub und komme erst jetzt dazu.

Ich führe mal die Codes vom Kombifeld 1 und vom Kombifeld 2 auf:

Kombifeld 1:
SELECT [DF für AIs].[ID], [DF für AIs].[Fondsname] FROM [DF für AIs];

Kombifeld 2:
SELECT [Investments].[ID], Investments.[Name Ziel-Investment] FROM Investments;

Habe es dann wie folgt versucht:

SELECT [Investments].[ID], Investments.[Name Ziel-Investment] FROM Investments WHERE [Investments].[ID] = [betroffener Fonds];

und den hier habe ich auch versucht:

SELECT [Investments].[ID], Investments.[Name Ziel-Investment] FROM Investments WHERE [DF für AIs]![ID] = [betroffener Fonds];



Bei dem ersten Code, den ich versucht habe, bekomme ich in Kombifeld 2 nur noch ein Investment angezeigt. Und zwar das erste Investment meiner Liste.

Bei dem zweiten Code funktioniert gar nichts und es öffnet sich ein Abfrage-Feld in dem ich Parameter angeben soll.

MaggieMay

Hallo,

über welche Datenfelder sind denn die Tabellen miteinander verknüpft?
Freundliche Grüße
MaggieMay

dobby110

Ich verstehe die Frage leider nicht.

In den Beziehungen ?

DF für AIs ist mit Investments gar nicht verknüft.
Nur ein anderes Feld, mit einer internen Fondsnummer. Dies nützt aber bei meinem Problem nichts.
Muss ich da eine Verknüfung erstellen, zwischen den beiden Tabellen?
Tut mir echt leid, bin da noch nicht so versiert. Bekomme zwar alles irgendwie gelöst, aber so richtig den Überblick hab ich nicht mehr. Speziell bei den Beziehungen.

dobby110

auch wenn jetzt einige die Hände über dem Kopf zusammen schlagen ;-)

Hier mal die Beziehungen der Datenbank.

MaggieMay

ZitatIch habe zum Beispiel eine Fonds ... in diesem Fonds gibt es mehrere Wertpapiere.
Diese Beziehung muss sich datentechnisch herstellen lassen. Entweder gibt es in der Tabelle Wertpapiere einen Bezug auf den übergeordneten Datensatz in der Tabelle Fonds oder es gibt eine Zwischentabelle in der die Fonds mit den Wertpapieren verknüpft werden.

Wie sieht das bei dir aus? Ein Screenshot vom Beziehungsfenster könnte hier aufschlussreich sein.

PS:
...ah, da ist es ja schon! Da muss man sich aber erstmal Durchblick verschaffen...

Nachtrag:
Das mit dem Durchblick ist nicht so einfach, aber auf jeden Fall hast du schonmal eine Fonds-ID in der Tabelle Investments, das sollte dir eigentlich weiterhelfen.
Freundliche Grüße
MaggieMay

dobby110

Ich konnte das Problem nicht lösen.
Egal was ich versucht habe.

Habe die Datenbank jetzt neu aufgebaut und eine weitere Tabelle erstellt, in der ich die Investments zu den Fonds zuordne.
Kann ich in dieser Tabelle einen eindeutigen Schlüssel erzeugen lassen, der sich aus der Fonds ID und der Investment ID zusammensetzt?
Dann könnte ich nämlich bei abfragen auf eine bestimmte Fonds-Investment Kombination auf diesen Schlüssel abzielen.
Habe es in der Tabelle mit einem "Berechnen" Feld versucht. Da konnte ich auch Fonds ID & Investment ID angeben, so dass ich diesen gewünschten Schlüssel erhalten habe. Allerdings kann ich ein berechnetes Feld nicht als Primärschlüssel verwenden.

MaggieMay

Hallo,

du kannst einen Index über mehrere Felder anlegen, indem du bei nachfolgenden Zeilen im Index-Fenster keinen Indexnamen einträgst. Somit werden die angegeben Datenfelder zu einem Index zusammengeführt.
Freundliche Grüße
MaggieMay