Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Dynamischen Bericht erstellen

Begonnen von X-ess, September 25, 2017, 15:46:17

⏪ vorheriges - nächstes ⏩

Beaker s.a.

Hallo Jagger,
Sorry, da fehlt die Angabe des aggregierten Feldes
PIVOT qry_Kalender_Wochenübersicht_mt_Kollektionen_01.tAGKDNR IN (SELECT DISTINCT [Kollkürzel] FROM tab_ex_Lieferanten)
So ganz nebenbei, lesbarer wird es durch die Verwendung
von Alias-Namen für Tabellen/Abfragen.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

jagger

Hallo Ekkehard,

erst einmal Danke!
Jetzt meckert Access nicht mehr, aber jetzt erhalte ich als Spaltenname:
"SELECT [Kollkürzel] FROM tab_ex_Lieferanten"
PARAMETERS [Formulare]![frm_Kalender]![WJ] Text ( 255 ), [Formulare]![frm_Kalender]![tfldDatum] Text ( 255 );
TRANSFORM Count(qry_Kalender_Wochenübersicht_mit_Kollektionen_01.tAGKDNR) AS AnzahlvontAGKDNR
SELECT IIf([Stunden]="iLdT","iLdT",[Stunden] & ":00") AS h
FROM tab_int_Stunden_Kalender LEFT JOIN qry_Kalender_Wochenübersicht_mit_Kollektionen_01 ON tab_int_Stunden_Kalender.Stunden = qry_Kalender_Wochenübersicht_mit_Kollektionen_01.Stundenkey
GROUP BY tab_int_Stunden_Kalender.Sortierung, IIf([Stunden]="iLdT","iLdT",[Stunden] & ":00")
ORDER BY tab_int_Stunden_Kalender.Sortierung
PIVOT qry_Kalender_Wochenübersicht_mit_Kollektionen_01.tAGKDNR IN (SELECT [Kollkürzel] FROM tab_ex_Lieferanten);


Was mache ich hier falsch?
LG
jagger

Lachtaube

AFAIK kann in einer IN-Klausel einer Pivot-Anweisung keine Abfrage verwendet werden.
Grüße von der (⌒▽⌒)

jagger

Zitat von: Lachtaube am Dezember 11, 2017, 16:29:43
AFAIK kann in einer IN-Klausel einer Pivot-Anweisung keine Abfrage verwendet werden.

...das wäre ja nicht schön.  :o

Beaker s.a.

O.K., hab's nicht getestet; dachte jedoch das schon mal verwendet zu
haben. Wahrscheinlich irgendwas verwechselt.  :-[
Dann eben doch mit einer Function (Luftcode)
Public Function GetKollKuerzel() As String
    Dim sResult As String
    Dim rs as DAO.Recordset

    Set rs = CurrentDb.OpenRecordset _
                         "SELECT DISTINCT[Kollkürzel] " _
                      & "FROM tab_ex_Lieferanten"
    With rs
        Do While Not .EOF
            sResult = sResult & """" & .[Kollkürzel] & ""","
            .MoveNext
        Loop
    End With

    'letztes Komma abschneiden
    sResult = Mid(sResult,1,Len(sResult)-1)
    GetKollKuerzel = sResult

rs.Close
Set rs = Nothing

End Function

In der Abfrage dann
PIVOT qry_Kalender_Wochenübersicht_mit_Kollektionen_01.tAGKDNR IN (GetKollKuerzel())
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

jagger

#35
Zitat von: Beaker s.a. am Dezember 11, 2017, 17:41:04
"...    Set rs = CurrentDb.OpenRecordset _
                         "SELECT DISTINCT[Kollkürzel] " _
                      & "FROM tab_ex_Lieferanten"
   ..."
da fehlt ein &?
"...    Set rs = CurrentDb.OpenRecordset _
                      & "SELECT DISTINCT[Kollkürzel] " _
                      & "FROM tab_ex_Lieferanten"
   ..."

Wenn ich die Abfrage aufrufe bekomme ich die Fehlermeldung
"Fehlendes Element, ) oder ] in Abfrageausdruck 'qry_Kalender_Wochenübersicht_mit Kollektionen_01.tAGKDNR IN (GetKollKuerzel()'."
PARAMETERS [Formulare]![frm_Kalender]![WJ] Text ( 255 );
SELECT [qry_Kalender_Stunden_aus_Termine].[tDate], [qry_Kalender_Stunden_aus_Termine].[Stundenkey], [qry_Kalender_Stunden_aus_Termine].[tAGKDNR], tab_ex_Lieferanten.Kollkürzel, tab_ex_Lieferanten.Sortierung
FROM tab_ex_Lieferanten LEFT JOIN qry_Kalender_Stunden_aus_Termine ON tab_ex_Lieferanten.code = qry_Kalender_Stunden_aus_Termine.tKollektionsCode
WHERE (((tab_ex_Lieferanten.[anzeigen Kalender])=True))
ORDER BY tab_ex_Lieferanten.Sortierung;

... Wo könnte hier noch eine ) oder ] fehlen?

Danke!
LG
jagger

Lachtaube

Die Funktion wird AFAIK in der Pivot-Anweisung auch nicht funktionieren. Man kann allerhöchstens den Sermon aus der Funktion in den Abfragetext schreiben, was ich als unschön empfinde, aber machbar ist.

So, und nun beschreibe bitte einmal genau, wie die Abfrage aussehen soll (und am besten einige Beispiel-Datensätze in Textform mitliefern, damit man sich die Daten nicht aus den Fingern saugen muss).
Grüße von der (⌒▽⌒)

jagger

Hallo Lachtaube,

erst einmal vielen Dank im Voraus für die angebotene Hilfe.
Die Datenbank und auch der Kalender ist für Modeagenturen, die mit Kunden/Einzelhändlern Termine vereinbaren.

Der Kalender (frm_Kalender) zeigt auf der linken Seite wie viele Termine
am jeweiligen Tag (vom 20. bis 26.11.17 gibt es Fake Termine) in der jeweiligen Stunde vergeben sind (iLdT = im Laufe des Tages). So hat man beim weiteren Terminieren schnell einen Überblick, wo noch Platz für einen weiteren Termin ist. Klickt man in eine Spalte, so werden auf der rechten Seite die dazugehörigen Kunden angezeigt. (Kalender01.jpg)

Manche meiner Kollegen möchten allerdings auch noch sehen,
für welche Kollektionen schon Termine vergeben sind.
dazu wollte ich das Formular(frm_Kalender_Uebersicht_Tag_Kollektionen) verwenden. (Kalender02.jpg)

Im Kopbereich über den Spalten kann man jeweils auswählen welche Kollektion (Kollkürzel) angezeigt werden soll. Da ja nun jede Modeagentur andere Kollektionen hat muss diese Sache dynamisch sein.
Mehr als 7 oder 8 Kollektionen/Spalten werden nicht benötigt.
Im LieferantenSetup (hier nicht in der Beispieldatenbank) kann man seine Kollektionen festlegen (Name, Kollkürzel und für jede Kollektion mit dem Colorpicker eine Farbe). Deswegen hier auch der Einsatz eines Formulars (Formatierung).
Wenn man auf der linken Seite in eine Spalte klickt, soll rechts der dazugehörige Tag angezeigt werden (Ist hier noch nicht synchronisiert).
Leider legt Access hier eben eine Hürde in den Weg.
Das Formulau funktioniert und kommt auch ohne fixierte Spaltennamen aus. Nur eben leider nicht, wenn man es als Ufo einbindet.

Ich hoffe, man kann nachvollziehen, was ich erreichen will und wie die Abfrage bzw. deren Ergebis aussehen soll.
So jetzt muss ich nur noch die Beispieldatenbank auf unter 1000KB schrumpfen. Ich melde mich dann später noch einmal.

Mit unheimlich netten Grüßen
jagger

Beaker s.a.

Hallo Jagger,
Zitatda fehlt ein &?
Nö, das ist ja der Anfang des Strings.
ZitatWenn ich die Abfrage aufrufe bekomme ich die Fehlermeldung
"Fehlendes Element
Vergleiche (zähle die Klammern)

PIVOT qry_Kalender_Wochenübersicht_mit_Kollektionen_01.tAGKDNR IN (GetKollKuerzel())

mit
Zitat'qry_Kalender_Wochenübersicht_mit Kollektionen_01.tAGKDNR IN (GetKollKuerzel()'

@Lachtaube
ZitatDie Funktion wird AFAIK in der Pivot-Anweisung auch nicht funktionieren.
Nun gut, getestet habe ich es nicht. Zum Einen weil keine DB vorliegt,
die die relevanten Tabellen/Abfragen enthält (oder hab ich die übersehen),
und zum Anderen war ich zu faul ein eigenes Beispiel zu basteln  :-[.
Falls das so ist wie du sagst, muss ich hier dann aussteigen.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

jagger

Hallo Ekkehard,

ZitatNö, das ist ja der Anfang des Strings.
Wenn ich Deinen Code so reinkopiere (also ohne &) wird der Bereich rot angezeigt.
ZitatVergleiche (zähle die Klammern)
Im Programm hatte ich das schon richtig eingetragen.

Aber trotzdem, vielen Dank für Deine Bemühungen.

LG
jagger

jagger

...oh, ich sehe gerade, man kann hier gar keine zip.dateien anhängen.  :(

Lachtaube

Natürlich lassen sich hier hier im Forum auch Zip-Archive hochladen.
Grüße von der (⌒▽⌒)

jagger

OMG,
Wald, Bäume,...

also hier das Zip-Archiv. In der Kalender_Extr.mdb (Acc.2003)
sind alle Tabellen, Abfragen,... , die mit dem Kalender zu tun haben.
Mit frm_Kalender geht es los. Dann zum Datum 20.11. bis 26.11.17 navigieren.

Vielleicht gibt es ja eine Lösung für das Problem. Die Frage taucht ja oft auf.

LG
jagger

Lachtaube

Hi Jagger,

oweia, oweia!!! :-[

Die Tabellen gehören dringend in eine gute Normalisierungswerkstatt.

Ansonsten lässt sich das Beispiel auch nicht wie angesagt starten, weil Formularbezüge aus den Abfragen fehlen. :(
Grüße von der (⌒▽⌒)

Beaker s.a.

ZitatWenn ich Deinen Code so reinkopiere (also ohne &) wird der Bereich rot angezeigt.
Sorry, da fehlt ein Leerzeichen hinter DISTINCT.
Wenn da Luftcode drübersteht sollte man den Code auch schon mal selber
auf solche Fehler überprüfen (können).
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)