habit-breaker
Goto Top

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

Content-Key: 44735

Url: https://administrator.de/contentid/44735

Printed on: April 19, 2024 at 16:04 o'clock

Mitglied: 25110
25110 Nov 27, 2006 at 12:26:08 (UTC)
Goto Top
Hallo,

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

mfg
Member: Habit-Breaker
Habit-Breaker Nov 27, 2006 at 21:09:45 (UTC)
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
Member: Biber
Biber Nov 27, 2006 at 22:09:16 (UTC)
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
Member: Habit-Breaker
Habit-Breaker Dec 01, 2006 at 07:54:59 (UTC)
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
Member: Biber
Biber Dec 01, 2006 at 08:17:26 (UTC)
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
Member: Habit-Breaker
Habit-Breaker Dec 01, 2006 at 14:28:30 (UTC)
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