Neuigkeiten:

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

Mobiles Hauptmenü

Preisänderung in Bestelldatenbank

Begonnen von Rumburak, April 25, 2012, 17:15:25

⏪ vorheriges - nächstes ⏩

Rumburak

Hallo,

ich habe eine datenbank in der ich Bestellungen erfasse mit Artikel, Preise usw. habe dazu Formulare und Berichte gebastelt alles wunderbar. Jetzt hat sich der Preis für einen Artikel geändert und ich hatte in den Formulareen den Bezug auf tblArbeitskleidung.arbPreis, ändere ich jetzt dort den Preis sind natürlich alle vorhergehenden Bestellung falsch weil dort auch der neue Preis drinsteht und der alte verloren ist.
Wie kann ich Preisänderungen aufnehmen ohne das schon bestehende Bestellungen davon beeinflusst werden????
Viele Grüße
Rumburak

MzKlMu

#1
Hallo,
ZitatWie kann ich Preisänderungen aufnehmen ohne das schon bestehende Bestellungen davon beeinflusst werden?
indem Du den Preis redundant speicherst, also den Preis zusätzlich in den Bestellpositionen abspeichern.
Oder eine Preisliste führen mit Datum und an Hand des Bestelldatums den zum Zeitpunkt der Bestellung gültigen Preis ermitteln. Letzteres ist aber deutlich aufwendiger.

Schaue mal in das angehängte Beispiel. Nach Auswahl einen Weins im Formular "ProduktVerkauf" wird der aktPreis in das Feld VerkPreis übertragen. Die PosSummen (Menge*Preis) muss dann mit dem VerkPreis gerechnet werden.

[Anhang gelöscht durch Administrator]
Gruß Klaus

Rumburak

#2
Hallo,

vielen Dank für die schnelle Antwort. Diese Möglichkeit wäre eine Option, was mir daran nicht gefällt ist wenn ein Kollege dran "rumdrückt" kann er die Bestellungen zerschießen.
Mir gefällt eine Möglichkeit den Preis über das Bestelldatum zu ermitteln, auch wenn es aufwendiger ist, aber ich denke dann ist es sicher. Weiß nur nicht wie ich das hin bekomme, müsste dann ja bei einer Preisänderung eine neu Spalte je für Preis und Datum anlegen, oder?. Wie kann man das automatisieren in Tabelle und Formular?

Vorteil daran wäre auch das man die Preisänderungen über einen längeren Zeitraum nach verfolgen kann.
Viele Grüße
Rumburak

Beaker s.a.

Hallo Rumburak,
Zitatmüsste dann ja bei einer Preisänderung eine neu Spalte je für Preis und Datum anlegen, oder?.
Nein, Du musst eine neue Tabelle einrichten mit den Preisen,
ArtikelNr als FK und ein Feld für das Datum ab wann der Preis gültig ist.
Diese wird dann 1:n mit der Artikeltabelle in Bezug gesetzt.
Diese neue Tabelle musst Du dann in Deine Abfragen einbauen,
in denen Du jetzt das Preisfeld aus der Artikeltabelle hast.
hth
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MzKlMu

Hallo,
Zitatwas mir daran nicht gefällt ist wenn ein Kollege dran "rumdrückt" kann er die Bestellungen zerschießen.
wieso?
Der Preis wird über die Auswahl des Artikels ermittelt und in das Feld geschrieben. Das Preisfeld kann nicht geändert werden. Da kann nichts zerschossen werden.
ZitatVorteil daran wäre auch das man die Preisänderungen über einen längeren Zeitraum nach verfolgen kann.
Das geht auch mit der einfachen Version, denn Du hast ja das Bestelldatum und damit den Preis der zum Bestellzeitpunkt gültig war.
Zitatmüsste dann ja bei einer Preisänderung eine neu Spalte je für Preis und Datum anlegen, oder?. Wie kann man das automatisieren in Tabelle und Formular?
Nein, kein neuen Spalten, ein neuer Datensatz mit Datum neuer Preis und einem Fremdschlüssel zum Artikel.
Gruß Klaus

database

Hallo,

vielleicht noch ein kleiner Nach- bzw. Zusatz zu den Ausführungen von MzKlMu:

ZitatDer Preis wird über die Auswahl des Artikels ermittelt und in das Feld geschrieben

und

Nein, kein neuen Spalten, ein neuer Datensatz mit Datum neuer Preis und einem Fremdschlüssel zum Artikel.

Du brauchst nur die Abfrage welche die Artikelliste zur Auswahl ermittelt, auf das letztgültige Datum einschränken.
So wird immer der aktuellste Preisstand angezeigt was dann wiederum auch sicher vor Verwechslungen schützt.

Rumburak

#6
Hallo,

habe jetzt eine Tabelle mit den Preisen gültigAB verknüpft zur Tabelle mit der Kleidung ist OK. Mein Bestellformular besteht aus einem Hauptformular [frmBestellungen] und einem UFo [frmBestelldeteils] in dem UFo kann man die Artikel aussuchen Stückzahl eingeben usw. Wie bekomme ich es hin das ich im UFO bei Preis den "jüngsten" Preis bezogen auf das Bestelldatum im Hauptformular angezeigt bekomme?
Habe versucht eine Abfrage zu erstellen in der das Bestelldatum aus dem Formular eingebunden ist, bekomme dann aber immer hunderte von Zeilen von den ganzen Bestellungen.

Der Grund warum ich es auf das Bestelldatum festlegen will ist falls jemand in einer älteren Bestellung was ändern sollte, warum auch immer, soll der damals gültige Preis angezeigt werden.
Viele Grüße
Rumburak

Rumburak

#7
Hallo,

also habe versucht den Code einzubinden:

SELECT  tblBestellungen.Bestelldatum, tblAKPreise.akpPreise, tblAKPreise.akpGueltigAB,tblAKPreise.akpGueltigBIS  FROM tblAKPreise, tblBestellungen WHERE (((tblAKPreise.akpGueltigAB)<=[tblBestellungen].[Bestelldatum])
AND ((tblAKPreise.akpGueltigAB)>=[tblBestellungen].[Bestelldatum]));

geht aber nicht bei einem Textfeld, Oder?

Habe versucht etwas in der Richtung über den Code Generator zu machen:

Text156 = arbPreis WHERE [tblAKPreise].[akpGueltigAB]<=[tblBestellungen].[Bestelldatum])AND [tblAKPreise].[akpGueltigAB]>=[tblBestellungen].[Bestelldatum]

Musste recht schnell feststellen das ich von VBA weniger Ahnung habe wie eine Kuh vom Eierlegen.

BITTE HILFE  :'(

Hatte das mit dem jüngsten Preis garnicht geregelt bekommen und wollte es mit zwischen versuchen, bin kein Schritt weiter.......
Viele Grüße
Rumburak

Rumburak

habe:

=Wenn([Formulare]![frmBestellungen]![Bestelldatum]<=[tblAKPreise]![akpGueltigBis];[tblAKPreise]![akpPreis];"MIST")

im textfeld versucht, geht au net.
Viele Grüße
Rumburak

DF6GL

Hallo,

um in VBA (und auch teilweise anderswo) auf die/das Ergebniss(e) einer Abfrage oder Tabelle zuzugreifen , musst Du die Domänenaggregat-Funktionen bemühen: Dlookup(), DCount(), DMax(), DMin(), etc..   Schau in der VBA-Hilfe nach für Beispiele, wie man diese Funktionen einsetzt und einschränkende Kriterien ("Where-Conditions)  übergeben kann.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Rumburak

Hallo,

habe von VBA gar keine Ahnung.
Viele Grüße
Rumburak

DF6GL

Hallo,

tja, und nun? Ein bisschen VBA (und die o. g. Funktionen sind nun sicherlich nicht so schwierig) sind halt in einer mehr oder weniger ausgeprägten Programmierumgebung wie Acces es darstellt nun mal nötig, wenn man mehr als die Standardfunktionälitäten einbauen will.



Zur Lösung der Ausgangsfrage hat MzKlMu (Klaus) schon die Durchführungsschritte aufgezeigt.
In etwa so mit der Ereignisprozedur "Nach Aktualisierung" des Kombifeldes, mit dem der Artikel in einer Bestellposition gewählt wird:



Sub cmbArtikelauswahlKombi_Afterupdate()
Me!Artikelpreis = Me!mbArtikelauswahlKombi.Column(2)
End Sub



"Artikelpreis" ist das Tabellen-(und das daran gebundene Formulartext-) Feld in der Tabelle tblBestellDetails, das den Preis des akt. gewählten Artikels aufnimmt, sofern dieser Preis in der dritten Spalte des Kombifeldes (durch eine entspr. aufgebaute Abfrage) steht.


Die anderen Lösungswege mit einer verknüpften "Preisgültigkeitstabelle" sind vom Aufwand her zwar höher, wären aber aus datenbanktechnischer Sicht "sicherer" und erlauben ein Planung der Preisentwicklung im Voraus.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Rumburak

Hallo,

das ich den aktuellen Preis abspeicher bekomme ich hin aber wenn ich eine ältere Bestellung aufrufe steht der neu Preis drin und das sorg für Verwirrung. Ich bekomme es aber nicht hin mich auf das Bestelldatum zu beziehen.
Kann mir da jemand weiterhelfen?
Viele Grüße
Rumburak

DF6GL

Hallo,

wieso steht der akt. Preis bei alten Bestellungen drin?

Der wird nur dann aktualisiert, wenn der Artikel nochmal mit dem Kombi ausgewählt wid, was ja einer Änderung der Bestellposition gleichkommt.


Irgendwas ist da vielleicht noch durcheinander...
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Rumburak

#14
Hallo,

habs hinbekommen, geht ganz ohne VBA-Gedöns und das ganz einfach.

Tabelle mit den Preisen angelegt mit Reverenz zu den Produkten, war klar. DANKE Beaker s.a., MzKlMu und database.
Bei der Einschränkung hatte ich dann Probleme.
Habe jetzt einen Preis, gültig AB und gültig BIS. In der Abfrage Bestelldetails eine zusätzliche Spalte
Feld: [Bestelldatum]-[akpGueltigBis]
Kriterien: <=0
und eine Spalte
Feld: [Bestelldatum]-[akpGueltigAb]
Kriterien: >=0

Viele Grüße
Rumburak