Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: datekk am September 23, 2015, 11:17:34

Titel: Spaltenüberschrift einer Kreuztabelle in einem Formular behandeln
Beitrag von: datekk am September 23, 2015, 11:17:34
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?
Titel: Re: Spaltenüberschrift einer Kreuztabelle in einem Formular behandeln
Beitrag von: MaggieMay am September 23, 2015, 12:56:44
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.
Titel: Re: Spaltenüberschrift einer Kreuztabelle in einem Formular behandeln
Beitrag von: datekk am September 23, 2015, 13:47:57
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?
Titel: Re: Spaltenüberschrift einer Kreuztabelle in einem Formular behandeln
Beitrag von: MaggieMay am September 23, 2015, 13:55:54
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.
Titel: Re: Spaltenüberschrift einer Kreuztabelle in einem Formular behandeln
Beitrag von: datekk am September 23, 2015, 14:33:12
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 ?


Titel: Re: Spaltenüberschrift einer Kreuztabelle in einem Formular behandeln
Beitrag von: MaggieMay am September 23, 2015, 14:44:39
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
Titel: Re: Spaltenüberschrift einer Kreuztabelle in einem Formular behandeln
Beitrag von: datekk am September 24, 2015, 09:29:00
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. :)