Access-o-Mania

Access-Forum (Deutsch/German) => Access-Hilfe => Thema gestartet von: Rumburak am April 25, 2012, 17:15:25

Titel: Preisänderung in Bestelldatenbank
Beitrag von: Rumburak am April 25, 2012, 17:15:25
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????
Titel: Re: Preisänderung in Bestelldatenbank
Beitrag von: MzKlMu am April 25, 2012, 17:23:33
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]
Titel: Re: Preisänderung in Bestelldatenbank
Beitrag von: Rumburak am April 25, 2012, 21:37:43
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.
Titel: Re: Preisänderung in Bestelldatenbank
Beitrag von: Beaker s.a. am April 25, 2012, 22:46:05
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
Titel: Re: Preisänderung in Bestelldatenbank
Beitrag von: MzKlMu am April 25, 2012, 22:46:55
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.
Titel: Re: Preisänderung in Bestelldatenbank
Beitrag von: database am April 26, 2012, 15:53:16
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.
Titel: Re: Preisänderung in Bestelldatenbank
Beitrag von: Rumburak am April 26, 2012, 22:44:35
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.
Titel: Re: Preisänderung in Bestelldatenbank
Beitrag von: Rumburak am April 27, 2012, 15:23:50
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.......
Titel: Re: Preisänderung in Bestelldatenbank
Beitrag von: Rumburak am April 27, 2012, 15:59:01
habe:

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

im textfeld versucht, geht au net.
Titel: Re: Preisänderung in Bestelldatenbank
Beitrag von: DF6GL am April 27, 2012, 17:33:22
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.
Titel: Re: Preisänderung in Bestelldatenbank
Beitrag von: Rumburak am April 27, 2012, 22:12:54
Hallo,

habe von VBA gar keine Ahnung.
Titel: Re: Preisänderung in Bestelldatenbank
Beitrag von: DF6GL am April 27, 2012, 23:30:16
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.
Titel: Re: Preisänderung in Bestelldatenbank
Beitrag von: Rumburak am April 29, 2012, 21:59:35
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?
Titel: Re: Preisänderung in Bestelldatenbank
Beitrag von: DF6GL am April 29, 2012, 22:17:48
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...
Titel: Re: Preisänderung in Bestelldatenbank
Beitrag von: Rumburak am April 30, 2012, 11:55:50
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