PDA

Vollständige Version anzeigen : Kreuztabellenabfrage mit laufenden Monaten in den Spalten


M.Irmler
24.09.2003, 07:29
Hallo Forum,

folgendes Problem stellt sich mir in den Weg. Ich möchte eine Excel-Datei
so gut wie es geht in Access darstellen. Die Excel-Datei hat als Spalten die zwölf laufenden Monate. Deshalb mochte ich eine Kreuztabellenabfrage erstellen die mir auch die aktuellen zwölf Monate in den Spalten liefert, egal ob der Wert Null oder nicht in den Feldern ist. Sicherlich muß man noch ein Datum miteinbauen oder vielleicht geht es auch mit der Systemzeit. Zur Anschaulichkeit lege ich mal meinen SQL-Befehl mit bei, der lediglich die Monate in den Spalten anzeigt, die auch einen Wert haben:TRANSFORM Sum([Unit FCT Abfrage].[Units Book]) AS [Summe von Units Book]
SELECT [Unit FCT Abfrage].RSM, [Unit FCT Abfrage].AM, [Unit FCT Abfrage].Supplier, _
& [Unit FCT Abfrage].[Order Number], [Unit FCT Abfrage].Product, [Unit FCT Abfrage].APP, _
& [Unit FCT Abfrage].ASP, Sum([Unit FCT Abfrage].[Units Book]) AS [Gesamtsumme von Units Book]
FROM [Unit FCT Abfrage]
GROUP BY [Unit FCT Abfrage].RSM, [Unit FCT Abfrage].AM, _
& [Unit FCT Abfrage].Supplier, [Unit FCT Abfrage].[Order Number], [Unit FCT Abfrage].Product, _
& [Unit FCT Abfrage].APP, [Unit FCT Abfrage].ASP PIVOT [Unit FCT Abfrage].Monat1;


Gruß

Michael

Moderatorenanmerkung: Zeilenumbrüche eingefügt

jmc
24.09.2003, 07:44
Hi

eine Kreuztabellen-Abfrage gibt nicht mehr aus, als effektiv Daten vorhanden sind.
Du hast scheinbar eine Abfrage als Basis. Nun musst du dafür sorgen, dass hier alle Werte kommen.
Wenn ein Feld die Zahl 0/Null enthält, dann wird sie auch angezeigt, auch in der Kreuztabelle.
Die Frage ist nun, wie sieht diese Abfrage aus "Unit FCT Abfrage" aus ?

Bei dieser Gelegeneheit: es ist schlecht, wenn man Namen mit Leerstellen oder Sonderzeichen verwendet, schau dir dazu mal die FAQ 1.5 - Benamsungen (http://www.donkarl.com/FAQ/FAQ1Grundlagen.htm#1.5) an!

M.Irmler
24.09.2003, 07:53
Hallo,

ja das leuchtet mir auch ein. Die Krueztabellenabfrage soll aber die laufenden Monate als Spalten anzeigen auch wenn kein Wert vorhanden, damit man dann leichter auf Excell mit den Daten arbeiten kann. Hier meine ABfrage:SELECT [Unit FCT].[RSM], [Unit FCT].[AM], [Unit FCT].[Supplier], [Unit FCT].[Customer], [Unit FCT].[Order Number], [Unit FCT].[Product], [Unit FCT].[APP], [Unit FCT].[ASP], [Unit FCT].[Level], [Unit FCT].[Units Book], [Unit FCT].[Monat1], [Unit FCT].[Jahr1]
FROM [Unit FCT];


Gruß

Michael

Nouba
24.09.2003, 08:22
Hallo,

stelle die Eigenschaft fixierte Spalten in der Kreuztabelle entsprechend ein.

PS: Text in Code-Abschnitten sollte man mit Zeilenumbrüchen ausstatten, damit ihn andere auch lesen können.

hal_9000
24.09.2003, 08:32
Ich habe es hier mit einem Hilfseintrag gemacht, bei dem es jeden Monat gibt.
Danach habe ich die Crosstable genommen und den Wert wieder herausfiltern lassen.

M.Irmler
24.09.2003, 08:34
Hallo Nouba, und wie mache ich das (Fixierte Spaltenüberschriften)
damit immer die gerade aktuellen zwölf Monate angezeigt werden?
Könntest du mir da bitte einen Befehl zeigen?

Gruß

Michael

M.Irmler
24.09.2003, 08:38
Hallo Hal_9000,

was ist unter einem Hilfseintrag und unter einem Crosstable zu verstehen?
KAnnst du den Vorgang bitte etwas näher erläutern?

Gruß

Michael

Anne Berg
24.09.2003, 08:52
Hier (http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=103359) geht es um ein ähnliches Problem. Schau dir mal die letzte mdb an, da siehst du wie man's machen kann.

M.Irmler
24.09.2003, 09:04
Hallo Anne,

DAnke für die MDB. Leider habe ich auch hier das Problem, dass er mir heute nicht die luafenden Monate anzeigt, also von Sep.03 bis Aug. 04 und nicht von Jan bis Dez, da diese Werte fixiert in den SQL-BEfehl eingegeben werden.

Gruß

Michael

Nouba
24.09.2003, 09:12
Hallo,

Du must dafür sorgen, dass der Pivot-Ausdruck eine In-Bedingung (Liste mit den Überschriften) erhält. Diese wird für die Spalten verwendet. Bei wechselnden Spaltenüberschriften, mußt Du diesen Teil der Abfrage halt per VBA jedesmal erneuern. Schau mal in http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=79077. Du müßtest halt die Teile gegen Monate austauschen.

M.Irmler
24.09.2003, 09:51
HAllo Nouba,

heißt das, dass ich jedes Monat den Teil der Abfrage erneuern muß oder gibt es dazu eine Lösung in VBA, die mir dann die aktuellen zwölf Monate anzeigt und wenn, wie sieht der Code aus?

Gruß

Michael

PS. Welche DAtei meinst du auf der das Du müßtest halt die Teile gegen Monate austauschen. bezogen ist?

Nouba
24.09.2003, 10:05
Ja Michael, wenn sich da etwas verändert, mußt Du jedesmal die Kreuztabelle neu schreiben. Ich kenne keinen anderen Weg die Eigenschaft fixierte Spalten einer kreuztabellenabfrage im laufenden Programm zu beeinflußen, als die Kreuztabellenabfrage per VBA neu zu erstellen. Der Bericht holt sich die Daten aus einer Abfrage, die auf der kreuztabellenabfrage beruht, damit immer dieselben Feldbezeichner im Bericht verwendet werden können. Hast Du Dir mal das letzte Beispiel aus dem vorher genannten Beitrag angesehen - dort ist der vorher beschriebene Weg verfolgt.

M.Irmler
24.09.2003, 10:14
NA gut Nouba, wenn das wirklich so ist, dass sich die Kreuztabellenabfrage sich nicht automatisch ändert, dann muß ich damit leben;vielen Dank dafür.
Aber das Beispiel hätte ich mir doch ganz gerne genauer angesehen. DAs letzte Beispiel auf der besagten Seite gibt es leider nicht mehr.DA bibt es aber noch "bsp","FormCrossTab", und "variablespalten". Welches meinst du denn?

Gruß

Michael

Nouba
24.09.2003, 11:03
Hallo Michael,

ich meine z.B. testdb2.zip (http://www.ms-office-forum.net/forum/attachment.php?s=&postid=420846)

HTH Nouba

hal_9000
24.09.2003, 12:23
Hier eine Kleine DB die den Query enthält.