PDA

Vollständige Version anzeigen : Problem mit Abfrage wenn Kombifeld in Tabelle


phyton2706
29.05.2012, 13:37
Hallo zusammen,

ich hätte da nochmal ein Problemchen. Diesmal geht es um eine Abfrage...

Die Abfrage basiert auf 4 Tabellen und 1 Kreuztabellenabfrage, und genau hier liegt, glaube ich zumindest, mein Problem...

Ich nutze die Kreuztabelle um werte aus einem Kombinationsfeld in einzelne Spalten zubringen, damit ich sie im Bericht einzeln ansprechen kann. Das funktioniert soweit auch. Aber...

Die zu den Felder in der Kreuztabelle (Euro-Wert aus Belegen) gibt es noch EIN Feld mit einem MwSt-Schlüssel.

Hier mal mein bisheriger SQL-Code für die Abfrage:

SELECT
tblSpesenKopf.ADM,
tblSpesenKopf.Datum,
[Vname] & ' ' & [Nname] AS Name,
tblSpesenKopf.Tagesbeginn,
tblSpesenKopf.[Ort-Start],
tblSpesenKopf.Tagesende,
tblSpesenKopf.[Ort-Ende],
Format$([Tagesende]-[Tagesbeginn],'hh:mm') AS Spesenzeit,
tblSpesenKopf.[KM-Start],
tblSpesenKopf.[KM-Ende],
[KM-Ende]-[KM-Start] AS gefahren,
tblSpesenKopf.[Privat-KM],
tblSpesenKopf.[Spesen-Betrag],
tblSpesenKopf.Fruehstuecksabzug,
ktblSpesenBel.Hotelkosten,
[Uebernachtung_MwSt]+[Fruehstueck_MwSt] AS Hotel_MwSt,
ktblSpesenBel.[Telefon/Fax/Handy],
ktblSpesenBel.Tanken,
tblSpesenBeleg.MwSt AS Tanken_Hotel,
ktblSpesenBel.Nebenkosten,
ktblSpesenBel.Wagenpflege,
ktblSpesenBel.Parken,
ktblSpesenBel.[Sonstiges KFZ-Kosten]
FROM ktblSpesenBel
RIGHT JOIN (((tblSpesenKopf LEFT JOIN tblSpesenBeleg ON (tblSpesenKopf.ADM = tblSpesenBeleg.ADM) AND (tblSpesenKopf.Datum = tblSpesenBeleg.Datum))
LEFT JOIN tblSpesenFehlz ON tblSpesenBeleg.ADM = tblSpesenFehlz.ADM)
RIGHT JOIN tblADM ON tblSpesenKopf.ADM = tblADM.ADM) ON (ktblSpesenBel.ADM = tblSpesenKopf.ADM) AND (ktblSpesenBel.Datum = tblSpesenKopf.Datum)
GROUP BY
tblSpesenKopf.ADM,
tblSpesenKopf.Datum,
[Vname] & ' ' & [Nname],
tblSpesenKopf.Tagesbeginn,
tblSpesenKopf.[Ort-Start],
tblSpesenKopf.Tagesende,
tblSpesenKopf.[Ort-Ende],
tblSpesenKopf.[KM-Start],
tblSpesenKopf.[KM-Ende],
[KM-Ende]-[KM-Start],
tblSpesenKopf.[Privat-KM],
tblSpesenKopf.[Spesen-Betrag],
tblSpesenKopf.Fruehstuecksabzug,
ktblSpesenBel.Hotelkosten,
[Uebernachtung_MwSt]+[Fruehstueck_MwSt],
ktblSpesenBel.[Telefon/Fax/Handy],
ktblSpesenBel.Tanken,
tblSpesenBeleg.MwSt,
ktblSpesenBel.Nebenkosten,
ktblSpesenBel.Wagenpflege,
ktblSpesenBel.Parken,
ktblSpesenBel.[Sonstiges KFZ-Kosten],
ORDER BY
tblSpesenKopf.ADM,
tblSpesenKopf.Datum;


Jetzt mein Problem:
Das Feld MwSt in Tabelle "tblSpesenBeleg" beinhalten den MwSt-Schlüssel für verschiedene Belege (Feld wird durch die Kreuztabelle in einzelne Spalten "zerlegt")
Leider bekomme ich es nicht hin, den einzelnen Feder aus der Kreuztabelle den richtigen Wert aus der Tabelle zuzuordnen.

Ich hoffe Ihr könnt mir hier weiter helfen...

Atrus2711
29.05.2012, 13:47
Beeindruckender SQL-Code, aber wenig Struktur...

Wo ist das Datenmodell?
Wie ist das genaue Problem?
Wer erklärt mir die Abbkürzung ADM?

Details bitte.

Und bei Gruppierung einer Addition vom MwSt-Beträgen hör ich auf zu lesen. Da ist was faul....

ebs17
29.05.2012, 13:58
Über Nachschlagefelder in Tabellen denkt man nicht wirklich nach, weil die von professionellen Entwicklern schlicht nicht eingesetzt werden.

phyton2706
29.05.2012, 15:58
Hallo ihr beiden,

Über Nachschlagefelder in Tabellen denkt man nicht wirklich nach, weil die von professionellen Entwicklern schlicht nicht eingesetzt werden.
Ich bin halt kein professioneller Entwickler, sonnst bräuchte ich keine Hilfe...
Das Nachschlagefeld habe ich dort für das Formular eingebunden...

Beeindruckender SQL-Code, aber wenig Struktur...

Wo ist das Datenmodell?
Wie ist das genaue Problem?
Wer erklärt mir die Abbkürzung ADM?

Details bitte.

Frage 1:
Ich habe die Beziehungen mal hochgeladen:
http://img6.imageshack.us/img6/8593/bild001z.png (http://imageshack.us/photo/my-images/6/bild001z.png/)
Uploaded with ImageShack.us (http://imageshack.us)
Frage 2:
In der Tabelle tblSpesenBeleg gibt es eine Spalte Belegart. In dieser Spalte stehen verschiedene Belegarten. In der Spalte "Betrag" stehen die passenden Brutto-Beträge für die einzelnen Belegarten. In die Spalte "MwSt" steht der MwSt-Steuersatz für den Beleg.
Mit der Kreuztabelle erhalte ich nun pro Tag eine Zeile mit den Werten aller Belege in einzelnen Spalten. Was mir noch fehlt, die Zuordnung der MwSt-Schlüssel aus der Tabelle tblSpesenBeleg mit den Spalten der Kreuztabellenabfrage.
Frage 3:
ADM = Tabelle für Außendienstmitarbeiter

Und bei Gruppierung einer Addition vom MwSt-Beträgen hör ich auf zu lesen. Da ist was faul....
Die Addition habe ich raus genommen, das war noch vom rumprobieren drin geblieben...

Ich hoffe, ich konnte mein Problem so besser beschreiben...

Atrus2711
29.05.2012, 15:59
Bitte lad das Bild hier im Forum hoch. Externe Hoster blockt mein Admin...

phyton2706
29.05.2012, 16:03
Ist an gehangen...

hcscherzer
29.05.2012, 17:28
Ein ziemlich wirres Konstrukt von Datenmodell, wenn man überhaupt davon sprechen darf.
Warum sind die Beziehungen nicht mit referentieller Integrität definiert?
Die Detailtabellen gehören doch nicht untereinander sondern alle mit den ADM verknüpft ...

phyton2706
30.05.2012, 06:32
Hallo hcscherzer,

die referentielle Integrität habe ich erstmal raus genommen, da ich mit Demo-Daten arbeite, und ich die referentielle Integrität nicht eingehalten habe. Sobald ich die letzten Probleme gelöst habe, dann leere ich die Datenbank und setzte die referentielle Integrität wieder.

Aber das hilft mir immer noch nicht bei meinem Problem...

Atrus2711
30.05.2012, 07:46
<strike>Ich seh da nix?! :eek:</strike>ah, dort stehts. :)

Mit der Kreuztabelle erhalte ich nun pro Tag eine Zeile mit den Werten aller Belege in einzelnen Spalten. Was mir noch fehlt, die Zuordnung der MwSt-Schlüssel aus der Tabelle tblSpesenBeleg mit den Spalten der Kreuztabellenabfrage.
Wenn ich das recht verstehe, wäre das doch ein Fall für die Vor-Abfrage? Die Kreuztabelle sollte nur (!) die Spalten und Zeilen "rausziehen" und die Verdichtung der so entstehenden Zelldaten erledigen. Alles, was die KTA dafür braucht, sollten Vor-Abfragen übernehmen.

phyton2706
30.05.2012, 08:00
Hallo Atrus2711,

ich glaube, das habe ich nicht wirklich verstanden...
Welche Vor-Abfrage bräuchte ich denn noch?
Durch die KTA bekomme ich pro Belegart eine Spalte.

Ich brauche doch jetzt eine Abfrage, die mir zu den Belegarten aus der KTA noch die Werte auf der Spalte "MwSt" passend zuordnet. oder nicht?

Atrus2711
30.05.2012, 08:04
Der MwSt-Satz steht doch schon vorher fest, anhand der Belegart.

phyton2706
30.05.2012, 08:07
Nein, leider nicht... Da wir Außendiestmitarbeiter im Ausland haben, wir der MwSt-Schlüssel durch die AD`s vorgegeben.

Atrus2711
30.05.2012, 08:12
Aber sicher nicht einheitlich pro AD, sondern als ("beliebiger") Wert pro Beleg. Damit kannst du den MwStSatz behandeln wie den Betrag und gleich "durchrechnen".

phyton2706
30.05.2012, 08:37
Aber sicher nicht einheitlich pro AD, sondern als ("beliebiger") Wert pro Beleg. Damit kannst du den MwStSatz behandeln wie den Betrag und gleich "durchrechnen".
Danke, das war der tipp, den ich gebraucht habe! Ich habe noch zusätzlich eine KTA für die MwSt erstellt, und jetzt habe ich, was ich brauchte!

Danke!!!