PDA

Vollständige Version anzeigen : Combo-Box im UF/Registersteuerelement filtern über zwei Werte im HF


Raglan
23.03.2004, 08:49
Hi,

ich habe ein Problem mit dem Filtern einer Combo-Box.

Anbei findet Ihr die Beispiel DB.

Die Combo-Box im Reiter "Unterlagen" enthält zur Zeit alle Werte der Tabelle tblUnterlagen
Ich möchte aber, dass in der Box nur die Werte zur Auswahl stehen, entsprechend der
ID_Zugang und ID_Studiengang auf dem Reiter "Student".

Ich hoffe das war verständlich und Ihr könnt mir helfen.

Ich weis das die Tabelle tblUnterlagen sicherlich nicht optimal ist, aber ich weis nicht wie ich sie sonst gestallten könnte.
Es gibt halt Unterlagen die gehören zu jedem Zugang und welche die nur zu einem bestimmten Zugang gehören.

Habt Ihr eine Lösung?


Grüße Raglan

reinir
23.03.2004, 09:10
wenn Du die Datenherkunft Deiner Kombobox auf eine SQL Abfrage stellst, vorher die notwendingen Beziehungen zwischen Deinen Tabellen setzt, dann in der SQL Abfrage der Kombobox, die Kriterien für ID_Zugang und ID_Studiengang richtig setzt, fkt. es so wie Du wolltest...

Raglan
23.03.2004, 12:03
Hi reinir,

danke für Deine Antwort und Mühe!
Das Ergebnis entspricht aber nicht meinen Vorstellungen, zumal in Deiner geänderten DB für beide Studenten die Unterlagen aus Studiengang 2 in der Combo-Box angeboten werden, obwohl der Student 9999999 Studiengang 1 ist.

Auf Basis der angehängten DB sollte das Ergebnis wie folgt aussehen:

Daten Student 9000001:
Zugang 1
Studiengang 2

Auswahl in der Combo-Box für Student 9000001 sollte dann sein (aus tblUnterlagen):

"Passfoto Studiengang 2"

..., wenn bei diesem Studenten Zugang 2 gewählt würde müsste das Ergebnis wie folgt sein:

"Passfoto Studiengang 2" und "Berufsausbildung 2"

Das gleiche gilt für den Studenten 9999999 (Studiengang 1, Zugang 3).
Auswahl in Box sollte dann sein:

Passfoto Studiengang 1 und Bewerbungsschreiben 1

In der beigefügten, geänderten DB habe ich jetzt auch die Tabellen so verknüpft, wie sie in der Originalen verknüpft sind.

Fragt sich jetzt, ob ich die tblStudiengang auch mit der tblStudent verknüpfen kann/muss?

Grüße Raglan

reinir
23.03.2004, 12:36
nimm die Datenherkunft der Kombobox im Unterformular weg

und füge im Hauptformular (bei Deinem Reg. Steuerelement) folgenden Code ein:

Private Sub RegisterStr0_Change()

Select Case Me.RegisterStr0.Pages.Item(Me.RegisterStr0.Value).Name
Case "ctlUnterlagen"
Dim sSql As String
sSql = "SELECT tblUnterlagen.ID_Unterlagen, tblUnterlagen.Unterlage " & _
"FROM (tblStudent INNER JOIN tblStudiengang ON tblStudent.ID_Studiengang " & _
"= tblStudiengang.ID_Studiengang) INNER JOIN tblUnterlagen ON " & _
"tblStudiengang.ID_Studiengang = tblUnterlagen.ID_Studiengang " & _
"WHERE (((tblUnterlagen.Zugang_"

sSql = sSql + Right$(Str(Me!ID_Zugang), 1)

sSql = sSql + ")=True) AND ((tblStudent.ID_Zugang)=" & _
"[Formulare]![frmStudentenverwaltung]![ID_Zugang]) AND " & _
"((tblStudent.ID_Studiengang)=[Formulare]![frmStudentenverwaltung]![ID_Studiengang]));"

Me.frmUnterlagendetails_U!cboID_Unterlagen.RowSource = sSql
End Select
End Sub<hr>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

was mir bei dem Code noch nicht gefällt, ist die right$ Geschichte
mal schauen, ob ich da noch was besseres finde....

Raglan
23.03.2004, 13:13
Hi reinir,

Habe ich gemacht. Bin mir auch sicher, dass ich die sub richtig eingesetzt habe.

Sub läuft durch, geht auch ins Case, aber die Box bleibt leer.

Kannst Du mir eine funktionierende DB anhängen?

Grüße Raglan

reinir
23.03.2004, 13:27
bitte sehr...

Raglan
24.03.2004, 08:51
Hallo reinir,

herzlichen Dank! Ich habe es jetzt hinbekommen. Funktioniert echt gut.
Der einzige Wermutstropfen ist allerdings, das Ereignis bei dem die Box gefiltert wird.

Ich muss ja davon ausgehen, dass der Anwender auf dem Reiter Unterlagen bleibt und unten über die Navigationsschaltflächen weiterblättert.
Dann wird das Ereignis ja nicht ausgeführt.

Ich versuche gerade Deine Sub an ein anderes Ereigins zu binden. Bisher ohne Erfolg. Ich denke aber das ich das noch hinbekomme.

Danke noch mal!

Raglan