Access-o-Mania

Access-Forum (Deutsch/German) => Access-Hilfe => Thema gestartet von: Nafets1972 am August 12, 2016, 18:42:08

Titel: MS Query Abfrage aus Excel
Beitrag von: Nafets1972 am August 12, 2016, 18:42:08
Hallo an alle,

ich hoffe ihr könnt mir weiter helfen.

Ich hab 2 Tabellen in Access (hier auf das wesentliche Gekürzt)

Objekte






...ID-ObjektID-PosName...
11Haus 26 WE 1
12Haus 26 WE 2
13Haus 26 WE 3
21Mühlengasse 2

und Kosten hier nur ein kleiner Teil








...ID-ObjektID-PosKostenstelleBetrag...
1110008,22
11120024,20
11204011,28
12200015,85
1222003,12
12120055,50

Nun suche ich nach einer Abfrage aus Excel mit MS Query an Access (die Datenbank ist im Hintergrund einer Verwaltungssoftware, für die Jahresabrechnung tippe ich immer die Daten in eine Excel-Tabelle ich dachte das ginge einfacher wenn ich sie direct Abfrage)

Die mir in Abhängigkeit von ID-Objekt alle Datensätze mit zusammengerechneten Kostenstellen zurückgibt.

wenn ich nach ID-Objekt = 1 Suche benötige ich als Rückgabe






ID-PosNameWasserStromGasTelefon
1Haus 26 WE 115,2068,5505,87
2Haus 26 WE 214,2252,1237,2015,22
3Haus 26 WE 30000

Aus der Tabelle Objekte beziehe ich alle ID-Pos und den Namen des gesuchten ID-Objekt
aus Tabelle Kosten benötige ich
für Wasser die Summe aus Betrage mit der Kostenstelle (1000;1100;1200;...)
für Strom die Summe aus Betrage mit der Kostenstelle (2000;2100;...)
für Gas die Summe aus Betrage mit der Kostenstelle (3000;3030;...)
für Telefon die Summe aus Betrage mit der Kostenstelle (4000;...)

In Tabelle Objekte gibt es jede Wohnung nur 1 mal

In Tabelle Kosten kann es für jede Wohnung keinen Eintrag oder nur einen Eintrag (unvermietet eine Reparatur am Strom) oder viele Einträge (Vermietet) geben es sollen aber alle Wohnungen auch mit den Kosten 0 angezeigt werden


Ich hoffe ihr konntet meinen Angaben Folgen !

Danke Stefan

 

Titel: Re: MS Query Abfrage aus Excel
Beitrag von: Lachtaube am August 13, 2016, 10:34:19
Eine Abfrage in dieser Art sollte das Ergebnis herbeiführen.SELECT Min(K.[ID-Pos]) AS [ID-Pos],
       O.Name,
       IIf(K.Kostenstelle \ 1000 = 1, Sum(K.Betrag), 0) AS Wasser,
       IIf(K.Kostenstelle \ 1000 = 2, Sum(K.Betrag), 0) AS Strom,
       IIf(K.Kostenstelle \ 1000 = 3, Sum(K.Betrag), 0) AS Gas,
       IIf(K.Kostenstelle \ 1000 = 4, Sum(K.Betrag), 0) AS Telefon
  FROM [C:\Dein\Pfad\Zur\Datenbank].Kosten K,
       [C:\Dein\Pfad\Zur\Datenbank].Objekte O
WHERE K.[ID-Objekt] = O.[ID-Objekt] AND
       K.[ID-Pos] = O.[ID-Pos]
GROUP BY O.Name,
          K.Kostenstelle \ 1000;
Titel: Re: MS Query Abfrage aus Excel
Beitrag von: Nafets1972 am August 14, 2016, 18:46:50
So nach einigen Stunden Testen und Basteln habe ich folgende Abfrage zusammengestellt


SELECT
KOPF.ID_Pos,
KOPF.Pos_Text,
KOPF.Pos_Info,
Round(Sum(IIF(KALK.KoArt In (1000,1010,1100,1200,1300,1400,1800,1900,2200), IIF(KALK.MengEinh=18, KALK.Wert, 0), 0)),2) AS [Wasser],
Round(Sum(IIF(KALK.KoArt In (2000),                                         IIF(KALK.MengEinh=4 , KALK.Wert, 0), 0)),2) AS [Strom],
Round(Sum(IIF(KALK.KoArt In (2000,2110),                                    IIF(KALK.MengEinh=18, KALK.Wert, 0), 0)),2) AS [Gas],
Round(Sum(IIF(KALK.KoArt In (8210,8220,8230),                               IIF(KALK.MengEinh=36, KALK.Wert, 0), 0)),2) AS [Telefon]

FROM `C:\Dein\Pfad\Zur\Datenbank\objekt.mdb`.PO_KALK KALK,
     `C:\Dein\Pfad\Zur\Datenbank\objekt.mdb`.PO_KOPF KOPF
       
WHERE (KALK.Obj_Nr=?) AND (KALK.Obj_Nr = KOPF.Obj_Nr)  AND (KALK.ID_Pos = KOPF.ID_Pos)

GROUP BY KOPF.ID_Pos, KOPF.Pos_Text, KOPF.Pos_Info;




was bereits für 99% das richtige Ergebnis bringt !


Leider gibt es in der Tabelle PO_KOPF auch Wohnungen die keinerlei kosten verursacht haben und daher in der Tabelle PO_KALK auch überhaut nicht vorkommen. Mit dem Resultat das ich diese Wohnungen leider in der Abfrage auch nicht zurückgegeben bekomme. Was muss ich nun noch Ändern damit er mir diese Wohnungen zumindest Anzeigt und Hinten die Werte mit 0 zurückgibt.


Einen schönen Sonntag


MfG Stefan
Titel: Re: MS Query Abfrage aus Excel
Beitrag von: Lachtaube am August 15, 2016, 10:24:05
Du kannst einen Left Outer Join verwenden. Details dazu gibt es unter Beschreibung der Verwendung von Verknüpfungen in Microsoft Query (https://support.microsoft.com/de-de/kb/136699).