Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: ide am Juli 30, 2010, 23:05:57

Titel: Aktualisierungabfrage
Beitrag von: ide am Juli 30, 2010, 23:05:57
 Guten Tag

komme gerade bei Access nicht weiter. Hbe da wohl irgendwie ein Brett vorm kopf

ich habe eine Tabelle "Artikel" mit:

Artikelnummer
Artikelbezeichnung
Marke
Mindestbestand
Lagerbestand

nun will ich über ein Formular den Lagerbestand aktualisieren. Dafür brauche ich eine Abfrage. Habe da die Aktualisierungsabfrage genommen. Dort habe ich aus der Tabelle "Artikel" die Felder Artikelnummer und Lagerbestand genommen. Beim Ausführen möchte ich über Parameter zuerst nach der Artikelnummer gefragt werden die ich dann eintippe und dann nach der Anzahl die ins Lager kommt. Das werde ich auch gefragt. Aber ich weiß nicht wie ich das mit einer Formel dann auch so hinbekomme, dass bei diesem Artikel dann auch der Lagerbestand angepasst wird.


__________________
Gruß Steffen
Titel: Re: Aktualisierungabfrage
Beitrag von: MzKlMu am Juli 30, 2010, 23:21:49
Hallo,
wenn Du die DB noch umbauen kannst, solltest Du das tun. In einer DB speichert man keinen Lagerbestand. Ein Lagerbestand ist die Summe der Artikelmengen wenn man mit einem Vorzeichen für die Menge arbeitet. Zugang positiv und Abgang negativ.
Wenn man in einer über die Artikel gruppierten Abfrage die Summe der Mengen ausgibt, hat man automatisch immer den aktuellen Bestand.

Eine Aktualisierung des Feldes Bestand wird dann überflüssig und das Feld kann in der Tabelle ersatzlos gelöscht werden.

Falls Du dem näher treten willst, hätte ich eine kleine Beispieldb für Dich.

Titel: Re: Aktualisierungabfrage
Beitrag von: ide am Juli 30, 2010, 23:46:28
ja ist alles noch änderbar. Klingt auf jedenfall interessant. Aber wenn ich es nicht falsch verstanden habe, habe ich dann eine Tabelle wo ein Artikel mehrmals drin steht ? Bloß weiß ich nicht wie ich das dann mit zugängen und abgängen regel.

Aber auf das Beispiel würde ich mich auf jedenfall freuen
Titel: Re: Aktualisierungabfrage
Beitrag von: MzKlMu am Juli 31, 2010, 09:35:43
Hallo,
anbei mal ein Beispiel.
Es ist einfach aufgebaut und soll nur verdeutlichen wie man Bestände ermittelt.
Im "frmHauptForm" werden zu einem Artikel die Lagerbewegungen erfasst. Mit der Vorgangsart wird gleichzeitig ein Multiplikator ermittelt, der das zur Vorgangsart passende Vorzeichen für die Menge berechnet. Diese Rechenmenge wird zur Bestandsermittlung verwendet. Bei der Mengeneingabe wird also immer einfach eine positive Zahl erfasst. Der Rest geht automatisch.
Im Formular ist auch eine Bestandüberwachung eingebaut, mit einer Meldung.
Es gibt auch noch 2 Abfragen, deren Titel sagen was diese machen.
Das Ganze wird mit sehr wenig VBA realisiert.

Wenn Du Ratschläge haben willst, wie das in Deine DB einzubauen ist, sind mehr Infos zu Deiner DB notwendig.

Aufgabe
Tabellen
Beziehungen/Datenmodell

[Anhang gelöscht durch Administrator]
Titel: Re: Aktualisierungabfrage
Beitrag von: ide am Juli 31, 2010, 14:21:44
Vielen Dank

Habe das System jetzt dann soweit verstanden.

Allerdings habe ich ein neues Problem. Ich habe mal die Datenbank angefügt. Als Artikel habe ich einfach mal Parfüm genommen. Nun möchte ich das wenn mann auf das Plus bei einer Artikelnummer klickt das dort alle Buchungen angezeigt werden zu dem Artikel. Allerdings meckert er das es irgendwie zu komplex sei.



[Anhang gelöscht durch Administrator]
Titel: Re: Aktualisierungabfrage
Beitrag von: oma am Juli 31, 2010, 16:16:45
Hallo,

dein Tabellenmodell hat noch "Reserven"  ;D

Du solltest die Primär- und Fremdschlüssel  besser mit Zahlen (ID-Werte  als Autowerte) ausstatten.

ZitatNun möchte ich das wenn mann auf das Plus bei einer Artikelnummer klickt das dort alle Buchungen angezeigt werden zu dem Artikel.

Diese Arbeitsweise soll in der fertigen DB garnicht vorkommen, da alle Dateneingaben/Änderunen/Ansichten über Formulare erfolgen muss!

In der beigefügten DB klappt nun aber dein gewünschter Klick in die Tabelle tblArtikel

Gruß Oma

[Anhang gelöscht durch Administrator]
Titel: Re: Aktualisierungabfrage
Beitrag von: ide am Juli 31, 2010, 18:53:03
ok danke

das ändern aktualisieren etc. wollte ich auch über ein formular laufen lassen. Nun habe ich ein Textfeld erstellt aber es kommt immer "#Name?"
Titel: Re: Aktualisierungabfrage
Beitrag von: MzKlMu am Juli 31, 2010, 19:40:15
Hallo,
ZitatHabe das System jetzt dann soweit verstanden.
Aber so gut wie nichts umgesetzt.
Wo ist der wichtige Multiplikator in der Vorgangstabelle? Ohne diesen funktioniert die Bestandsermittlung nicht.
Das ganze Datenmodel stimmt hinten und vorne nicht und hat mit meinem Vorschlag nichts gemeinsam.
Du kannst Doch nicht die Buchungsnummer und die Artikelnummer in Beziehung setzen, was soll das für einen Sinn machen?
Auch die Schlüssel solltest Du wie in meinem Beispiel machen. Primärschlüssel Autowert und Fremdschlüssel Zahl.
Texte sind als Primärschlüssel nicht geeignet und ein Name (Marke) schon gar nicht.
Die Nachschlagefelder in den tabellen sind von Übel und zu entfernen, da komplett überflüssig. In Formularen kannst Du diese problemlos verwenden.
usw. usw.

Falls Interesse baue ich es um. Aber nur 1x.  ;D

Nähere Infos zu den Nachschlagefeldern in Tabellen:

Access Anfänger: Die Nachteile von Nachschlagefeldern

aus DBWiki, dem Datenbank-Entwickler-Wiki

Man sollte Nachschlagefelder in Tabellen vermeiden, denn

   1. Ein Nachschlagefeld verbirgt den eigentlichen Feldinhalt. Wenn man beispielsweise eine Tabelle in Datenblattansicht öffnet, wird ein Firmenname dargestellt, obwohl in Wirklichkeit im Feld die Kundennummer steht, und der Firmenname aus einer anderen Tabelle stammt. Nachschlagefelder verhindern, dass Datenbanken sauber durchstrukturiert angelegt werden.

   2. Eine Abfrage, die das Nachschlagefeld verwendet und nach dem dargestellten Wert sortieren soll, funktioniert nicht. So wird im obigen Beispiel nicht nach dem Firmennamen, sondern nach der Kundennummer sortiert. Ebensowenig funktioniert die Angabe des Werts als Kriterium - auch hier müsste man die Nummer anstelle des Namens verwenden, um Ergebnisse zu erhalten. Wenn man den Wert aus einer Wertliste eines Kombinationsfelds auswählt, kann es passieren, dass gültige Daten mit falschen Werten überschrieben werden.

   3. Das Nachschlagefeld beinhaltet eine (intern angelegte) Beziehung zwischen den Tabellen sowie die Anlage zusätzlicher Indizes, die in aller Regel überflüssig sind und die Datenbank unnütz aufblähen. Auch kann es vorkommen, dass man auf diese Weise die maximal zugelassene Anzahl von Indizes je Tabelle unwillentlich überschreitet.

   4. Ein Kombinationsfeld auf der Basis eines Nachschlagefelds kann bei Filterung des Formulars dazu führen, dass der Filter mit dem Formular gespeichert wird. Beim nächsten Öffnen des Formulars fehlt der Wert und wird nachgefragt, was wiederum zu einem Fehler führt.

   5. Berichte, deren Datenherkunft Nachschlagefelder enthält, benötigen Kombinationsfelder zu deren Darstellung, die den Bericht langsam und ineffizient machen können.

   6. Die Datenbank kann nicht vernünftig von außen abgefragt (beispielsweise in Form einer Datenquelle eines Word-Serienbriefs) oder exportiert werden, da die Nachschlagefelder nicht nach außen gereicht werden.

   7. Wenn man das Access-Sicherheitssystem verwendet, reichen die Berechtigungen oft nicht aus, um die Nachschlagefelder mit Inhalt zu füllen, was zu schwer nachzuvollziehbaren Fehlern führt. Das gilt insbesondere, wenn man aus Sicherheitsgründen mit Abfragen mit "WITH OWNERACCESS OPTION" arbeitet.[/quote]

DBWIKI ist  zur Zeit nicht mehr Online, daher als Zitat.
Titel: Re: Aktualisierungabfrage
Beitrag von: oma am Juli 31, 2010, 20:13:58
Hallo Steffen,

du solltest immer versuchen, dass zu realisieren, was wir dir vorschlagen. Wenn du es dann nicht umsetzen kannst, genau nachfragen.

Durchdenke noch einmal alle Vorschläge!!

und was sollen wir anfangen mit:

ZitatNun habe ich ein Textfeld erstellt aber es kommt immer "#Name?"


Gruß Oma
Titel: Re: Aktualisierungabfrage
Beitrag von: ide am August 01, 2010, 04:27:06
ok dann habe ich wohl wirklich etwas missverstanden und noch nicht richtig umsetzten können. Aber anhand von meiner Datenbank kann man ja schon mal zumindest erkennen was für Tabellen ich gerne hätte, oder ?  :-\

Nunja nun wollte ich dann über ein Formular folgende möglichkeiten haben. Einmal, dass ich ein komplett neuen Artikel hinzufügen kann in die Tabelle Artikel und dann am besten nicht von alleine Geschlecht, Marke schreiben muss sonder irgendwie auswählen kann. Dann als zweites irgendwie ein Befehlsbutton der dann eine Möglichkeit bietet, bei einem Artikel ein Lagerzugang zu verbuchen und das gleiche auch nochmal in umgekehrter Reihenfolge, also ein Lager Ausgang.

Aber so wie ich das nun verstanden habe bin ich davon wohl noch weit enfernt? Oder ist doch noch nicht Hopfen und Malz verloren ?
Titel: Re: Aktualisierungabfrage
Beitrag von: MzKlMu am August 01, 2010, 09:08:50
Hallo,
mal zunächst ohne Worte.

Bei Fragen bitte melden.

Noch eine Frage:
Zitatbei einem Artikel ein Lagerzugang zu verbuchen und das gleiche auch nochmal in umgekehrter Reihenfolge, also ein Lager Ausgang.
Zu was ?  Ein Artikel hat einen Zugang und einen Ausgang, aber doch nicht beides im Zusammenhang.


[Anhang gelöscht durch Administrator]
Titel: Re: Aktualisierungabfrage
Beitrag von: ide am August 01, 2010, 13:15:15
Zitat von: MzKlMu am August 01, 2010, 09:08:50

Noch eine Frage:
Zitatbei einem Artikel ein Lagerzugang zu verbuchen und das gleiche auch nochmal in umgekehrter Reihenfolge, also ein Lager Ausgang.
Zu was ?  Ein Artikel hat einen Zugang und einen Ausgang, aber doch nicht beides im Zusammenhang.


Ersteinmal Danke.

Zu deiner Frage. Ja hatte mich da irgendwie komisch ausgedrückt

EDIT: Wow danke das ist genau so wie ichs gebraucht habe. Aber bei der Tabelle Artikel steht auch nochmal eine Spalte Artikelnummer die leer ist. Hat die einen Sinn oder kann ich die entfernen ?

Und dann hätte ich noch einen Frage zur Funktion des Formulars. Wie kommt das z.b zum Stande das wenn man auf den Button "neuen Artikel hinzufügen" klickt, ein neuer Datensatz erstellt wird ? Unter Eigenschaften konnte ich nichts sehen welches diese Handlung auslöst und Makros sind ja auch keine vorhanden.
Titel: Re: Aktualisierungabfrage
Beitrag von: MzKlMu am August 01, 2010, 18:48:32
Hallo,
ein Primärschlüssel sollte in der regel keine Bedeutung haben. Daher nehme ich als Primärschlüssel fast immer einen Autowert. Ein Artikelnummer kann so völlig unabhängig von den Beziehungen gepflegt werden. Wenn Du keine echte Artikelnummer hast, kannst Du das feld auch löschen. Es hat sonst keine Bedeutung. Aber dann auch im Formular löschen. Oder lassen und wenn Du eines Tages eine Artikelnummer hast rein schreiben, wenn nicht einfach leer lassen.

Zitatund Makros sind ja auch keine vorhanden.
Aber VBA Code. Wenn Du auf die 3 Punkte klickst rechts in der Ereignisszeile "Beim Klicken" landest Du im VBA Editor. Dann siehst wie es geht.