Neuigkeiten:

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

Mobiles Hauptmenü

Wert aus Listenfeld als in SQL Query?

Begonnen von RaginRob, Januar 17, 2011, 12:36:01

⏪ vorheriges - nächstes ⏩

RaginRob

Hallo zusammen,

ich hoffe ihr könnt mir kurz helfen!? Normalerweise programmiere ich Datenbankfrontends mit "echten" Programmiersprachen, diesmal allerdings bin ich darauf angewiesen, dass es mit Access-Bordmitteln gemacht wird, möglichst ohne VBA. Was ich vorhabe ist bestimmt ne ganze einfache Sache, aber ich stehe total auf dem Schlauch.

Ich habe drei kleine Tabellen (siehe auch angehängte Skizze):

Kunden (kunden_id,kunde)
Produkte (produkt_id,produkt,version)
Installationen (produkt_id,kunden_id,notizen)

Und zwei Beziehungen:

Kunden.kunden_id --> Installationen.kunden_id  (1:n)
Produkte.produkt_id --> Installationen.produkt-id (1:n)

Was ich erreichen möchte:

Ich benötige ein Formular mit einem Listenfeld, in dem alle Kunden aufgelistet sind (also kunden_id und kunde). Daneben soll ein Listenfeld folgende Daten anzeigen: alle Installationen, die zum gerade ausgewählten Kunden im Listenfeld gefunden werden, in drei Spalten (Produkte.produkt, Produkte.version, Installationen.notizen).

So dass man halt links auf einen Kunden klickt und rechts direkt sieht, welche Produkte installiert sind. Das trickige ist, die produkt_id aus der "Installationen"-Tabelle in den Produktnamen (produkt) und die Version richtig "aufzulösen"... also so, dass dort nicht die produkt_id steht, sondern die in der Produkttabelle hinterlegten Daten.

Das Listenfeld für die Kunden heisst lstKunden, das für die zugehörigen Installationen lstInst. lstKunden ist an die Tabelle Kunden gebunden. In den Eigenschaften von lstInst habe ich versucht, bei Datensatzherkunft mit einem SQL Query die entsprechenden Daten abzufragen, aber ich habe keine Ahnung, wie ich die richtige Syntax dafür ist. Oder muss/sollte man besser eine Abfrage erstellen und diese benutzen? Wie müssen dann die Kriterien aussehen?

Danke für eure Hilfe!

PS: Ich habe es auch schon mit einem Unterformular versucht, das klappte soweit auch, aber ich benötige ein Listenfeld mit den Kunden zur schnellen Auswahl, das schien nicht zu funktionieren.


[Anhang gelöscht durch Administrator]

database

#1
Hallo,

erstmal würde ich dir empfehlen für die Beziehung zwischen 'Produkte' und 'Installationen' referenzielle Integrität einzustellen.

Zitat... aber ich benötige ein Listenfeld mit den Kunden zur schnellen Auswahl ...
Das Zauberwort für dein Vorhaben lautet 'abhängige Listenfelder'

Dabei wird bei Auswahl eines Kunden dessen kunden_id aus dem Listenfeld gelesen und an Hand dieser Info die Datenherkunft des 2. Listenfeldes erstellt.

Nachschlagen kannst du dieses mittels Forumssuche - das Thema hatten wir hier schon einige Male - oder du liest mal bei donkarl.com nach:
im Forum beispielsweise hier: http://www.access-o-mania.de/forum/index.php?topic=12778.0
oder bei Karl Donaubauer: http://www.donkarl.com?FAQ4.36

ZitatNormalerweise programmiere ich Datenbankfrontends ...
Somit sollte das Erstellen eines SQL-Statements, welches die entsprechenden Datensätze liefert, kein Problem sein ...   ;D

Für die Datenherkunft des 1. Listenfeldes nimmst du in Anlehnung an dein Tabellenkonstrukt folgende SQL:

SELECT Kunden_id, Kunde FROM Kunden ORDER BY Kunde

Dann definierst im Formularentwurf für das Listenfeld der Kunden die Spaltenanzahl "2", als gebundene Spalte "1" und als Spaltenbreiten "0cm;4cm"

Dann erzeugst du die entsprechende Ereignisprozedur 'Beim Klicken' (ganz ohne VBA gehts nicht), klickstm auf die 3 Punkte neben dem Eintrag 'Ereignisprozedur' und
bastelst dir dort ein Codeschnippsel entsprechend der Empfehlungen bei donkarl oder dem oben genannten Beispiel aus dem Forum zusammen.

HTH