habit-breaker

Access 03: Lagerbestand automatisch berechnen funktioniert nicht

Lagerbestand = Anzahl der bestellten Artikel - Anzahl der entnommenen Artikel
Jedoch will das nicht so recht.

Moin Moin,

Habe eine Datenbank mit der Aufgabe den Lagerbestand, die Entnahmen und die Bestellungen aufzunehmen.

Der Aufbau ist dem der Beispieldatei "Nordwind" sehr ähnlich, da ich diese im Prinzip auf meine Funktionen umgeschrieben habe.

Es ist für Bestellungen, Artikel, Entnahmen je ein Formular vorhanden.

Zudem habe ich unter anderem die Tabellen
Bestelldetails (bestellnummer; Artikelnummer; Anzahl) und
Entnahmedetails (Entnahmenummer; artikelnummer; Anzahl)
mit der Tablle
Artikel (Artikelnummer; Name; Einzelpreis)
über 1:n verbunden
(Bestelldetails.Artikelnummer n:1 Artikel.Artikelnummer 1:n Entnahmedetails.Artikelnummer)

Bestelldetails ist mit Bestellungen verbunden (Bestellungen.Betsellnummer 1:n Bestelldetails.Betsellnummer)

und Entnahmedetails mit Entnahmeschein (Entnahmeschein.Betsellnummer 1:n Entnahmedetails.Betsellnummer)

Die Autonachschlagen funktion bekomme ich hin (artikel auswählen details automatisch eintragen)
Ich habe ursprünglich je eine für Entnahme & Bestellung angefertigt. funktionierte auch.
Jedoch kann ich so eine Subtraktion(Artikeleingang - Ausgang) für den aktuellen Lagerbestand nicht ausführen (oder doch?)

Nun hab ich versucht eine Abfrage mit den Tabellen Artikel, Bestelldetails & Entnahmedetails zu starten.
[Artikelnumer.Bestelldetails]
[Artikelnumer.Entnahmedetails]
[Artikelname.Artikel]
[Einzelpreis.Artikel]
[Anzahl.Bestelldetails]
[Anzahl.Entnahmedetails]
[Lagerbestand: ZCurrency([Anzahl.Bestelldetails]-[Anzahl. Entnahmedetails]) ]

Als ich diese Gestartet habe, wurden mir keine Felder zum eintragen angezeigt und es wurde die 1:n verbindung zwischen Entnahmedetails und Entnahmeschein gelöscht.
Nebenbei wurden wirre Beziehungen geknüpft (z.B. wurden die Tabellen in denen der Feldname "Artikel-NR" vorkommen zusätzlich hinzugefügt und alle "Artikel-NR" mit der "Artikel-NR" von der Tabelle Entnahmeschein verbunden).

Nunja ich hoffe ihr könnt mir mit meinem Problem weiterhelfen.
Bin für jegliche Vorschläge offen

Vielen Dank schon mal

MFG
Christian
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 44735

Url: https://administrator.de/forum/access-03-lagerbestand-automatisch-berechnen-funktioniert-nicht-44735.html

Ausgedruckt am: 26.04.2025 um 02:04 Uhr

25110
25110 27.11.2006 um 13:26:08 Uhr
Goto Top
Hallo,

Ändere mal den Feldnamen Anzahl. Anzahl ist eine fest definierte Funktion in Access.
Vielleicht kommt Access da etwas durcheinander.

mfg
Habit-Breaker
Habit-Breaker 27.11.2006 um 22:09:45 Uhr
Goto Top
Hallo,
Danke für diesen Ansatz, aber leider hatte ich die schon mal entnahmeanzahl, bestanzahl und lageranzahl oder so ähnlich genannt.

Trotzdem Danke
MFG
Christian
Biber
Biber 27.11.2006 um 23:09:16 Uhr
Goto Top
Moin Habit-Brecher,

poste doch bitte mal das SQL-Statement Deiner Abfrage, so wie M$Access es Dir generiert hat.
Oder ist das ein manuell erstelltes?

Grüße
Biber
Habit-Breaker
Habit-Breaker 01.12.2006 um 08:54:59 Uhr
Goto Top
Moin,
Ich erstelle eine Abfrage in Tabellarischer Form, also hier das generierte SQL-Statement :

SELECT Artikel.[Artikel-Nr], Bestelldetails.BestAnzahl, [Entnahme-details].EntAnzahl, CCur([Bestelldetails].[Bestanzahl]-[Entnahme-details].[Entanzahl]) AS Lagerbestand
FROM (Artikel INNER JOIN Bestelldetails ON Artikel.[Artikel-Nr] = Bestelldetails.[Artikel-Nr]) INNER JOIN [Entnahme-details] ON Artikel.[Artikel-Nr] = [Entnahme-details].[Artikel-Nr];

Schon mal vielen Dank
MFG
Christian
Biber
Biber 01.12.2006 um 09:17:26 Uhr
Goto Top
Mon Habit-Brecher,

das erscheint mir an drei Stellen nicht plausibel, was da drin steht:
SELECT Artikel.[Artikel-Nr], 
Bestelldetails.BestAnzahl, 
[Entnahme-details].EntAnzahl, 
CCur([Bestelldetails].[Bestanzahl]-[Entnahme-details].[Entanzahl]) AS Lagerbestand
FROM 
(Artikel 
INNER JOIN Bestelldetails ON Artikel.[Artikel-Nr] = Bestelldetails.[Artikel-Nr]) 
   INNER JOIN [Entnahme-details] ON Artikel.[Artikel-Nr] = [Entnahme-details].[Artikel-Nr];

a) Aus Bestell-Anzahl und Entnommen-Anzahl braucht niemand einen Currency/Währungswert berechnen.

b) Aus Bestell-Anzahl und Entnommen-Anzahl kann niemand einen Lagerbestand berechnen. Das ist zwar die Differnenz zwischen Bestellt und Verbrauch, aber der Ist-Bestand fehlt

c) Durch den zweiten INNER JOIN erfasst Du nur Artikel, die sowohl bestellt wurden wie auch einen Abgang/Verbrauch haben. Diejenigen, die mit 2 Mio Stück bestellt wurden, aber noch nie verbraucht wurden gehen Dir durch die Lappen.

Wie gesagt, das kann so (fachlich) nicht richtig sein.
Es sei denn, Deine Felder enthalten etwas ganz anderes als der Feldname vorgibt.

Gruß
Biber
Habit-Breaker
Habit-Breaker 01.12.2006 um 15:28:30 Uhr
Goto Top
Hallo Biber,

Dass das nicht richtig ist, dachte ich mir schon. Hab halt sonst nichts mit Access zu tun.

a) Aus Bestell-Anzahl und Entnommen-Anzahl braucht niemand einen Currency/Währungswert berechnen.

Achso, deshalb hatt ich da immer ein € symbol...

b) Aus Bestell-Anzahl und Entnommen-Anzahl kann niemand einen Lagerbestand >berechnen. Das ist zwar die Differnenz zwischen Bestellt und Verbrauch, aber der Ist-Bestand fehlt

bestellt - verbraucht = Lagerbestand

Kam mir erstmal am logischsten vor, jedoch ist da halt erstmal ein start-Lagerbestand. Diesen wollte ich dann als erste Bestellung aufnehmen.
Etwas besseres ist mir nicht eingefallen.

c) Durch den zweiten INNER JOIN erfasst Du nur Artikel, die sowohl bestellt wurden wie auch einen Abgang/Verbrauch haben. Diejenigen, die mit 2 Mio Stück bestellt wurden, aber noch nie verbraucht wurden gehen Dir durch die Lappen.

Nunja, das ist halt mein Problem. Bin für jeden Vorschlag offen und dankbar

Wie gesagt, das kann so (fachlich) nicht richtig sein.
Es sei denn, Deine Felder enthalten etwas ganz anderes als der Feldname vorgibt.


Dass das nicht richtig sein kann, dachte ich mir schon. Aber wie gesagt, ich hab sonst nichts mit Access zu tun.

Also die Felder enthalten das, wie sie benannt wurden.
[Entanzahl] = Entnommene Anzahl ;
[Bestanzahl] = Bestellte Anzahl

Ich danke für jeden Vorschlag zur Verbesserung

MFG
Christian