Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

kreuztabelle - parameter...





Frage

Dass ich, um Werte eingeben zu können die Parameter definieren muss habe ich rausgefunden. PARAMETERS [Kunde] Short; TRANSFORM Sum(abrechnung.erlöse) AS Summevonerlöse SELECT abrechnung.id_kunde, Sum(abrechnung.erlöse) AS [Gesamtsumme von erlöse] FROM abrechnung WHERE (((abrechnung.id_kunde)=[Kunde]) AND ((abrechnung.zeitraum) Like '*2004')) GROUP BY abrechnung.id_kunde PIVOT "Qrtl " & Format([zeitraum],"q"); Problem jetzt - will ich alle Kunden z.B. mit * dann meckert er, weil der Wert für das Feld nicht zulässig ist, was auch sinnMacht. Bekomme ich das Trotzdem hin? - selbes Problem für das Datum. Ich möchte die Abfrage nicht auf 2004 fixieren (wie jetzt) aber wenn ich den Parameter als Datum setzte kann ich wieder kein *2004 eingeben. -> will nicht für jedes Jahr eine extra tabelle erstellen Vielen Dank schon mal...

Antwort 1 von El Bobbele

Moin!

Die Filterung mit * funktioniert nur bei Parametern mit Text-Datentypen. Ändere [Kunde] von Short auf Text und verwende in der Bedingung den Like-Operator.

Ist der Datentyp von [Zeitraum] Datum/Uhrzeit? Dann entnimm dem Feld [Zeitraum] nur das Jahr und vergleiche es mit dem zweiten Parameter.

PARAMETERS [Kunde] Text (255), [FilterJahr] Long;
TRANSFORM Sum(abrechnung.erlöse) AS Summevonerlöse
SELECT abrechnung.id_kunde, Sum(abrechnung.erlöse) AS [Gesamtsumme von erlöse]
FROM abrechnung
WHERE (((abrechnung.id_kunde) Like [Kunde]) AND ((Year(abrechnung.zeitraum)) = [Zeitraum])
GROUP BY abrechnung.id_kunde
PIVOT "Qrtl " & Format([zeitraum],"q");


Gruss
El Bobbele

Antwort 2 von ich&du

Danke für die Hilfe - hat auch fasst geklappt. ein paar Sachen habe ich noch geändert, aber der Weg war gegeben


PARAMETERS [Kunde]Text (255), [Zeitraum] Long;
TRANSFORM Sum(abrechnung.erlöse) AS Summevonerlöse
SELECT abrechnung.id_kunde, Sum(abrechnung.erlöse) AS [Gesamtsumme von erlöse]
FROM abrechnung
WHERE (((abrechnung.id_kunde) Like [Kunde]) AND ((Year(abrechnung.zeitraum)) = [Zeitraum]))
GROUP BY abrechnung.id_kunde
PIVOT "Qrtl " & Format([abrechnung]![zeitraum],"q");




Antwort 3 von El Bobbele

Hallo!

Freut mich, dass es jetzt funktioniert! Der unbeabsichtigte Mix aus FilterJahr und Zeitraum war Sch*lamperei meinerseits, ich bitte um Nachsicht. :-)

Gruss
El Bobbele