Lagerbestand automatisch aktualisieren

Hallo liebe Wissenden,
Ich habe (wie sollte es anders sein) mal wieder ein Problem.

Ich habe eine Datenbank angelegt, in der ich den Lagerbestand, die Entnahme- und Bestellscheine eintragen kann.
In der Liste mit den Artikeln habe ich eine Spalte für die vorhandene Menge.
Zur Zeit Trage ich diese per hand ein, wollte jetzt aber auf eine Automatisierung umsteigen.

Eine Tabelle für die Artikel mit vorhandener Menge,
eine Tabelle für die Entnahmen mit entnommener Menge und
eine Tabelle für Bestellungen mit bestellter menge sind vorhanden.

In Excel würd ich nun eintragen

vorhandene Menge = bestellte menge - entnommener Menge

funktioniert in Access leider nicht weil das Datenblatt/Tabellen übergreifend ist.

Kennt einer von euch die Lösung meines Problems?

Ich bedanke mich schon mal für jeden Lösungsansatz un hoffe, das ihr mir weiter helfen könnt.

MFG
Christian

Hallo,

was haellst du davon, die entsprechenden Tabellen in einer Abfrage zu verknuefen und dort die Berechnung auszufuehren.

aktBestand = tabelleBestand.Menge - tabelleEntnahmen.Menge

oder du schreibst die entsprechenden Entnahmen/Bestellungen beim anlegen der Datensaetze in die Bestandstabelle durch.

Tschau
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Versuch, aber irgendwie geht nicht.
Moin moin,

was haellst du davon, die entsprechenden Tabellen in einer
Abfrage zu verknuefen und dort die Berechnung auszufuehren.
aktBestand = tabelleBestand.Menge - tabelleEntnahmen.Menge

Nunja, das hab ich jetzt gemacht. Der rechnet mir das wunderbar, Leider hat die Sache nur ein Manko: Ich kann jetzt nur noch entnehmen. Bestellungen sind nicht mehr möglich weil der mir die Felder zum Eintragen ausblendet.

oder du schreibst die entsprechenden Entnahmen/Bestellungen
beim anlegen der Datensaetze in die Bestandstabelle durch.

„oder du schreibst …in die Bestandstabelle durch.“
Bitte was? Sorry also damit weis ich jetzt grad nichts anzufangen.

MFG
Christian

Hallo,

„oder du schreibst …in die Bestandstabelle durch.“
Bitte was? Sorry also damit weis ich jetzt grad nichts
anzufangen.

ok, also wenn ich das richtig verstehe hast du ein Formular, wahrscheinlich in der Listen ansicht, in dem du arbeitest, dann ist das ganze natuelich etwas unguenstig.
Vorschlag: Die verschiedene Funktionalitaet auch in verschiedenen Formular abbilden.
d.h.:

  1. Lagerbestandsuebersicht in einem Formular mit einem Listenelement, das den Lagerbestand anzeigt. Dieser Liste liegt ein Abfrage zugrunde, die dir alle relevanten Felder anzeigt, dort kann man auch dann einiges berechnen. Die Liste kann man dann ewt. ueber div. Felder filtern fuer besseren Ueberblick/Suche
  2. Formular fuer den Bestelleingang
    Aus Liste Teil anklicken ueber Knopf ein Formular fuer Bestellungen oeffnen, das auf der entsprechenden Tabelle arbeitet.
  3. Formular fuer Lagerabgang/Auslagern dito.
    Hier die Lagerabgaenge erfassen.

Beim Schliessen der Formulare jeweils Liste aktualisieren.

Dann sind die einzelnen Funktionalitaeten sauber getrennt und man koennte das Progamm auch Problemlos im Mehrbenutzerbetieb anwenden. Auserdem ist tritt dein Problem dann gar nicht mehr auf.

Tschau
Peter

Details zu meiner Lage
Moin Moin,
Vielen dank erstmal für die Hilfe.

Aber ich denke ich sollte da etwas weiter ausholen.
Es ist für Bestellungen, Artikel, Entnahmen je eine Form vorhanden.

Zudem habe ich unter anderem die TABs
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)
Es wurden 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 TABs 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 ein paar neue Verbindungen zwischen TABs hergestellt, die nichts miteinander zu tun haben. (z.B. [Bestelldetails.Bestellnummer]-[Entnahmedetails.Bestellnummer] ).

Nunja ich hoffe ihr könnt mir mit meinem Problm weiterhelfen.
Vielen Dank schon mal

MFG
Christian

Hallo,

also mal ganz einfach, wenn es nur darum geht eine Berechnung durchzufuehren und das Erganbis auszugeben, dann kann man das doch ueber ein ungebundenes Textfeld machen, und bei einem passenden Ereignis( beimAnzeigen, NachAktualisiern etc.)die Funktion aufrufen und den Wert im Feld eintragen.
In der Funktion codiert man ein SQL-Statement, fuer die Berechnung und gut ist.

Oder aber man codiert den Funktionsaufruf in die Abfrage.
Dort erstelle man ein Feld etwas so:
AktBestand: BerechenBestand(Artikelstamm.ArtikelNr)

ewt, kann/muss man noch weitere Parameter uebergeben

Dann codiert man eine Funktion
Public Function BerechenBestand(ArtikelID as long) as long

'sqlStatemant zusammenbauen
’ ausfuehren
BerechenBestand = ErgebnisSQL

End Function

Das mit der Funktion in einer Abfrage ist nicht wirklich schnell, aber ein probates Mittel um solche Probleme zu loesen.
Ich hab mal so was in ein Programm eingebaut, das dann aber spaeter 45000 Datensaetze hatte, da war dieser Ansatz nicht mehr sinnvoll, aber wenn die Abfrage nur wenige Saetze liefert ist es OK.

Tschau
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Moin,

also mal ganz einfach, wenn es nur darum geht eine Berechnung
durchzufuehren und das Erganbis auszugeben, dann kann man das
doch ueber ein ungebundenes Textfeld machen, und bei einem
passenden Ereignis( beimAnzeigen, NachAktualisiern etc.)die
Funktion aufrufen und den Wert im Feld eintragen.
In der Funktion codiert man ein SQL-Statement, fuer die
Berechnung und gut ist.

Wenn ich das ganze richtig verstanden habe, einfach eine neues Textfeld erstellen, in der dann das Ergebnis angezeigt wird.
In die Datenherkunft des Formulares dann die entsprechenden Tabellen einfügen und die Berechnung einfügen.
Nunja, das funktioniert irgendwie nicht.Es kommt das Selbe dabei heraus, als wenn ich das ganze über eine Abfrage machen würde.
Ich kann dann da nichts mehr eingeben, bzw es wird nichts angezeigt. Oder wenn sich das auf einen Artikel bezieht, der schon in Entnahmen UND Bestellungen vorkam, dann wird dieser doppelt angezeigt. Einaml als aus der Bestellung und einmal aus der Entnahme.

Oder aber man codiert den Funktionsaufruf in die Abfrage.
Dort erstelle man ein Feld etwas so:
AktBestand: BerechenBestand(Artikelstamm.ArtikelNr)

ewt, kann/muss man noch weitere Parameter uebergeben

Dann codiert man eine Funktion
Public Function BerechenBestand(ArtikelID as long) as long

'sqlStatemant zusammenbauen
’ ausfuehren
BerechenBestand = ErgebnisSQL

End Function

Das müßtest du mir bitte etwas genauer erklären, klinkt schon besser als das was ich als alternative zu bieten hätte (nichts)

Vielen Dank erstmal
MFG
Christian