PDA

Vollständige Version anzeigen : Hilfe - Leere Spalten in Abfrage anzeigen


Stefan77
06.01.2002, 17:43
Hallo,

vielleicht kann mir jemand weiterhelfen:
Ich habe eine Kreuztab-Abfrage, die verschiedene Stunden nach Namen und Monate auflistet. Die Abfrage greift auf 3 Tabellen zu: Mitarbeiter, Unproduktive Stunden, Monate.
In der Tab Monate gibt es nur eine Spalte, in der verschiedene Datumswerte stehen (immer der 1. eines Monats). Die Fkt. Jahreszahl() gibt eine bestimmte Jahreszahl zurück.

TRANSFORM Sum([Unproduktive Stunden].Stunden) AS [Summe von Stunden]
SELECT Mitarbeiter.Nachname, Sum([Unproduktive Stunden].Stunden) AS Gesamtsumme
FROM Monate LEFT JOIN (Mitarbeiter RIGHT JOIN [Unproduktive Stunden] ON Mitarbeiter.PNr = [Unproduktive Stunden].PNr) ON Monate.Monat = [Unproduktive Stunden].Monat
WHERE ((([Unproduktive Stunden].Kostenstelle) Like Abteilung() Or ([Unproduktive Stunden].Kostenstelle) Is Null) AND ((Year([Unproduktive Stunden].[Monat]))=Jahreszahl() Or (Year([Unproduktive Stunden].[Monat])) Is Null))
GROUP BY Mitarbeiter.Nachname
ORDER BY IIf(Jahreszahl()=Year([Monate].[Monat]),Month([Monate].[Monat]))
PIVOT IIf(Jahreszahl()=Year([Monate].[Monat]),Month([Monate].[Monat]));

Die Abfrage muß auf jedenfall als Spalten alle 12 Monate des jeweiligen Jahres mit den Stunden anzeigen. Spalten, bei denen keine Stunden angefallen sind, sollen leer bleiben. Wenn in Monaten zwischendurch keine Werte vorhanden sind, dann wird die Spalte aber nicht angezeigt. Z. B. sind Stunden für die Monate 1, 2, 4, und 5 in der jeweiligen Kostenstelle vorhanden. In der Abfrage werden dann die Spalten 1,2 und 4 - 12 angezeigt, jedoch nicht die Spalte "3". Die Spalten 6-12 werden angezeigt, obwohl auch keine Werte vorhanden sind.

Gibt es eine Lösung? Der Bericht greift auf jedenfall auf die Spalte 3 zu und wenn die (zwischendrinn) nicht vorhanden ist, gibt es eine Fehlermeldung.

Danke im voraus.

Mattes
06.01.2002, 18:27
Hi Stefan,

wenn Du im Abfrageentwurf auf die Linien zwischen den Tabellen doppelklickst, erhälst Du ein Menü, in dem Du das Verhalten der Abfrage bei leeren Datensätzen in einer der beteiligten Tabellen einstellen kannst. ( Stichwort: Linksinklusion und Rechtsinklusion ) Sie Dir das mal an, vielleicht bringt Dich das weiter.

Stefan77
07.01.2002, 17:45
Diese Einstellung kenn ich. Ich habe die Verknüpfung so eingestellt, dass alle Datensätze aus der Tabelle "Monate" angezeigt werden sollen. Aber dies ist leider nicht der Fall, wie oben beschrieben.

Scorefun
08.01.2002, 21:46
Hi Stefan,

wenn ich Deinen Code richtig interpretiere, hast Du zwei Filterbedingungen auf Tabellenfelder, die sich auf der RIGHT JOIN-Seite befinden
(Unproduktive Stunden)
Somit werden leere Felder nicht mehr angezeigt, da
die Filterbedingung nicht erfüllt wird

Meiner Meinung nach mußt Du eine Abfrage vor der Kreuztabellenabfrage vorschalten mit den beiden Tabellen
"Unproduktive Stunden" und "Mitarbeiter", und dort die Filterung vornehmen.
Anschließend diese Abfrage in die Kreuztabellenabfrage übernehmen.
Dann sollte es funktionieren
(Das Problem hatte ein Kollege letztenes auch...)