Forums Neueste Beiträge
 

Kombinationsfeld Unionsabfrage (A02 WinXP)

08/04/2008 - 12:41 von Dietmar Thesing | Report spam
Hallo liebe Access-FreundInnen,

in einem Kombinationsfeld habe ich als Abfrage eine Unionsabfrage
hinterlegt, die auf drei Tabellen basiert (aufgelöste n:m-Beziehung).

Gebundene Spalte ist die erste (Z), Spaltenbreite 0cm.
Steuerelementinhalt ist leer (das Formular hat keine Datenquelle).

Sinn der Sache ist, dem User bei der Auswahl eben nicht nur von mir
benutzten Begriffe zu zeigen, sondern auch alternative Begriffe, die
er vielleicht eher eingeben würde. Deshalb eine weitere Tabelle mit
den Synonymen und eine Verbindungstabelle.

Sichtbares Ergebnis der Abfrage (SQL siehe unten) zum Beispiel bei der
Suche nach Kartoffeln (Eingabe "Erd"):

Z Zutat Auswahl
49 Erdàpfel Kartoffeln
520 Erdàpfel Pellkartoffeln (gekocht)
447 Erdàpfel Kartoffeln (gekocht)

Zutat 49 gibt es im Abfrageergebnis auch noch so (aus tblZ, der
eigentlichen Zutatentabelle):
49 Kartoffeln

Das logischerweise entstehende Problem ist nun, dass sowohl bei der
Auswahl 49-Erdàpfel als auch bei der Auswahl 447-Erdàpfel im Feld
hinterher der Ausdruck "Erdàpfel" zu sehen ist. Erdàpfel kommen ja im
Alfabet vor den Kartoffeln und das Kombinationsfeld zeigt bei Auswahl
von 49 einfach
den ersten Wert an.

Mir fàllt einfach keine Strategie ein, aufklappende Auswahl (die ist
ja so gewollt) und Anzeige der gewàhlten Zutat zu trennen. Ich hoffe
darauf, dass Ihr ein paar Ideen habt.
Vielen Dank für Eure Hilfe.

Grüße aus Marl
Dietmar

Die Datenquelle für das Kombinationsfeld:

SELECT
tblZ.Z, tblZ.txtZutat AS Zutat, "" AS Auswahl
FROM tblZ
UNION
SELECT
tblZ.Z, tblSynonyme.txtSynonym AS Zutat, tblZ.txtZutat AS Auswahl
FROM tblZ
INNER JOIN
(
tblSynonyme
INNER JOIN
tblZutVerbSyn
ON
tblSynonyme.SYID = tblZutVerbSyn.SYID
)
ON
tblZ.Z = tblZutVerbSyn.Z
ORDER BY Zutat;
 

Lesen sie die antworten

#1 Dietmar Thesing
08/04/2008 - 18:08 | Warnen spam
Hallo Dietmar und ...

"Dietmar Thesing" schrieb im Newsbeitrag
news:
Hallo liebe Access-FreundInnen,

in einem Kombinationsfeld habe ich als Abfrage eine Unionsabfrage
hinterlegt, die auf drei Tabellen basiert (aufgelöste
n:m-Beziehung).

Gebundene Spalte ist die erste (Z), Spaltenbreite 0cm.
Steuerelementinhalt ist leer (das Formular hat keine Datenquelle).

Sinn der Sache ist, dem User bei der Auswahl eben nicht nur von mir
benutzten Begriffe zu zeigen, sondern auch alternative Begriffe, die
er vielleicht eher eingeben würde. Deshalb eine weitere Tabelle mit
den Synonymen und eine Verbindungstabelle.

Sichtbares Ergebnis der Abfrage (SQL siehe unten) zum Beispiel bei
der
Suche nach Kartoffeln (Eingabe "Erd"):

Z Zutat Auswahl
49 Erdàpfel Kartoffeln
520 Erdàpfel Pellkartoffeln (gekocht)
447 Erdàpfel Kartoffeln (gekocht)

Zutat 49 gibt es im Abfrageergebnis auch noch so (aus tblZ, der
eigentlichen Zutatentabelle):
49 Kartoffeln

Das logischerweise entstehende Problem ist nun, dass sowohl bei der
Auswahl 49-Erdàpfel als auch bei der Auswahl 447-Erdàpfel im Feld
hinterher der Ausdruck "Erdàpfel" zu sehen ist. Erdàpfel kommen ja
im
Alfabet vor den Kartoffeln und das Kombinationsfeld zeigt bei
Auswahl
von 49 einfach
den ersten Wert an.

Mir fàllt einfach keine Strategie ein, aufklappende Auswahl (die ist
ja so gewollt) und Anzeige der gewàhlten Zutat zu trennen. Ich hoffe
darauf, dass Ihr ein paar Ideen habt.



Scheint noch nicht so zu sein, ich vermute weil es keine andere Lösung
als die (in dieser Gruppe schon mal erwàhnte) mit dem darüber gelegten
Textfeld zur Anzeige gibt. War mir eigentlich zu aufwàndig, weil es
nicht nur eins ist

Das zunàchst unsichtbare Textfeld bekommt jetzt also
den Steuerelementinhalt der Spalte 3:
=[cmbZAuswA1].[Column](2)

und die dritte, teilweise leere Spalte wird jetzt gefüllt (siehe
unten)

und das Ereignis:
Private Sub tbAuswA1_GotFocus()
Me!cmbZAuswA1.SetFocus
Me!tbAuswA1.Visible = False
End Sub

Das Kombi bekommt das Ereignis:
Private Sub cmbZAuswA1_LostFocus()
Me!tbAuswA1.Visible = True
End Sub

Die Datenquelle für das Kombinationsfeld:

SELECT
tblZ.Z, tblZ.txtZutat AS Zutat, "" AS Auswahl


^^
aus dieser Zeile wird:
tblZ.Z, txtZutat AS Zutat, txtZutat As Auswahl
^^^^^^
FROM tblZ
UNION
SELECT
tblZ.Z, tblSynonyme.txtSynonym AS Zutat, tblZ.txtZutat AS Auswahl
FROM tblZ
INNER JOIN
(
tblSynonyme
INNER JOIN
tblZutVerbSyn
ON
tblSynonyme.SYID = tblZutVerbSyn.SYID
)
ON
tblZ.Z = tblZutVerbSyn.Z
ORDER BY Zutat;



Gruß
Ingrid

Ähnliche fragen