Formular in Access

Liebe/-r Experte/-in,

in einer Access DB will ich in einem Formular folgendes erreichen. Aus einer Liste an Produkten soll über ein Kombinationsfeld, welches ich schon habe, ein Produkt ausgewählt werden. Die Daten stammen aus einer Tabelle. Gespeichert wird die Produktnummer zur eindeutigen Zuordnung. Im benachbarten Feld soll der Preis des Produktes ebenfalls aus der Tabelle automatisch angezeigt werden. Diesen Preis will ich aber ändern können und in jedem Fall in einer neuen Tabelle abspeichern. Damit ich weiss, was ich zu welchem Preis angeboten habe. Wie kann mann das Problem lösen? Von Proammierung habe ich nur ganz wenig Ahnung ansonsten kenne ich mich mit Access recht gut aus.
Danke und beste Grüße aus dem Südharz

Frank Seiler

Hallo Frank,

am beten ist es vermutlich, du schaust dir mal folgendes an:

http://www.proteus-solutions.de/extern/demo.zip

Das gibt dein Problem wohl wieder, wenn ich es richtig verstanden habe.

Sollte es darüber hinausgehen, so kommst du um VBA-Programmierung nicht drum rum.

Gruß
Proteus

Hi Frank,

du must die Daten in Ungebundene Felder in deinem Formular beim öffnen reinladen. Nach auswahl und Preis eingabe must du die Daten in eine Tablle wegschreiben.

oder

du füllst eine Temporäre Tabelle mit allen Produkten und Preisen und einem J/n Feld für auswahl
Nach auswahl schreibst du alle Sätze mit J in eine AuftragsTabelle so hast du den Preis den du willst.

Solltest du noch Fragen haben kannst du auch anrufen.

Tel. 08989340571

Gruss

Hans

Hallo Proteus,

das Beispiel trifft den Angel auf den Kopf. Ich werde jetzt mal versuchen, die privatesub auf meine DB umzuschreiben.
Vielen Dank

Frank Seiler

Hallo Frank,

prinzipiell sollte sich das Problem ohne Programmierung lösen lassen. Es hängt allerdings davon ab, wie Du das Formular aufgebaut hast.

Aus einer Liste an Produkten soll über ein
Kombinationsfeld, …, ein Produkt ausgewählt werden.
Im benachbarten Feld soll der Preis des Produktes
ebenfalls aus der Tabelle automatisch angezeigt werden.

Wie hast Du das Formular bisher erstellt?

Wenn die Formularfelder auf der gleichen Tabelle basieren, kann ein Textfeld in ein Kombinationsfeld umgewandelt werden (Entwurfsmodus, Kontextmenü auf dem Textfeld). Im Assistenten ist die Option „Einen Datensatz im Formular … suchen“ und danach die Primärschlüsselspalte auszuwählen. Access generiert in dem Fall den nötigen VBA-Code automatisch.
Wenn nun im Kombinationsfeld das Produkt (und damit auch der Primärschlüssel) gewählt wird, dann werden in den anderen Feldern des Formulars die Daten zum gewählten Datensatzes angezeigt.

Hast Du das Kombinationsfeld manuell hinzugefügt? Dann muss der nötige VBA-Code von Hand hinzugefügt werden. Wähle im Entwurfsmodus die Eigenschaften zum Kombinationsfeld und wähle das Ereignis AfterUpdate. Nach Klick auf […] öffnet sich der VBA-Code-Editor mit einer generierten leeren Sub-Prozedur. Hier wäre folgender Code anzugeben:

Me![txtPreis] = DLookup("Preis", "tblProdukte", "ProduktID = " & Me![cboProdukt])

Dann Speichern und das war’s.
Die DLookup-Funktion liefert übrigens das gleiche Ergebnis wie folgende SQL-Anweisung

SELECT Preis FROM tblProdukte WHERE ProduktID = Formular![cboProdukt]

[txtPreis] ist hier der Name des Preis-Feldes im Formular
[cboProdukt] ist hier der Name des Kombinationsfeldes im Formular
Ich denke, Preis, tblProdukte und ProduktID erklären sich von selbst. :wink:

Diesen Preis will ich aber ändern können …

Der aktuelle Preis kann jederzeit geändert werden, da das Formular einen bestimmten Datensatz der Tabelle anzeigt. Nach Wechsel des Datensatzes o. auch Schließen des Formulars wird der neue Wert in der Tabelle gespeichert. Der alte Wert wird aber überschrieben.

… und in jedem Fall in einer neuen Tabelle abspeichern.

Das impliziert allerdings, dass es mehrere/unterschiedliche Preise zum Produkt gibt. Produkttabelle und Preistabelle stehen in einer sogen. Master-Detail-Beziehung. Das sollte im Beziehungsfenster auch explizit modelliert werden. Dann lässt sich das Problem mittels Unterformular lösen. Dabei ist einiges zu beachten. Daher verweise ich mal auf folgende Beschreibung:

https://office.microsoft.com/de-ch/access-help/erste…

Die Beschreibung ist für Access 2007, sollte sich aber leicht auf andere Versionen anwenden lassen.

Haupt- und Unterformular sind über Primar- und Fremdschlüssel der zugehörigen Tabellen verknüpft. Wenn Du nun im Hauptformular ein Produkt im Kombinationsfeld (und damit den Primärschlüssel der Mastertabelle, z.B. tblProdukte) auswählst, werden die korrespondierenden Datensätze der Detailtabelle, z.B. tblPreise, ausgewählt und im Unterformular dargestellt. Meist wird das Hauptformular in der Einzelblattansicht und das Unterformular in tabellarischer Ansicht dargestellt. Hier sieht man dann alle Preise, die zum jeweiligen Produkt gespeichert wurden und kann auch neue Preise hinzufügen.

Ich hoffe, das hilft Dir erstmal weiter. Wenn Du noch Fragen hast, immer her damit. Gib bitte auch die Access-Version an.

Grüße,
Peter

Hallo,

sehr umfangreiche Antwort - herzlichen Dank.
Muss ich mir in Ruhe ansehen und hoffe, es damit hinzubekommen.

Viele Grüße aus dem Südharz

Frank Seiler