Aufbau eines Einkaufspreis-Vergleiches

Hallo Andreas,

wollte mich nur schnell melden, ich komme heute leider nicht dazu, das durchzuarbeiten.

Mengenangaben selbst brauche ich nicht unbedingt, da das Ganze ja kein Haushaltsbuch o.ä. sein soll, sondern eher eine Art Nachschlagewerk, was hat wann wo wie viel gekostet.

Ich lege mir auf mein Frühstücksbrot gerne eine Scheibe Salatgurke. D.h. ich kaufe tatsächlich nahezu jede Woche eine Salatkurke. Ob ich nun bspw. Mitte August letzten Jahres zwei gekauft habe, weil es mal zum Grillen einen Gurkensalat gab, ist mir eigentlich egal. Mich interessiert nur, hat eine 0,60€ oder 2,50€ gekostet.

Wenn Du aber der Meinung bist, für den Lerneffekt bzw. das Verständnis wäre das besser, nehme ich gerne Ratschläge an und baue das ein.
Man kann ja die Eingabeerforderlichkeit auf nein bzw. Standardmenge 1 stellen.
 
Werbung:
Hallo,
Du kommst der Sache näher.
Die Beziehungen stimmen jetzt und werden so funktionieren.
In der Tabelle Einkauf_pos ist noch ein Fehler. Die EinkPosID ist zwar (Teil)Pimärindex darf aber nicht Autowert sein. Das hätte zur Folge, dass man nicht innerhalb einer EinkaufsID (Kopf) laufend durchnummerieren könnte. Die laufende PosNr muss man erstmal bei der Eingabe manuell vergeben. (Kann man aber dann per selbstgebauter Funktion lösen.) Ich würde die EinkaufID in der Tabellenentwurfansicht auch nach oben vor die EinkPosID ziehen, damit die interne Sortierung immer richtig ist.
Ein weiterer Punkt ist noch, dass einige Felder, die nicht Primärindex sind, indiziert sind. Diese Indizes würde ich entfernen, bzw die Felder auf nicht indiziert setzen.
Als letzten Punkt: Du hast das Feld Mengeneinheit in der tbl_Produkte zwar auf Zahl geändert, aber noch nicht umbenannt in MengenID. Es ist ja nun der Fremdschlüssel, passend zur MengenID in der tbl_Mengeneinheiten.
Bei weiteren Fragen, die nicht per Tutorial zu klären sind, gerne melden.
 
Guten Morgen,

ich habe die Korrekturen vorgenommen und ein Formular auf Basis der Abfrage erstellt.
Das Formular kann zwar optisch und bedientechnisch noch ein paar Optimierungen vertragen, aber zum Testen reichts für mal so.

Ein relevantes Problem habe ich nach Eingabe ein paar Testdaten festgestellt.
Ich kann nicht verschiedene Läden eingeben. Sprich in der Tabellenansicht der Abfrage steht immer der gleiche Laden, auch wenn ich das dann manuell für ein Produkt ändere, ändern sich alle.
 

Anhänge

Hallo,
mit den einfachsten und grundlegenden Dingen sollte man sich immer mal wieder beschäftigen. Deshalb hab ich heute mal etwas intensiver an der DB gearbeitet. Schau sie Dir einfach mal an. Sicher wirst Du einige Fragen haben, wie so einige Dinge funktionieren. Die beantworte ich dann gerne.
Es gibt sicher noch vieles zu ergänzen und verbessern. Und fehlerfrei ist die DB sicher auch nicht.
Aber so gibts mal eine Grundlage.

Ein paar Erläuterungen dazu:
Die Tabellenverknüpfungen waren ja schon zu 90% richtig.
Ebenso die Tabellen, wobei ich es mir nicht verkneifen konnte das Mengenfeld wieder einzubauen.

Die Abfragen und Formulare habe ich nun nochmal neu gemacht, bzw., wo es für die Funktion reichte, ergänzt.
Da Du mit Haupt- und Unterformular arbeitest, gibt es für beide jeweils eine eigene Abfrage. Haupt- und Unterformular sind dann über die EinkaufsID verknüpft, was Access dazu veranlasst sie vernünftig zu synchronisieren.
Das Hauptformular rufe ich direkt beim Start auf. (Eintrag in den Datenbankoptionen)

Unten im Formularfuß gibt es ein Summenfeld, damit man wenigstens mal den Bon vergleichen kann, ob man alles richtig eingegeben hat.

Die Auswahlfelder für Laden, Produkt und Mengeneinheit habe ich zu Listenfeldern gemacht, deren Grundlage jeweils die Tabellen sind.
Es können nur Werte ausgewählt werden, die auch in der jeweiligen Untertabelle vorhanden sind. Es kann aber direkt in die Tabellen zur Eingabe neuer Werte verzweigt werden. (Auf Pfeil klicken und unten das Wertefeld anklicken.)

Die Positionsnummern pro Einkauf werden automatisch vergeben. Das wird über eine kleine VBA-Prozedur des Formulars gesteuert.
(Ereignisprozedur "vor Aktualisierung". In der Prozedur "nach Löschbestätigung" werden die Positionen neu durchnummeriert, falls eine Position gelöscht wird.)
Prozeduren liegen auch hinter den Aufrufen der gefilterten Abfragen über die Buttons: "Neuer Einkauf", "Einkäufe bei einem bestimmten Laden" und, das was Du am Anfang ja bereit haben woltest: "Preisübersicht zu einem jeweiligen Artikel"
.
Viel Spaß damit und mal sehen, was Dir jetzt noch so einfällt, was man mit der DB noch so alles anstellen kann.
 

Anhänge

Hallo Andreas,

bin leider erst heute dazu gekommen mich wieder darum zu kümmern. Gehöre noch 28 Jahre zum arbeitenden Volk😖.

Das sieht sehr schön aus, so habe ich mir das auch vorgestellt.
Vielen Dank dafür.

Ich werde mich die nächsten Tage mit den Berichten und Filtern beschäftigen und sobald ich mal einen "brauchbaren Entwurf" habe, werde ich mich hier selbstverständlich zurückmelden. Auch muss ich erstmal analysieren und verstehen, was Du schönes "gebastelt" hast (das meine ich jetzt positiv).

Kann aber auch wieder etwas dauern, habe mich damit noch gar nicht befasst, denn was nutzt eine Ausgabe, wenn die Eingabe nicht stimmt.
 
Guten Tag an alle, da bin ich wieder.

habe mir die DB mal genauer angesehen, ob ich alle verwendeten Objekte und Abhängigkeiten verstanden habe weiß ich noch nicht.

Ich habe das ganze auch mal etwas optisch aufgearbeitet mit Menüführung.

Die Abfrage "qAusgabe" soll dann ihre Kriterien über "frm_AusgabeMenu" erhalten.
Für meine Zwecke reicht es, wenn ich nur die Info eines Produktes erhalte, das über das Dropdown-Menü ausgewählt wird.
Wie man jetzt die Kriterien an die Abfrage übergibt, weiß ich noch nicht.

Bevor ich an diesen Schritt und die weiteren gehe, wäre mir eine Rückmeldung recht, ob da an sich so passt. Nicht dass der Vormittag umsonst war.

Gruß
Robert
 

Anhänge

Hallo,
schön, dass Du weiter am Ball bist.

Um ein Kriterium von einem Formularfeld in eine Abfrage zu übergeben kannst Du einfach einen Verweis auf das Formularfeld in den Kriterienausdruck schreiben:

Code:
[Formulare]![frm_AusgabeMenu]![Kombinationsfeld1]

Im ersten Moment scheint das nicht zu funktionieren. Das liegt jedoch daran, dass Du das Kombifeld nicht auf die ProduktID sondern auf den Produktnamen gefiltert hast. Um den Fehler zu beheben muss in der Eigenschaft "gebundene Spalte" des Kombinationsfeldes auf 2 gesetzt werden. Sonst vergleichst Du in der Abfrage Äpfel mit Birnen.

Schönen Sonntag noch.
 
Hallo zusammen, da bin ich wieder.

Sorry, hatte letzte Woche keine Zeit.

Also die Übergabe der Produktauswahl funktioniert, so dass jetzt mit Klick auf Bericht ein Report mit dem ausgewählten Produkt erstellt wird.
Allerdings habe ich noch ein Problem und eine Frage.

Das Problem ist, dass das Datum nur mit Rauten angezeigt wird und nur sichtbar wird wenn ich darauf klicke. Wird ein anderes Datum genommen verschwindet das erste wieder.

Die Frage ist, wie ich die Sortierungswünsche der Optionsgruppe (ist momentan noch ohne Funktion) an die Abfrage weitergebe.
Wirklich Info dazu habe ich nicht gefunden. In sämtlichen Tutorials, egal ob Text oder Video, wurde pro Sortierung eine Abfrage angelegt.
Wäre in meinem Fall nicht schlimm, da müsste ich versuchen wie ich die Auswahl der Optionsgruppe an den Button weitergebe, so dass der Bericht über die entsprechende Abfrage erstellt wird.

Aber eleganter wäre es natürlich den Wert direkt übergeben zu können.

Gruß
Robert
 

Anhänge

Du kannst dem Befehl zum Reportöffnen OpenArgs mitgeben, was Du ja offensichtlich schon bemerkt hast. Bei der Auswertung einer Optionsgruppe ist es nicht notwendig jeden einzelnen Optionsbutton abzufragen, sondern es gibt auch einen Verweis auf die Optionsgruppe. Hier ist das wohl "Rahmen8". Der gibt den ausgewählten Optionswert wieder. Hier 1 bis 3. In Abhängigkeit davon kannst du das OpenArg füllen.
Die Auswertung des Openargs erfolgt dann im OpenEvent des Reports, indem Du da die Sortierung entsprechend ausführst. Da gibts sowas wie Me.OrderBy = Feld1, Feld2....
 
Moin Moin,

leider komme ich hier nicht mehr mit. Ich habe keine Ahnung welcher Syntax wo hin muss.
Hab jetzt etliche Tutorials und auch die Microschrott-Learn-Seiten angesehen, aber alle Beispiele sind völlig anders.

Am einfachsten wäre, ich kopiere die qry 4x mit der entsprechenden Sortierung und mache 4 Buttons zum Öffnen des Reports.
Aber eigentlich will ichs ja richtig machen.

Auch das Problem dass im Report das Datum nur mit "######" angezeigt wird habe ich noch nicht gelöst.
 
Hallo Robert,

nehme aus der Abfrage "qAusgabe" die Sortierungen raus. Das Kriterium Formulare!..... muss drin bleiben, damit das gewählte Produkt aus der Startmaske gefiltert wird.

Entferne aus dem Bericht die Gruppierung nach Produkt. (Siehe in der Entwurfsansicht des Reports unten, anklicken und ENTF drücken). Die macht keinen Sinn, weil Du ja eh nur ein Produkt in der Startmaske auswählst.

Dann gebe im Ereignis "Beim Öffnen" die folgende Ereignisprozedur ein.

Code:
Private Sub Report_Open(Cancel As Integer)

 Me.OrderByOn = False  'Sortierung des Reports neu einstellen
 
 Select Case Me.OpenArgs
         Case "1"   'Datum aufwärts
              Me.OrderBy = "[EinkDatum] ASC"
         Case "2"   'Datum abwärts
              Me.OrderBy = "[EinkDatum] DESC"
         Case "3"   'Preis aufwärts
              Me.OrderBy = "[Preis] ASC"
         Case "4"  'Preis abwärts
              Me.OrderBy = "[Preis] DESC"
         Case Else
              MsgBox "Fehler bei Sortierungsoptionen", vbCritical, "Berichtsfehler"
  End Select

  Me.OrderByOn = True

End Sub

Nun sollte der Bericht je nach Auswahl der Sortierung in der Startmaske sortiert ausgegeben werden.


Warum im Datum nur "#####" angegeben wird. Wahrscheinlich ist schlicht das Ausgabefeld zu klein oder falsch formatiert.
 
Hallo Andreas,

jetzt bin ich schon mal ein Stück weiter.

Das mit dem Datum war tatsächlich die Feldbreite, hatte die im Vorfeld schon breiter gemacht, aber wohl nicht weit genug.

Die Argument-Übergabe funktioniert auch.
Habe zur Kontrolle eine msgbox eingebaut, die den Filterwert anzeigt.

Allerdings geht die Sortierung noch nicht, es ist immer die gleiche Reihenfolge, egal welcher Wert eingestellt ist.
Habe zum testen das Toilettenpapier genommen, da da die meisten Einträge sind.
 

Anhänge

Entferne aus dem Bericht die Gruppierung nach Produkt. (Siehe in der Entwurfsansicht des Reports unten, anklicken und ENTF drücken). Die macht keinen Sinn, weil Du ja eh nur ein Produkt in der Startmaske auswählst.
Das hast Du noch nicht gemacht. Deshalb funzt die Sortierung nicht. Die Gruppierung muss in der Entwurfsansicht des Berichts gelöscht werden.
(Kreuz ganz rechts)

1742768027418.webp
 
Werbung:
Moin Moin,

sorry hab ich vergessen, geht aber leider trotzdem noch nicht.
Hab jetzt ne Weile rumprobiert aber leider ohne Erfolg.

Der Bericht geht zwar auf, in der MsgBox wird auch der richtige Wert übertragen, aber die Sortierreihenfolge ist immer die gleiche.
 

Anhänge


Schreibe deine Antwort....
Zurück
Oben