Office - Word, Excel und Co. 9.759 Themen, 41.747 Beiträge

Listenfeld in Access 2000

d-oli / 3 Antworten / Baumansicht Nickles

Hallo Leute,


 


Ich habe eine kleine Test-Datenbank mit vier Tabellen (Tabelle1-4) die wie folgt zueinander in Beziehung stehen:


 


- tabbelle1/tabbelle2 = 1 zu n


- tabbelle2/tabbelle3 = 1 zu n


 -tabbelle3/tabbelle4 = 1 zu n


 


Nun habe ich ein Formular angelegt, in dem ich drei Listenfelder eingefügt habe. Je eines für Tabelle 1, 2 und 3. Nun möchte ich, wenn ich im Listenfeld der Tabelle 1 eine Zeile anklicke im Listenfeld der Tabelle 2 nur jene Datensätze anzeigen die dem angeklickten Datensatz im Listenfeld der Tabelle 1 zugeordnet sind. Wie mach ich das? Ich habe versucht beim anklicken eine Abfrage zu Erzeugen, um diese im nächsten Listenfeld darzustellen. Ging nicht.....


 


Wer kann weiterhelfen?


 


Danke , d-oli

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
pco d-oli „Listenfeld in Access 2000“
Optionen

nennen wir die Listenfelder Liste1 bis Liste4.
Dann funktioniert das ganze so.
Liste1 : Steuerelementefeldinhalt = Tabelle1
Liste2 : SE-Inhalt = Parameterabfrage der Tabelle2 mit dem Parameter [Liste1.text] über Verknüüfungsschlüssel...
Liste3 : SE-Inhalt = Parameterabfrage der Tabelle3 mit dem Parameter [Liste2.text]...
Liste3 : SE-Inhalt = Parameterabfrage der Tabelle4 mit dem Parameter [Liste3.text]...

Wir brauchen also 3 Parameterabfragen.

So nun etwas Visual-Basic:

Eigenschaften Liste1:
OnClick (also Ereignis_Beim-Clicne) -> ...
Visual-Basic-Editor (Code-Generator):

Funktionsinhalt:

Liste2.setfocus
Liste2.requery
Liste3.setfocus
Liste3.requery
Liste3.setfocus
Liste3.requery
Liste1.setfocus

Sollte an sich so klappen. Etwas raffinierter geht es, wenn man aus den Listen ein Listenfeld macht:

For i=1 to 4
Liste(i).setfocus
Liste(i).requery
End For
Liste(1).setfocus

Ich kann es jetzt nicht ausprobieren, aber ich denke so geht es...

PCO

bei Antwort benachrichtigen
d-oli pco „nennen wir die Listenfelder Liste1 bis Liste4. Dann funktioniert das ganze so....“
Optionen

Hallo pco

Ich bringe es nicht zum laufen. Ich habe Folgendes Probiert:

Liste1 -> Eigenschaften -> Daten -> Steuerelementinhalt = Tabelle1 oder [Tabelle1] oder =[Tabelle1.Id] etc. ...
Beim anklicken der Liste kommt der Fehler "... kann nicht bearbeitet werden ... ist an unbekanntes Feld gebunden ...".

Die Ereignisprozedur Liste1_Click() mit Liste1.SetFocus, Liste2.Requery etc. sollte eigentlich problemlos laufen.

Ich habe noch folgendes Probiert (du hast mich auf die Idee gebracht):

Liste2 -> Eigenschaften -> Daten -> Datensatzherkunft -> SELECT [Tabelle2].[id], [Tabelle2].[fk_t1], [Tabelle2].[bezeichnung] FROM Tabelle2 WHERE ((([Tabelle2].[fk_t1]. = Listenfeld1.id));

Es läuft. Bei Starten des Formulars wird aber gleich nach einem Parameter gefragt und das will ich ja eigentlich durch das Anklicken in der Liste1 realisieren. Ein weiteres Problem ist, wenn ich bei der Parametereingabe Abbrechen klicke, stürzt Access ab (Speicher sowieso kann nicht bla bla bla ...)

Ich denke ich hab's einfach noch nicht begriffen, vor allem das mit dem Verknüpfungsschlüssel. Kannst du mir das noch etwas genauer erklären, bin halt noch ein ziemliches ACCESS-DUMMY.

Vielen Dank
d-oli

Konstruktive Kritik zeichnet sich dadurch aus, dass sie höflich, nützlich und sachlich ist.
bei Antwort benachrichtigen
pco d-oli „Hallo pco Ich bringe es nicht zum laufen. Ich habe Folgendes Probiert: Liste1 -...“
Optionen

Wenn Du bei Steuerelementefeldinhalt im Kombinationsfeld stöberst muss die Tabelle dort stehen. Ansonsten auf "..." und die Tabelle über rechtsclick "Tabellen anzeigen..." rein holen. Dann die gewünschten Felder wählen.

bei Antwort benachrichtigen