collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 48
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 1

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13754
  • stats Beiträge insgesamt: 62828
  • stats Themen insgesamt: 8540
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: Wert aus Abfrage in Formulartextfeld anzeigen lassen  (Gelesen 731 mal)

Offline ellinho

  • Access-Profi
  • **
  • Beiträge: 131
Wert aus Abfrage in Formulartextfeld anzeigen lassen
« am: Juni 19, 2017, 11:15:14 »
Hallo zusammen.

Ich habe eine Artikelbestandsliste (Tabellenname "Artikelbestand), in die über ein Formular die Wareneingänge mitsamt Zugangsdatum und Einkaufspreis netto geschrieben werden. Die Tabelle "Artikelbestand" besteht aus den Spalten ID, Bezeichnung, EKPreisnetto, Datum, Zu-/Abgang. Genauso habe ich ein Formular für die Warenausgänge erstellt. Bei dieser Buchung wird vom Benutzer natürlich kein Einkaufspreis netto mitgegeben, allerdings sollte das vom System erledigt werden (dies kann auch ruhig versteckt im Hintergrund ablaufen), denn ansonsten habe ich nie den genauen Wert, der auf dem Lager liegt. Ich habe nun eine Abfrage erstellt, die den Durchschnitts-Einkaufspreis netto für jeden Artikel berechnet. Diese heißt "EKPreisMittelwert" und besteht aus den Spalten Bezeichnung und EKPreisnetto.
Nun möchte ich ein Textfeld in das Formular "Warenausgang_buchen" integrieren, das den Durchschnitts-Einkaufspreis netto aus der Abfrage "EKPreisMittelwert" des über Kombinationsfeld ausgewählten Artikels anzeigt und beim Erfassen des Warenausgangs dann auch mit in die Tabelle "Artikelbestand" schreibt.
Ich hoffe, man kann verstehen, was ich meine und würde mich freuen, wenn mir jemand von Euch helfen kann.
Vielen Dank schon mal.

Gruß Karsten
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23047
Re: Wert aus Abfrage in Formulartextfeld anzeigen lassen
« Antwort #1 am: Juni 19, 2017, 13:25:02 »
Hallo,

zu verstehen ist das schon, nur das Konzept dahinter ist fragwürdig.  Aktuell aus anderen Daten berechnete Werte soll(t)en nicht in Tabellenfelder abgelegt werden. 

Zudem ist mir die Bedeutung von "Bezeichnung" suspekt.  Wenn das die Artikelbezeichnung sein soll, ist der Tabellenaufbau nicht db-gerecht und korrekt.  Es fehlt die eigentliche Artikeltabelle (mit Primärschlüsselfeld) und in "Artikelbestand" das Fremdschlüsselfeld zum Aufbau einer Beziehung zwischen den beiden Tabellen.   "Artikelbestand"   sollte dann auch eher "Lagerbewegungen" heißen, in der zusätzlich der Lagerort (bzw. die Lagernummer, falls überhaupt vorhanden) mitgeführt werden.   Beim Feld "Zu-/Abgang"  (heißt das wirklich so? Wenn so, dann unbedingt auf Sonder- und Leerzeichen im Namen verzichten!)  muss weiterhin vereinbart (definiert) werden, dass Lagerzugänge positiv und Lagerabgänge negativ gebucht werden.  "Menge" wäre eine alternative Benennung, wobei evtl. auch Mengeneinheiten berücksichtigt werden müssen/können.  Sollen in "Menge" immer nur positive Zahlen stehen, ist um ein weiteres (Ja/Nein-)Feld ("Bewegungsart" : 0= Zugang, -1 = Abgang) zu erweitern.


Die Berechnung der Mittelwerte wird dann und dort durchgeführt, wo diese Daten aktuell verwendet werden.


Offline ellinho

  • Access-Profi
  • **
  • Beiträge: 131
Re: Wert aus Abfrage in Formulartextfeld anzeigen lassen
« Antwort #2 am: Juni 19, 2017, 14:02:41 »
Hallo Franz.
Vielen Dank für Deine Antwort.
Ich werde das bezgl. Primär- und Fremdschlüssel und vernünftigen Bezeichnungen noch mal überarbeiten. Lagerzugänge werden aktuell bereits automatisch positiv, Lagerabgänge automatisch negativ gebucht.
Allerdings verstehe ich den letzten Satz noch nicht. Ich muss doch mit einer Abfrage arbeiten, um den Mittelwert für den Netto-EK pro Stück zu berechnen!?!?
Beispiel: Ich kaufe 10 Stück von Artikel1 zu einem Preis von 5,60 EUR/Stck. ein. Danach kaufe ich 15 Stück von Artikel1 zu einem Preis von 5,75 EUR/Stck ein. Somit habe ich von Artikel1 einen Lagerbestand von 25 Stück. Der Durchschnitts-Netto-EK läge somit bei 5,69 EUR/Stck. Wenn ich nun 5 Stück aus dem Lager buche, ändert sich doch, wenn ich nicht wieder den zur Buchung aktuellen Durchschnitts-Netto-EK in die Tabelle "zurückschreibe", der Durchschnitts-Netto-EK auf 7,11 EUR/Stck, obwohl er, wenn ich 5 Stück mit Durchschnitts-Netto-EK von 5,69 EUR/Stck. ausbuche, richtigerweise auf 5,69 EUR/Stck bleibtDas kann ich doch nur über eine Abfrage berechnen, oder nicht??? Das Formular, über das der Warenausgang gebucht wird, muss aber doch wiederum mit der Tabelle, die die Lagerbewegungen enthält, "verknüpft" sein. (Datensatzquelle)!?! Somit hat sich die Anzahl der Fragezeichen bei mir nicht reduziert.  ;)

VG
Karsten
 

Offline DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23047
Re: Wert aus Abfrage in Formulartextfeld anzeigen lassen
« Antwort #3 am: Juni 19, 2017, 14:19:34 »
Hallo,

ich habe nirgends bestritten, dass der Preis über (irgend-)eine Abfrage berechnet werden kann.   ;)

Zum "Mittelwert" gibt es ja einige unterschiedliche Definitionen.  Bzgl. Lagerhaltung suchst Du vielleicht  ja den "gleitenden Durchschnittspreis".  Wie auch immer,  Abgänge spielen IMHO für diese Berechnung keine Rolle, nur die Zugänge, und dann auch nur in einem bestimmten Zeitraum. 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1550
Re: Wert aus Abfrage in Formulartextfeld anzeigen lassen
« Antwort #4 am: Juni 19, 2017, 16:43:35 »
Hallo Karsten,
Den durchschnittlichen Ek-Preis berechnet man normalerweise nicht
als Mittelwert aller Einkäufe, sondern, wie Franz schon anmerkte als
"gleitenden Durchschnittspreis":
(Bestand x alter dEK + Zugang x neuer EK) / neuer Bestand.
Und den würde ich als Eigenschaft (Feld) im Artikelstamm führen, und
bei Zugängen entsprechend neu berechnen.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline ellinho

  • Access-Profi
  • **
  • Beiträge: 131
Re: Wert aus Abfrage in Formulartextfeld anzeigen lassen
« Antwort #5 am: Juli 11, 2017, 09:18:46 »
@Ekkehard

Vielen Dank für den Gedankengang.
Ich gebe bei Wareneingängen zwar den Netto-EK mit, allerdings schreibe ich nicht in den Artikelstamm, sondern in eine Tabelle "Lagerbewegungen". Somit kann ich den "gleitenden Durchschnittspreis" nicht als Eigenschaft (Feld) im Artikelstamm führen, oder doch ???  ???
Und noch ein Problem: Wie bekomme ich denn wohl am besten den alten dEK errechnet?
Gruß Karsten
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1550
Re: Wert aus Abfrage in Formulartextfeld anzeigen lassen
« Antwort #6 am: Juli 11, 2017, 14:05:23 »
Hallo Karsten,
Zitat
Wie bekomme ich denn wohl am besten den alten dEK errechnet?
Deshalb speichere ich ihn ja im Artikelstamm, um beim nächsten Einkauf
darauf zugreifen, ihn neu berechnen und aktualisieren zu können.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline ellinho

  • Access-Profi
  • **
  • Beiträge: 131
Re: Wert aus Abfrage in Formulartextfeld anzeigen lassen
« Antwort #7 am: Juli 11, 2017, 14:21:19 »
Aber wie? Über einen Trigger beim Buchen des Wareneingangs? Oder geht es auch anders?
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1550
Re: Wert aus Abfrage in Formulartextfeld anzeigen lassen
« Antwort #8 am: Juli 11, 2017, 16:09:20 »
Hallo,
Tja, hm, kenne ja deine Abläufe nicht.
Mein erster Ansatz wäre erstmal eine Function, die den neuen Wert
berechnet. Das gleich in eine Aktualisierungsabfrage zu packen würde ich
mich an dieser Stelle nicht zutrauen. Also mit der Function wohl schon,
was ich meine ist die Berechnung direkt in einer Abfrage.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline ellinho

  • Access-Profi
  • **
  • Beiträge: 131
Re: Wert aus Abfrage in Formulartextfeld anzeigen lassen
« Antwort #9 am: Juli 13, 2017, 08:54:41 »
@Ekkehard

Mit einer Abfrage hatte ich bereits geplant - nur noch keine Idee, wie !?!
Du hattest die Berechnung ja schon in einem Deiner Beiträge geschrieben:
(Bestand x alter dEK + Zugang x neuer EK) / neuer Bestand
Nun tue ich mich schwer, die "alten Werte" zu berechnen, d.h. den alten Bestand vor letztem Warenein-/ausgang sowie den alten dEK. Ich muss ja quasi dabei rechnen: aktueller Bestand - letzter Datensatz. Da "hänge" ich.  :(

VG
Karsten

UPDATE:

Ich habe nun schon mal 2 Berechnungen erstellen können, mit denen ich zum einen die letzte Lagerbewegung berechnen kann das mache ich mit MAX(ID) zum anderen den Bestand vor letzter Bewegung. Wenn ich jetzt jedoch den gleitenden Durchschnitts-Netto-EK berechnen möchte, stoße ich auf folgende Schwierigkeit: Ich benötige ja dafür den letzten Wareneingang. Diesen kann ich mit meiner MAX(ID)-Funktion nicht ermitteln, da ich Wareneingänge und -ausgänge in der Tabelle stehen habe. Ich kann zwar über den Grund "Wareneingang" filtern, bekomme jedoch dann alle Wareneingänge angezeigt. Wie bekomme ich den letzten Wareneingang herausgefiltert? Ich könnte mit der ID bzw. mit dem Buchungsdatum arbeiten. Aber wie???

Viele Grüße
Karsten
« Letzte Änderung: Juli 13, 2017, 12:40:55 von ellinho »
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1550
Re: Wert aus Abfrage in Formulartextfeld anzeigen lassen
« Antwort #10 am: Juli 13, 2017, 15:07:52 »
Hallo,
Zitat
zum anderen den Bestand vor letzter Bewegung
Die letzte Bewegung ist für diese Berechnung der neue Wareneingang; -
also der aktuelle Bestand vor dem Zugang.
Den Bestand berechnest du ja aus den Lagerbewegungen.

Zitat
Wenn ich jetzt jedoch den gleitenden Durchschnitts-Netto-EK berechnen möchte, stoße ich auf folgende Schwierigkeit: Ich benötige ja dafür den letzten Wareneingang.
Wozu? Welchen Wert willst du da rausholen?
Ich gehe ja davon aus, dass der gleitende dEK, nach der Neuberechnung
beim Wareneingang, irgendwo gespeichert wird. Diesen Wert musst du zum
Zeitpunkt der Berechnung von dort abholen.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline ellinho

  • Access-Profi
  • **
  • Beiträge: 131
Re: Wert aus Abfrage in Formulartextfeld anzeigen lassen
« Antwort #11 am: Juli 13, 2017, 16:08:53 »
@Ekkehard
Dankeschön. Ich löse das nun mit einem Trigger, der mir bei jedem Wareneingang den Netto-EK mitsamt Eingangsmenge in eine Hilfstabelle schreibt. Diese nehme ich als Grundlage zur Berechnung.

Viele Grüße
Karsten
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1550
Re: Wert aus Abfrage in Formulartextfeld anzeigen lassen
« Antwort #12 am: Juli 13, 2017, 16:46:52 »
Hallo Karsten,
Wozu Hilfstabelle? Wie speicherst du den die Zugänge?
Wareneingang läuft bei mir wie der Ausgang auch, über einen
Lieferschein mit Einzelpositionen. Und da werden auch EK und
Menge erfasst und gespeichert. Der letzte Zu-/Abgang lässt
sich dann über das Datum des LS ermitteln.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
 

Offline ellinho

  • Access-Profi
  • **
  • Beiträge: 131
Re: Wert aus Abfrage in Formulartextfeld anzeigen lassen
« Antwort #13 am: Juli 14, 2017, 12:19:40 »
@Ekkehard

Ich habe wahrscheinlich ein Brett vor dem Kopf  :(
Sämtliche Werte errechne ich aktuell über Abfragen. Den Bestand vor dem letzten Wareneingang, den letzten Zugang, den Netto-EK des letzten Zugangs und den neuen Bestand. Nur den alten dEK bekomme ich nicht. Ich habe mal eine Tabelle (aktueller_DEK) erstellt (Felder: Artikelbezeichnung und DEK) und würde ihn ja daraus auslesen - allerdings muss Access diese Tabelle zunächst einmal mit einem Datensatz befüllen. Ich habe mir überlegt, eine Aktualisierungsabfrage zu erstellen, die diese Tabelle im Falle eines Wareneingangs aktualisiert. Allerdings weiß ich im Moment leider absolut nicht, wie.  :-\ Kannst Du mir vielleicht weiterhelfen?

Viele Grüße
Karsten
« Letzte Änderung: Juli 14, 2017, 12:23:45 von ellinho »
 

Offline Beaker s.a.

  • Access Guru
  • ****
  • Beiträge: 1550
Re: Wert aus Abfrage in Formulartextfeld anzeigen lassen
« Antwort #14 am: Juli 14, 2017, 14:45:19 »
Hallo Karsten,
Zitat
Sämtliche Werte errechne ich aktuell über Abfragen
Ist ja nicht verkehrt. Abfragen beruhen aber immer auf Tabellen, also
gespeicherten Werten.

Zitat
Den Bestand vor dem letzten Wareneingang
Wie gesagt, das ist der aktuelle Bestand vor dem aktuellen Zugang.
Zitat
den letzten Zugang, den Netto-EK des letzten Zugangs
= der aktuelle Zugang
Zitat
eine Tabelle (aktueller_DEK) erstellt (Felder: Artikelbezeichnung und DEK)
Macht Sinn, da du so auch eine Historie der dEKs hättest.
Aber nur, wenn du
1. nicht die Artikelbezeichnung sondern den PK aus der tblArtikel
als FK übernimmst, und eine entsprechende Beziehung anlegst
2. ein Datumsfeld ergänzt

Zitat
allerdings muss Access diese Tabelle zunächst einmal mit einem Datensatz befüllen.
Na ja, einen Startwert musst du schon irgendwie "ermitteln" und
in die neue Tabelle bringen. Ich würde da einfach den EK des letzten
Zugangs vor dem aktuellen nehmen.

Zitat
Ich habe mir überlegt, eine Aktualisierungsabfrage zu erstellen, die diese Tabelle im Falle eines Wareneingangs aktualisiert.
Würde ich wohl auch so machen. Wobei mir halt immer noch nicht
klar ist, wie der Wareneingang bei euch erfasst wird; - manuell (jeder
Artikel einzeln) oder über einen Eingangsbeleg mit Positionen (alles auf
einen Rutsch)?

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.