Kann man in einem Formular die Spaltenüberschrift einer Kreuztabelle irgendwie auswerten? Beispiel:
Körnerbrötchen Dinkelbrötchen
Dienstag 10 20
in einer tbl_Produkte sind die Sorten
ID Sorte
1 Körnerbrötchen
2 Dinkelbrötchen
In einer tbl_Käufe stelle ich die tatsächlichen Käufe dar:
Tag Produkt_ID Kunde Anzahl
Montag 2 Meister Eder 3
Dienstag 2 Meister Eder 10
Dienstag 1 Frau Elster 10
Dienstag 2 Herr Fuchs 10
Die Kreuztabelle ist so aufgebaut:
TRANSFORM Sum(tbl_Käufe.Anzahl) AS SummevonAnzahl
SELECT tbl_Käufe.Tag
FROM tbl_Käufe INNER JOIN tbl_Produkte ON tbl_Käufe.ProduktID = tbl_Produkte.ID_Produkte
GROUP BY tbl_Käufe.Tag
PIVOT tbl_Produkte.Sorte;
Ich lege dann ein EndlosFormular über die Kreuztabelle. Der Wertbereich soll klickbar sein.
Bei einem Klick auf die 20 der Kreuztabelle möchte ich, dass mir in einem neuen Formular alle dafür relevanten Käufe angezeigt werden.
Also
Tag Kunde Anzahl
Dienstag Meister Eder 10
Dienstag Herr Fuchs 10
Leider kann ich aber nur die Felder der Zeile auswerten, nicht aber die Spaltenüberschrift. Also bei Klick auf die 20 kann ich me.Tag auswerten, nicht aber me.Sorte.
Die Sorte ist im Formular auch nur ein Bezeichnungsfeld. Diesem ist kein Steuerelement zugeordnet.
Wie könnte ein Lösungsansatz aussehen?
Hi,
ZitatDie Sorte ist im Formular auch nur ein Bezeichnungsfeld. Diesem ist kein Steuerelement zugeordnet.
du könntest aber - bei entsprechender Benennung - den Namen des Bezeichnungsfeldes aus dem Namen des Textfeldes herleiten und darüber die Beschriftung auslesen.
Dann bitte hilf mir wie das gehen soll bzw. was das bringt?
Der Klick auf die o.g. beispielhafte 20 lässt mich dennoch nur die Zeile auslesen. Ich müsste dann noch irgendwie wissen, in welcher Spalte die 20 steht.
Oder?
Wenn du die Bezeichnungsfelder der Spaltenüberschriften bspw. mit bez1, bez2, bez3 usw. benennst und die zugehörigen Textfelder mit txt1, txt2, txt3 usw., dann kannst du aus dem Namen des ActiveControl den Namen des zugehörigen Bezeichnungsfeldes herleiten und dessen Beschriftung auslesen.
ah ok... also ich gebe dem Feld in dem die 20 steht einen Namen welcher angelehnt an die Spaltenüberschrift ist... ok verstanden... kein Problem
Wie ermittel ich jetzt aber das Feld, in welches ich gerade meinen Mauszeiger drücke? Das habe ich nämlich noch nicht gebraucht und weiß es daher nicht.
Und wenn ich das dann ermittelt habe, wie verwende ich dann den Feldnamen z.B. als Variable um daraus wiederum z.B. einen Filteraufzubauen?
Also angenommen die Spalte heißt Dinkelbrötchen, dann benenne ich das entsprechende Textfeld der Wertanzeige z.B. in txt_Dinkelbrötchen um. Wenn ich jetzt das Textfeld anklicke muss der Name txt_Dinkelbrötchen in eine Variable z.B. v übergehen. Wie geht das?
Mal ins blaue geschossen: v = me.activecontrol.name ?
ZitatAlso angenommen die Spalte heißt Dinkelbrötchen, dann benenne ich das entsprechende Textfeld der Wertanzeige z.B. in txt_Dinkelbrötchen um.
Nein, denn du kannst ja nicht sicher sein, dass an der Stelle immer die Dinkelbrötchen kommen. Mach es so wie vorgeschlagen und nummeriere die Feldnamen durch.
Dann kommst du folgendermaßen vom Textfeld zum Spalteninhalt:
Din n As Integer, strSpalte As String
n = Mid(Screen.ActiveControl.Name,4)
strSpalte = Me("bez" & n).Caption
Besten Dank. Ich habe es so ähnlich gelöst bekommen. Meine Textfelder heißen einfach nur "1" oder "2" entsprechend der Spaltenüberschriften. Somit reichte dann v = Me.ActiveControl.Name aus, um mein Ziel zu erreichen.
Besten Dank für Deine Hilfe MaggieMay. :)