Access-o-Mania

Access-Forum => Formular => Thema gestartet von: Chris777777 am März 06, 2018, 12:35:10

Titel: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Chris777777 am März 06, 2018, 12:35:10
Hallo zusammen,
ich habe ein Formular u. a. mit den Feldern: Kunde, Land, Behälter und Faktor erstellt. Es gibt viele verschiedene Möglichkeiten diese vier Felder auszufüllen, z.B.:
Kunde: A
Land: Belgien
Behälter: Box
Faktor: 0,4

oder

Kunde: A
Land: Belgien
Behälter: Kiste
Faktor: 1,2

Alle Kombinationsmöglichkeiten habe ich in eine separate Tabelle geschrieben. Sobald die Felder Kunde, Land und Behälter gefüllt sind und in einem weiteren Feld "Anzahl" ein Wert eingegeben wurde, z.B. 10, soll dieser Wert mit dem entsprechenden Faktor multipliziert werden. Das Ergebnis soll ich einem weiteren Feld angezeigt werden.

Ist sowas möglich?
Danke und viele Grüße,
Chris
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Beaker s.a. am März 06, 2018, 13:22:53
In die Eigenschaft "Steuerelementeinhalt" von einem weiteren Feld:
= Me.Faktor * Me.Anzahl
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: MzKlMu am März 06, 2018, 13:42:37
Hallo,
und als Hinweis: Auf eine Feldname "Anzahl" ist unbedingt zu verzichten. Je nach Formel liefert Anzahl die Anzahl der Datensätze und nicht den Eintrag im Feld. Besonders wenn man Anzahl im Steuerelementinhalt verwendet.
Bei der Formel von ekkehard oben dürfte das auch der Fall sein.
Ändere das Feld in "Menge" z.B.
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Chris777777 am März 06, 2018, 14:29:12
Hallo,
ok, den Feldnamen habe ich auf Menge geändert. Allerdings erscheint nun in dem weiteren Feld (Feldname = Übertragungswert) #Name?
Es muss doch zunächst auf die Tabelle "tblDaten" (in der alle Kombinationsmöglichkeiten wie "Kunde", "Land", "Behälter" und "Faktor" aufgelistet) zugegriffen werden oder? Sobald z.B. das Land oder der Behälter abgeändert wird, ändert sich auch der Faktor. Der Faktor wird jedoch nicht von den Benutzern eingegeben, sondern soll automatisch nach Eingabe von Kunde, Land und Behältern gezogen und mit dem Feld "Menge" multipliziert werden. Das ermittelte Ergebnis soll dann im Feld "Übertragungswert" erscheinen.
Viele Grüße,
Chris
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: MzKlMu am März 06, 2018, 14:41:51
Hallo,
von was ist denn der Faktor abhängig, vom Behälter und dem Kunden oder nur vom Behälter.

In einer Abfrage mit den beteiligten Tabellen und der Verknüpfung über die Schlüsselfelder steht auch der Faktor für Berechnungen direkt zur Verfügung.
In der Abfrage dann ein berechnetes Feld:
Übertragungswert: Faktor * Menge
Du muss darauf achten, dass Anzahl überall in Menge geändert wird, auch in Abfragen muss das angepasst werden. Das geht nicht automatisch.
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Lachtaube am März 06, 2018, 14:54:05
Klarstellung: Nicht der Feldname Anzahl sondern die (Pest-)Option Objektnamenautokorrektur ist für Fehler beim Rechnen mit dem Feld verantwortlich.
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Chris777777 am März 06, 2018, 15:11:01
Hallo,
der Faktor ist abhängig vom Kunden, Behälter und auch vom Land. Die dafür relevanten Infos habe ich in die tblDaten hinterlegt. Wenn ich z.B.
Kunde: A
Behälter: Box
und Land: Belgien
eingebe, ist der Faktor immer 0,4
Sobald für Kunde, Behälter oder Land etwas anderes eingetragen wird, ändert sich der Faktor wieder. Alle möglichen Kombinationen der drei Felder sind in der tblDaten hinterlegt. Auf diese Daten soll dann im Formular im Feld Übertragungswert zugegriffen werden. In diesem Feld muss dann eine Prüfung stattfinden, mit welchen Angaben die Felder Kunde, Behälter und Land gefüllt sind. Der entsprechende Faktor soll dann mit dem Feld Menge multipliziert werden. Das Feld Menge wird vom Benutzer individuell eingegeben.
Viele Grüße,
Chris
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: MzKlMu am März 06, 2018, 15:39:17
Hallo,
Zitat
In diesem Feld muss dann eine Prüfung stattfinden, mit welchen Angaben die Felder Kunde, Behälter und Land gefüllt sind.
da muss doch nichts geprüft werden. In der Tabelle steht das doch alles Datensatzabhängig drin.
Zeige mal ein Bild des Beziehungsfensters.
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Chris777777 am März 06, 2018, 16:17:11
Hallo,
ich lade mal die ZIP hoch. Vielleicht ist das leichter.
Viele Grüße,
Chris
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Lachtaube am März 06, 2018, 19:11:06
Hier ist eine mögliche Umsetzung für die Dateneingabe bzw. zum Navigieren.

PS: wegen unterschiedlicher Schreibweise von Hongkong (Land) vs. Hong Kong (Daten) habe ich zusätzlich ein Land Hong Kong in die Tabelle Land am Ende eingefügt, was Du löschen solltest, nachdem zuvor in der Faktorentabelle der Datensatz mit der LandId 249 auf 80 geändert wurde. Ich hab's leider erst zu spät bemerkt.
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: MzKlMu am März 06, 2018, 19:40:21
Hallo,
ich habe auch noch eine mögliche Umsetzung.
Vom Gedanke ist die ähnlich dem Vorschlag von Lachtaube. Ich habe nur vollständige Beziehungen angelegt.
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Chris777777 am März 07, 2018, 16:44:22
Hallo,
super, danke für eure Mühe. Das sieht sehr gut aus. Es gibt allerdings noch ein kleines Problem. Für manche Kunden ist keine Länder-Behälter Beziehung mit dem dazugehörigen Faktor vorhanden. Das ist auch so gewollt. Das bedeutet, dass noch mehr Kunden existieren, als in der tblDaten bzw. LKB_Faktor angegeben. Wenn ein Kunde keine Länder-Behälter Beziehung besitzt, sollen die Felder im Formular frei ausfüllbar sein bzw. mithilfe des Dropdown-Button gefüllt werden können.
Zudem wäre es schön, wenn in der Tabelle tblWA bzw. WA die Einträge aus dem Formular mit Wörtern gefüllt werden und nicht mit Ziffern. Also soll z.B. das Feld Land nicht mehr mit der LandID (z.B.88) gefüllt werden, sondern mit Israel.
Viele Grüße,
Chris
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: MzKlMu am März 07, 2018, 17:00:24
Hallo,
Zitat
Zudem wäre es schön, wenn in der Tabelle tblWA bzw. WA die Einträge aus dem Formular mit Wörtern gefüllt werden und nicht mit Ziffern. Also soll z.B. das Feld Land nicht mehr mit der LandID (z.B.88) gefüllt werden, sondern mit Israel.
Ist Dir nicht aufgefallen, dass es bei unseren Vorschlägen in der Tabelle tblWA keine Felder zum Land, zum Kunden und zum Behälter mehr gibt ? Wenn Du die Beziehungen angesehen hast, sollte Dir das eigentlich aufgefallen sein. Das geht auch nicht anders, in der Tabelle haben die anderen Felder nichts zu suchen.
Wenn Du die Klartexte benötigst, so ist das über eine Abfrage zu erledigen. Alles andere würde dem Sinn einer Datenbank widersprechen.

Zitat
Wenn ein Kunde keine Länder-Behälter Beziehung besitzt, sollen die Felder im Formular frei ausfüllbar sein bzw. mithilfe des Dropdown-Button gefüllt werden können.
Welche Felder willst Du dann frei ausfüllen ?
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Chris777777 am März 08, 2018, 14:07:09
Hallo,
das ist mir schon aufgefallen. Jedoch habe ich keine Erfahrungen mit Access und weiß dementsprechend nicht was möglich ist bzw. welche Auswirkungen eine Einstellung hat.

Wie muss ich denn die Abfrage gestalten, damit ich Klartexte erhalte?

Sobald eine Land-Kunde-Behälter Beziehung nicht in der tblDaten gelistet ist, sollen alle anderen Felder wie Land, Kunde oder Behälter ohne Begrenzung füllbar sein. Hier gibt es dann auch keinen Faktor und das Übertragungsfeld soll einfach leer bleiben.

Viele Grüße,
Chris
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: MzKlMu am März 08, 2018, 14:20:25
Hallo,
Zitat
Hier gibt es dann auch keinen Faktor und das Übertragungsfeld soll einfach leer bleiben.
Soll in dieses Feld dann manuell etwas eingetragen werden (können) ?
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Lachtaube am März 08, 2018, 14:48:53
Ich würde dann nur eine Kunden-Ländertabelle mit der WA verknüpfen und nach deren Auswahl nachschauen, ob für die Kombination ein Faktor in einer anderen Tabelle (zusammengesetzt aus der neuen Kunden-Länder Tabelle und den bisherigen Faktoren) vorliegt; falls ja, den Faktor auslesen und in die WA-Tabelle eintragen; falls nein, den Eintrag vom Anwender vornehmen lassen.
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Chris777777 am März 12, 2018, 09:21:20
Hallo,
die Möglichkeit im Übertragungsfeld etwas eintragen zu können, muss nicht vorhanden sein.
In den Feldern Land, Kunde, Behälter müssen Eintragungen möglich sein.
Viele Grüße,
Chris
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: MzKlMu am März 12, 2018, 09:43:47
Hallo,
Zitat
Land, Kunde, Behälter müssen Eintragungen möglich sein.
Aber das kann doch nicht unabhängig sein. Du könntest ja völlig unlogische Kombinationen Kunde zu Land wählen, also den deutschen Kunden Meier in Bulgarien ansiedeln.
Ist das wirklich gewünscht ?
Wenn nicht, muss in der Datentabelle eine Kunde-Land Kombination angelegt sein.

PS:
Hier zeigt sich mal wieder, dass man bei einer Frage immer alle Randbedingungen schildern sollte. Nach den neuesten Hinweisen muss das bisherige Datenmodell zumindest in Teilen wieder über den Haufen geworfen werden.
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Chris777777 am März 12, 2018, 09:53:16
Hallo,
sry, hätte ich gleich mit angeben sollen...
Ich weiß, dass es unlogisch klingt, ist aber wirklich so gewollt.
Sprich: Land-Kunde-Behälter Beziehung vorhanden, Berechnung eines Wertes im Übertragungsfeld soll mithilfe des Faktors stattfinden.
Sofern keine Land-Kunde-Behälter Beziehung hinterlegt ist, soll eine manuelle Eingabe möglich sein und das Übertragungsfeld frei bleiben.
Viele Grüße,
Chris
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: MzKlMu am März 12, 2018, 10:32:09
Hallo,
dann muss alles wieder über den Haufen geschmissen werden.
Die Tabellen Kund, Land und Behälter müssen jetzt doch als Fremdschlüssel in die Tabelle WA.
Nach Auswahl der 3 Werte muss per DLookup geprüft werden, ob es diese Kombination gibt, wenn Ja Faktor automatisch eintragen, wenn Nein Faktor leer lassen.
Der Faktor muss dann zusätzlich (redundant) auch noch in die Tabelle WA.
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Lachtaube am März 12, 2018, 12:14:43
An einer Kunden-Ländertabelle würde ich allein schon schon aus dem von Klaus vorher erwähnten Bulgarien-Beispiel nicht rütteln. Nach einer Länderauswahl kann man bei noch nicht vorhandener Zuordnung mittels NotInList Event nach Bestätigung durch den Benutzer eine neue Zuordnung jederzeit erzielen (wenn man kein eigenes Formular dafür verwenden will). Ebenso könnte mit dem Behälter verfahren werden (ob nun über eine Tabelle wie bisher oder über zwei Tabellen wäre vermutlich egal). Nur der Faktor müsste halt in der Zuordnungstabelle optional gehalten werden.
Gültigkeitsregel: >0 Oder Ist Null
Um ein Kopieren des Faktors in die Zieltabelle wird man kaum herumkommen. Das hat aber auch den Vorteil, dass sich Änderungen am Faktor nicht auf vergangene Vorgänge bei der Berechnung auswirken, und man sich damit eine Historie der Faktoren ersparen kann.
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Chris777777 am März 14, 2018, 16:36:34
Hallo,
ich probiere es gerade mittels NotInList Event:

Private Sub Kunde_NotInList(NewData As String, Response As Integer)
Response = acDataErrAdded
 Dim db As DAO.Database
 Dim rs As DAO.Recordset
 Set db = CurrentDb
 Set rs = db.OpenRecordset("tblDaten", dbOpenDynaset)

 rs.AddNew
 rs! "Kunde" = NewData
 rs.Update

 rs.Close: Set rs = Nothing
 Set db = Nothing
End Sub

Allerdings erhalte ich beim Ausdruck " rs! "Kunde" = NewData" eine Fehlermeldung.
VG
Christoph
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Beaker s.a. am März 14, 2018, 18:08:36
rs!Kunde
'oder
rs("Kunde")
'oder
rs.Fields("Kunde")
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Lachtaube am März 14, 2018, 18:10:38
Außerdem muss Response auf einen Wert gesetzt werden. Siehe auch: FAQ 4.13 (http://www.donkarl.com/FAQ/FAQ4Formulare.htm#4.13)
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Chris777777 am März 15, 2018, 13:51:13
Hallo,
auf welchen Wert muss Response gesetzt werden?

Ich erhalte immer noch die Fehlermeldung "Element in dieser Auflistung nicht gefunden" und danach wird man auf den folgenden Ausdruck verwiesen:
rs.Fields("Kunde")

Gruß,
Chris
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Lachtaube am März 15, 2018, 15:27:51
Schau doch bitte einmal in der OL Hilfe unter ComboBox.NotInList-Ereignis (Access) (https://msdn.microsoft.com/de-de/vba/access-vba/articles/combobox-notinlist-event-access?tduid=(e2bd265ec87b3f39d0a48b9cba24ad7b)(81561)(686431)(at104517_a107739_m12_p5417_cDE)()) nach.
Titel: Re: Berechnung von Werten iVm der Verknüpfung von Feldern in einem Formular
Beitrag von: Beaker s.a. am März 15, 2018, 22:32:31
Zitat
Ich erhalte immer noch die Fehlermeldung "Element in dieser Auflistung nicht gefunden"
Na dann wird das Feld wohl anders heissen; - musst du noch mal in die
Entwurfsansicht der Tabelle schauen.