Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Abfrage führt fast alles doppelt auf!!!

Begonnen von access_noob, August 06, 2010, 17:17:49

⏪ vorheriges - nächstes ⏩

access_noob

Hallo zusammen

Ich habe schon eine Ewigkeit gegooglet. Aber habe nichts gefunden.

Ich musste eine "Lagerliste" für mein Geschäft machen, in der man den Warenein- und -ausgang erfassen kann und schlussendlich den aktuellen Lagerbestand herauslesen kann. Was ich auch geschafft habe!  ;D
Aber es werden mir alle Produkte, welche im Wareneingang und im Warenausgang vor kommen, bei der Abfrage 2mal aufgelistet.

Hier die Tabellen:

Wareneingang (Datum, ArtikelNr, Anzahl)
Warenausgang (Datum, ArtikelNr, Anzahl)
Artikel (ArtikelNr, Artikel, Anfangsbestand)
PrimaryKey ForeignKey

Hier die Abfrage in SQL-Syntax:

SELECT Artikel.ArtikelNR, Artikel.Artikel, (([Artikel].[Bestand])-Nz([Warenausgang].[Anzahl])+Nz([Wareneingang].[Anzahl])) AS BestandAktuell
FROM (Warenausgang RIGHT JOIN Artikel ON Warenausgang.ArtikelNR = Artikel.ArtikelNR) LEFT JOIN Wareneingang ON Artikel.ArtikelNR = Wareneingang.ArtikelNR
GROUP BY Artikel.ArtikelNR, Artikel.Artikel, (([Artikel].[Bestand])-Nz([Warenausgang].[Anzahl])+Nz([Wareneingang].[Anzahl]))
ORDER BY Artikel.ArtikelNR;

Ich habe euch noch einige Formulare und Makros eingebettet aber das wird wohl kaum der Grund für das Problem sein.

Für eure Hilfe danke euch bereits im Voraus.

Regards access_noob

P.S. Fall etwas unverständlich ist (was durch aus verstehen würde) oder mehr Infos benötigt werden, postet einfach und ich werde versuchen das Problem besser zu umschreiben.

Dorian

Hallo!

Das sieht nach einer falschen Verknüpfungseigenschaften im Abfrageentwurf aus.
Öffne mal Deine Abfrage und gehe in die Entwurfsansicht. Die Verknüpfungen anklicken und die Option 2 oder 3 auswählen. ( Alle Datensätze aus XXX und nur die passenden aus XXX ) Ansonsten bekommst Du doppelte Ergebnisse  ;).

Gruß

Dorian

database

Hallo,

@Dorian
Hallo Dorian, diese Eigenschaften (LEFT JOIN und RIGHT JOIN) werden benötigt sonst werden nicht ALLE Artikel angezeigt sondern nur jene, die in Wareneingang oder Warenausgang vorkommen.

Das 'Problem' liegt daran, das die Abfrage offenbar nicht gleichzeitig ein und das selbe Feld summieren, minuieren und gruppieren kann.
Daher eine kleine Krücke dazu - 2 Hilfsabfragen um die Ausgänge und die Eingänge nach Artikelnummern gruppiert aufzurechnen -
und diese Abfragen dann statt der Wertetabellen (Warenausgang und Wareneingang) in die 3.Abfrage (zur Bestandsberechnung und -anzeige) aufnehmen und dabei mit Left Join und Right Join mit der Artikeltabelle in Beziehung setzen.
Benötigt wird dann nur noch eine kleine Änderung der Formel für die Bestandsberechnung um den Anfangsbestand anzuzeigen wenn weder Ein- noch Ausgänge verbucht wurden.

Ich habe das mal auf gaaaanz einfache Weise nachgestellt und in einer kleinen Muster-DB verpackt hier angehängt. ;)

HTH

Peter


[Anhang gelöscht durch Administrator]

access_noob

#3
Hey database, hey Dorian

Ich danke euch vielmals für euere Hilfe.
Werde es jetzt mal so versuchen und melde mich dann.

Regards access_noob

access_noob

Hallo

Das mit der Gruppierung hat geklappt.
Danke vielmals. ;D

Jedoch klappt die Berechnung nicht. :( Wäre froh wenn mir dabei
auch jemand helfen könnte.

Ich habe jetzt mal die ganze Datenbank (natürlich ein bisschen abgespeckt)
angehängt.

Nochmal Danke im Voraus

[Anhang gelöscht durch Administrator]

DF6GL

Hallo,


die angehängte Zip-Datei ist korrumpiert und mit A2007 nicht zu öffnen.

access_noob

Tut mir leid, das war schon im Geschäft ein Problem, dass man die Datenbank nur noch mit Access 2010 öffnen konnte.

Hier noch mal die Datenbank!

Wegen der Zip-Datei, dort weiss ich nicht was du meinst. :-[

[Anhang gelöscht durch Administrator]

DF6GL

Hallo,

ok, ich dachte, die DB wäre im A2007-Format...


Ansonsten: Der Tabellenaufbau ist falsch. Die Tabellen Wareneingang und Warenausgang müssen zu einer zusammengefaßt werden.
Dabei wird die Unterscheidung, ob Eingang oder Ausgang entweder über das Vorzeichen der Menge  (Name "Anzahl" für das Mengenfeld DRINGEND vermeiden, weiterhin Leer- und Sonderzeichen in Objektnamen!)  (1 : Eingang   -1: Ausgang ) oder über ein Zusatzfeld (Datentyp Ja/Nein) erfaßt.