Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: yme24 am Januar 31, 2019, 08:14:55

Titel: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Januar 31, 2019, 08:14:55
Hallo zusammen,
ich muss vorweg schicken, ich habe bisher nur triviale Datenbanken erstellt also habt bitte Nachsicht wenn ich mich mal mit Begriffen vertue oder zweimal Nachfrage.

Ich sitze zur Zeit an einer Datenbank in der Prüfberichte mit Messergebnissen eingegeben werden sollen.
Einer der Messwerte führt zu einer Berechnung, die ich in einer Auswahlabfrage auch bereits realisiert habe.
Beispiel:
Messwert X führt zu Ergebnis 100; Wert Y zu 200, usw.
Jetzt möchte ich, dass der Anwender, wenn er den Prüfbericht im Formular eingibt, das Ergebnis in einem Textfeld angezeigt bekommt. In meiner Vorstellung war das ganz einfach (Makro "beim verlassen" des Eingabefeldes für den Messwert) Ich tue mich aber sehr schwer mit der Umsetzung und suche daher eure Hilfe.

Ich vermute... dass ich einen Denkfehler in der Struktur der Datenbank habe, da durch die Auswahlabfrage ja keine Tabelle erzeugt wird - ich aber auch keine Tabellenabfrage so gebaut bekomme, dass es am Ende funktioniert.

Bin für jede Idee dankbar.

VG,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Januar 31, 2019, 08:38:08
Hallo,
verwende die Abfrage als Datenquelle für ein/das Formular. Dann wird der berechnete Wert direkt angezeigt. Mehr braucht es nicht.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Januar 31, 2019, 09:34:49
Hallo Klaus,
vielen Dank für deine Antwort.
Wenn ich die Abfrage als Datenquelle für mein Formular nehme verliere ich aber die Möglichkeit neue Datensätze einzufügen, oder?
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Januar 31, 2019, 09:38:42
Hallo,
nein, nicht zwingend, hängt von der Abfrage ab.
Man könnte aber auf die Idee kommen es auszuprobieren.  ;D
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Januar 31, 2019, 09:52:40
Ja, natürlich  ;D

Habe es eben mal eingepflegt und wie befürchtet kann ich nun tatsächlich keinen neuen Datensatz einfügen.
Das Ergebnis wird aber korrekt übernommen.
Kannst du mir sagen, was ich an der Abfrage anpassen muss um wieder neue Datensätze einpflegen zu können?

VG,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Januar 31, 2019, 10:00:03
Hallo,
Die Berechnung alleine führt nicht zu diesem Verhalten.
Zeige bitte mal die Abfrage (SQL).
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Januar 31, 2019, 10:11:18
Habe gerade nochmal die Datensatzherkunft kontrolliert... sollte m.E. passen.

Hier die Abfrage:
SELECT Prüfberichte.Kunde, Prüfberichte.Prüfbericht, Prüfberichte.Prüfdatum, Prüfberichte.CSB, IIf([CSB]<1320,2.58,0) AS [Ohne Zuschlag], Round(IIf([CSB]>1320 And [CSB]<1800,2.58*1.1,0),2) AS [Zuschlag 10%], Round(IIf([CSB]>1800 And [CSB]<2400,2.58*1.2,0),2) AS [Zuschlag 20%], Round(IIf([CSB]>2400 And [CSB]<3000,2.58*1.3,0),2) AS [Zuschlag 30%], Round(IIf([CSB]>3000 And [CSB]<3600,2.58*1.4,0),2) AS [Zuschlag 40%], Round(IIf([CSB]>3600 And [CSB]<4200,2.58*1.5,0),2) AS [Zuschlag 50%], Round(IIf([CSB]>4200 And [CSB]<4800,2.58*1.6,0),2) AS [Zuschlag 60%], Round(IIf([CSB]>4800 And [CSB]<5400,2.58*1.7,0),2) AS [Zuschlag 70%], Round(IIf([CSB]>5400 And [CSB]<6000,2.58*1.8,0),2) AS [Zuschlag 80%], Round(IIf([CSB]>6000 And [CSB]<6600,2.58*1.9,0),2) AS [Zuschlag 90%], Round(IIf([CSB]>6600,2.58*2,0),2) AS [Zuschlag 100%], IIf([Ohne Zuschlag]>0,[Ohne Zuschlag],IIf([Zuschlag 10%]>0,[Zuschlag 10%],IIf([Zuschlag 20%]>0,[Zuschlag 20%],IIf([Zuschlag 30%]>0,[Zuschlag 30%],IIf([Zuschlag 40%]>0,[Zuschlag 40%],IIf([Zuschlag 50%]>0,[Zuschlag 50%],IIf([Zuschlag 60%]>0,[Zuschlag 60%],IIf([Zuschlag 70%]>0,[Zuschlag 70%],IIf([Zuschlag 80%]>0,[Zuschlag 80%],IIf([Zuschlag 90%]>0,[Zuschlag 90%],IIf([Zuschlag 100%]>0,[Zuschlag 100%],0))))))))))) AS Betrag, Prüfberichte.ID, Prüfberichte.Nges, Prüfberichte.P, Prüfberichte.Chrom, Prüfberichte.Nickel, Prüfberichte.Kohlenwasserstoffe
FROM Kunden INNER JOIN Prüfberichte ON Kunden.Name = Prüfberichte.Kunde
GROUP BY Prüfberichte.Kunde, Prüfberichte.Prüfbericht, Prüfberichte.Prüfdatum, Prüfberichte.CSB, IIf([CSB]<1320,2.58,0), Round(IIf([CSB]>1320 And [CSB]<1800,2.58*1.1,0),2), Round(IIf([CSB]>1800 And [CSB]<2400,2.58*1.2,0),2), Round(IIf([CSB]>2400 And [CSB]<3000,2.58*1.3,0),2), Round(IIf([CSB]>3000 And [CSB]<3600,2.58*1.4,0),2), Round(IIf([CSB]>3600 And [CSB]<4200,2.58*1.5,0),2), Round(IIf([CSB]>4200 And [CSB]<4800,2.58*1.6,0),2), Round(IIf([CSB]>4800 And [CSB]<5400,2.58*1.7,0),2), Round(IIf([CSB]>5400 And [CSB]<6000,2.58*1.8,0),2), Round(IIf([CSB]>6000 And [CSB]<6600,2.58*1.9,0),2), Round(IIf([CSB]>6600,2.58*2,0),2), Prüfberichte.ID, Prüfberichte.Nges, Prüfberichte.P, Prüfberichte.Chrom, Prüfberichte.Nickel, Prüfberichte.Kohlenwasserstoffe;


Bitte keine Ohrfeigen wegen Leer- und Sonderzeichen... ich weiß die sind suboptimal  ;D

VG,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Januar 31, 2019, 10:49:24
Hallo,
bei einer solchen gruppierten Abfrage wirst Du niemals neue Datensätze anfügen können, auch nicht mit Tricks. Du benötigst also zur Anzeige und Datenerfassung getrennte Formulare.

Grundsätzlich bin ich der Meinung, dass das Datenmodell nicht passt. Wer IIf benötigt hat oftmals eine falsche Struktur angelegt.
Hast Du die Werte für die Bestandteile (Chrom, Nickel, Kohlenwasserstoffe) jeweils in einem Feld?
Mangels weitere Kenntnis der Tabellen kann ich nicht mehr dazu sagen.

Zeige mal ein Bild des Beziehungsfensters.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: Lachtaube am Januar 31, 2019, 10:49:28
Abfragen mit Gruppierung können nicht aktualisiert werden.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Januar 31, 2019, 11:10:05
Ach du lieber Himmel ich hatte es befürchtet  ::)

Wollte das ganze recht simpel halten und habe deshalb nur 2 Tabellen angelegt. "Kunde" mit den Namens- und Adressinformationen und "Prüfberichte" mit Prüfdatum, Prüfnummer und den entsprechenden Messwerten.
Dann eine 1:n Beziehung zwischen den Tabellen weil ja ein Kunde mehrere Prüfberichte bekommen und noch eine Abfrage des letzten Prüfberichts in einen Bericht gepackt und fertig war meine kleine Datenbank mit den 2 Formularen (neuer Kunde) und (Prüfberichte).

Die Sache mit dem Ergebnis aus dem Messwert kam jetzt als Anforderung neu hinzu und in meinem jugendlichen Leichtsinn habe ich gedacht (siehe erster Beitrag), dass ich das mal eben schnell reinbauen kann.

Es gibt für die Messergebnisse nur 11 Zustände, die ich zuerst in einer separaten Tabelle angelegt hatte, aber in einer Tabelle kann ich nicht rechnen, weshalb ich mich zur der Form der Abfrage mit "WENN" entschlossen habe. Schien mir der einfachere Weg zu sein.  :)

Bin gerne bereit die möglichen Zustände in eine Tabelle zu packen damit das Datenmodell sauber ist, aber ich habe leider keinen Plan wie ich 6601 mögliche Messwerte mit 11 Zuständen vergleichen kann  :-[

VG,
Martin

Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Januar 31, 2019, 11:21:19
Hallo,
Zitataber ich habe leider keinen Plan wie ich 6601 mögliche Messwerte mit 11 Zuständen vergleichen kann
ohne weitere Erläuterungen ich auch nicht.

Zeige doch mal ein Bild des Beziehungsfensters, aber so, dass alle Felder der Tabellen zu sehen sind.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Januar 31, 2019, 11:52:21
Hier das Beziehungsfenster... wie gesagt sehr einfach gehalten.  ;D

Edit: Das ist so, wie die Datenbank aktuell läuft... ohne besagte Tabelle, weil die hab ich ja nicht verwendet.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Januar 31, 2019, 12:03:54
Hallo,
da besteht erhebliches Verbesserungspotential.
- Beziehungen sollten über die ID laufen.

- Name als Feldname ist tabu (Name ist auch eine gleichnamig englische Eigenschaft, das muss geändert werden)

- Auch Feldnamen mit Sonder (% etc) und Leerzeichen sind zu vermeiden

- Beziehungen immer mit referentieller Integrität

- In das Beziehungsfenster kommen keine Abfragen. Beziehungen gibt es nur zwischen Tabellen.

- Der Kundenname ist für die Beziehung unbrauchbar (beim 2.Müller oder Meyer geht das schief)

- Die Felder für die Messwerte  (Chrom, Nickel, Kohlenwasserstoffe ggf. und weitere) müssen als je ein Datensatz in eine extra Tabelle

- Die Felder für die Messwerte  (Chrom, Nickel, Kohlenwasserstoffe  ggf. und weitere) sind in der Tabelle "tbl_Prüfberichte" überflüssig

- Ebenso die Felder für die Zuschläge (je Zuschlag ein Datensatz)

Das war es fürs erste mal.  ;D

Was steht denn in den Felder mit den Zuschlägen ?
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Januar 31, 2019, 13:24:20
Ich könnte heulen...

Vielen Dank für deine Hilfe Klaus, ich hoffe du hast etwas Geduld mit mir, denn sooo tief stecke ich nicht in Access drin.
Beziehungen über ID... da bekomme ich eine Fehlermeldung wenn ich referenzielle Integrität aktiviere
Leer- und Sonderzeichen - weiß ich... verstanden
Beziehungen ohne Abfragen ist neu... aber ok, verstanden
Kundenname ist in diesem Fall die Wahl gewesen, da es definitiv keine doppelten gibt und auch zukünftig nicht geben kann - habs auf ID geändert
Messwerte sind nun in ihrer eigenen Tabelle und aus der tbl Prüfberichte entfernt
In den Zuschläge-Feldern habe ich die WENN Formeln entsprechend hinterlegt (s.o. beim SQL Code der Abfrage) -> das war ja mein Workaround weil ich nicht weiß wie ich sonst die Berechnung (Feld "Betrag" in der Abfrage "CSB Zuschlag" ist auch eine "WENN" Formel und gibt den Zuschlagswert wieder den ich gerne im Formular hätte... also Wenn Zuschlag 10% dann Wert aus Zuschlag 10% usw.
Das Problem ist ja, dass ein Messwert CSB nur dann mit einem Zuschlag belegt wird wenn er über einem Grenzwert liegt (hier 1320) und der Zuschlag sich gemäß der Grenzwertüberschreitung erhöht... Beispiel für 20% Zuschlag muss der Messwert CSB zwischen 1800 und 2400 liegen. Wie ich das mit einer Access-Tabelle abbilden soll ist mir ein Rätsel.

VG,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Januar 31, 2019, 13:58:04
Hallo,
nein, das wird so nix. Die Beziehungen sind jetzt völlig falsch. Man kann keine 1:n Beziehung zwischen 2 Primärschlüssel (PS) herstellen, das wird immer 1:1.
Auch die Tabelle für die Messwerte ist falsch. Hier ist eine n:m Beziehung mit 3 Tabellen notwendig.
- Prüfbericht
- Stoffe (Die Stoffe sind Datensätze, keine Feldname)
- PrüfberichtStoff (Hier werden die Messwerte erfasst)

In der 3 Tabelle wird der PS des Berichtes und der PS des Stoffs jeweils als Fremdschlüssel (FS) in je einem Datensatz gespeichert.

Auch für die Zuschläge ist eine Tabelle erforderlich, in der die jeweilgen Grenzwerte (von - bis) erfasst werden und in einer weiteren Spalte der Zuschlag.
Mit einem einfachen DomWert (DLookUp) kann dann der zutreffende Zuschlag ermittelt werden.

Das kannst Du alles in die Tonne treten (sorry), da musst Du noch mal von vorn anfangen.

Anbei ein Bild wie das vom Kunden zum Prüfbericht aussehen sollte.

Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Januar 31, 2019, 15:09:13
*seufz* :-\

Also der Reihe nach... 1:n ist klar...  habs jetzt korrigiert.

Tabelle Prüfberichte hatte ich ja schon. Tabelle Stoffe ohne Inhalt habe ich jetzt erstellt und Tabelle PrüfberichtStoffe hat neben der eigenen ID noch die IDs von Prüfbericht und Stoffe
Frage: Wo definiere ich denn jetzt die geprüften Werte (CSB und co.) ein wenn nicht in Stoffe?

Habe auch eine Tabelle ZuschlägeCSB erstellt... mit DLookup habe ich in Access aber noch nicht gearbeitet... das entspricht SVerweis in Excel oder? Beziehung habe ich nochmal weggelassen... muss erstmal das Konstrukt mit den Messdaten verstehen.

VG,
Martin

Edit: Vergiss die Frage mit der Definition der Stoffe... nach einer Tasse Kaffee hab ich selbst gemerkt wie doof die war. Sorry
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Januar 31, 2019, 15:55:11
Hallo,
die gemessenen Werte kommen in die Tabelle "tbl_PrüfberichtStoffe". Das Feld musst Du noch anlegen.
Der Zuschlag, richtet sich der ausschließlich nach dem Wert von CSB ?

Kannst Du bitte mal den Sinn der DB in Prosa beschreiben ?
In einem der früheren Bilder gab es auch mal ein Feld Betrag, was hat(te) es damit auf sich ?
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Januar 31, 2019, 16:33:03
Hallo Klaus,

Das mit dem Feld "Messwerte" in tblPrüfberichtstoffe ist mir noch nicht ganz klar um erhlich zu sein. "Messwerte" würde im Formular doch dann mehrfach vorkommen, oder?

Also die Aufgabenstellung ist folgende:
Wir überwachen für ca. 50 Firmen gewisse Grenzwerte in deren Produktion. Dazu werden in unregelmäßigen Abständen Messungen im Produktionsprozess vorgenommen. Ich bekomme diese Messwerte und Stand jetzt fliegen die komplett in meine kleine Datenbank und fallen am Ende als Bericht raus. Kurz und knapp steht da drin, dass an Datum x die Werte 1, 2 und 3 überprüft worden sind. Je nach Höhe der Messwerte wird zusätzlich zum Produktionsbasiswert ein Betriebskostenzuschlag erhoben. Das betrifft CSB, Nges und P. Werden bei diesen 3 Stoffen die gesetzten Grenzwerte überschritten (für alle 3 gelten unterschiedliche Werte) wird prozentual ein Zuschlag berechnet. Im Falle von CSB liegt der Grenzwert bei 1320. Alles darunter ist Zuschlagsfrei. von 1320-1800 gilt ein Zuschlag von 10% des Produktionskostenbasiswertes. Bei 1800-2400 beträgt der Zuschlag 20% und so weiter. Maximal werden 100% Zuschlag berechnet. Der maximale Zuschlag kann nie mehr als 100% betragen, selbst wenn z.B. CSB 80%, Nges 50% und P 30% Zuschlag erreicht haben. Aber jeder Stoff wird in der Berechnung einzeln betrachtet. Aktuell liegt diese Formelei in einer Exceltabelle die... naja sagen wir mal in die Jahre gekommen ist. Da der weitere Prozess (die Messadaten samt Zuschläge wurden per Hand in eine Wordvorlage übertragen) auch nicht gerade optimal war habe ich mich Angeboten wenigstens die Kundeninformationen und Messdaten aus Access in die Wordvorlage zu schreiben. Das hat den Prozess schonmal schneller gemacht aber -kleiner Finger ganze Hand- jetzt fragen die Kollegen ob man nicht auch gleich die Zuschlagsberechnung mit übertragen kann... und tada, hier sind wir :)

VG,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Januar 31, 2019, 17:19:18
Hallo,
Zitat"Messwerte" würde im Formular doch dann mehrfach vorkommen, oder?
Nein, würden sie nicht, das heißt, in der Tabell ja, aber das interessiert keinen. Kriegt auch niemand zu sehen.
Die Datenerfassung würde man in einem Hauptformular (Hafo) und darin ein Unterformular (Ufo) machen. Im Hafo der Prüfbericht und im Ufo die Messwerte. Dann sieht man im Ufo immer die zum Prüfbericht gehörenden Messwerte. Ganz automatisch.

Zitat(für alle 3 gelten unterschiedliche Werte)
Dann muss die Tabelle mit den Grenzwerten noch um eine Spalte für einen FS Stoff erweitert werden.
Wenn jeder Stoff z.B. 5 Grenzwertbereiche hat, so sind in dieser Tabelle 5*3=15 Datensätze. Also je Stoff und je Grenzwertebereich ein Datensatz.

Und noch ein Hinweis:
In den Beziehungen wird immer der Beziehungstyp 1 eingestellt. Das wird bei Bedarf nur in den Verknüpfungen der Abfragen gemacht. Bitte ändern.
Und nenne IDs nicht einfach ID, sonst blickst Du da nicht mehr durch. Es ist überaus vorteilhaft, wenn es in der ganzen DB keine gleichen Feldnamen gibt (über alle Tabellen).
Halte Dich doch einfach an das Namensschema das ich in meinem Bild in #14 gezeigt habe.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 01, 2019, 07:26:58
Guten Morgen Klaus,

hab direkt schlecht geschlafen nach der Nummer gestern  ::)

Also ich hab das Feld Messwerte ergänzt, hab aber noch eine Frage zu Hafo und Ufo... Ich möchte die Daten ja am Stück eintragen nud wenn ich das Tabellenkonstrukt richtig verstehe muss ich für die Messwerte ja irgendwie verknüpfen dass der eingegebene Wert z.B. einer StoffID 1 entspricht. Bekomme das über die normalen Textfelder irgendwie nicht hin  ???

Für die Grenzwerte habe ich das Feld StoffID (identisch zu dem in der anderen Tabelle) erstellt und eine Beziehung erstellt und die Grenzwerte entsprechend der Tabelle eingetragen.

Beziehungstyp habe ich korrigiert und auch die IDs umbenannt.

VG,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 01, 2019, 11:15:57
Sorry für den Doppelpost aber ich blicke hier grad gar nicht mehr durch.

In der Form wie die Datenbank jetzt aufgebaut ist bekomme ich nicht einen einzigen Datensatz eingegeben. Ich kann keine Abfragen erstellen - von Formularen ganz zu schweigen. Habe ich noch einen Fehler in den Beziehungen der solche Auswirkungen haben könnte?

VG,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 01, 2019, 11:54:32
Hallo,
Dateneingaben sind bei richtigem Aufbau problemlos möglich.
Auf den zusammengesetzten PS in der Tabelle "tbl_PrüfberichtStoffe" würde ich verzichten. Lege den PS auf die ID, dazu ist diese da.
Es macht zum jetzigen Zeitpunkt noch keinen Sinn Formulare anzulegen.
Und die lapidare Aussage "geht nicht" hilft ja auch nicht. Da musst Du schon beschreiben was genau nicht geht und welche Meldungen es ggf. gibt.

Da sind auch erst noch einige Unklarheiten zu beseitigen die ggf. noch Auswirkungen auf das Datenmodell haben können. Da gab es z.B. das Feld Betrag. Was ist daraus geworden und was wurde/würde da eingetragen.
Weiterhin muss ja das mit den Zuschlägen noch eingebaut werden, da gibt es ja nur eine Tabelle bisher.
Der Primärschlüssel der Zuschlagstabelle muss als Fremdschlüssel in die Tabelle "tbl_PrüfberichtStoffe". Dieser Fremdschlüssel wird dann später automatisch über DLookUp ermittelt und auch automatisch eingetragen.
Dann kann in Abfragen direkt mit dem Zuschlagsfaktor gerechnet werden und es wird keine einzige Wenn (IIf) Formel mehr benötigt.
Siehe Bild.

Und nicht aufgeben, das wird am Schluss einfacher als Du denkst, wenn Du nicht noch weitere Ergänzungen zu Tage förderst.

Und noch eine Anmerkung:
Ich helfe Dir gern, aber dann koche bitte kein eigenes Süppchen was die Nomenklatur betrifft. Benenne die Schlüsselfelder wie von mir vorgeschlagen, das bin ich gewohnt.
Also KundenID für den Primärschlüssel und KundenID_F für den Fremdschlüssel.
Das ist auch für Dich vorteilhaft, oder bist Du sicher, dass Du die verwendeten Kurznamen nach 4 Wochen noch genau weist ?

Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 01, 2019, 12:55:06
Danke Klaus,
Bitte sei versichert, dass ich sehr zu schätzen weiß, dass du dir die Zeit nimmst mir zu helfen. Die Benennung der Felder habe ich nach deinen Vorgaben geändert (hoffe ich habe nichts übersehen).
Irgendwie hatte ich gehofft, dass der sprichwörtliche Groschen bei mir endlich fällt und ich "den Rest" selbst hinbekomme, aber ich komme mit der komplexen Datenstruktur offenbar noch nicht zurecht.

Das Feld "Betrag" war eine Folge der ganzen "WENN" Formeln in der ursprünglichen Form der Datenbank (siehe meinen Prosatext). In "Betrag" stand das Ergebnis aus einem "Basiswert" mal "Zuschlag" - in einer verschachtelten "WENN" Formel für alle 11 möglichen Zuschlagsvarianten für den Stoff CSB (für Nges und P hatte ich das noch nicht verfasst).
Das ist der eigentliche Wert der am Ende dem Kunden übermittelt wird und der maximal 2x Basiswert ist (egal ob die Summe der Zuschläge für die einzelnen Stoffe höher ist).
Ich hätte für diese Berechnung jetzt "nur" eine Tabelle "tblBasiswert" mit "BasiswertID" und dem eigentlichen Wert als Datensatz erstellt und dann eine Abfrage erstellt mit der DLookUp Funktion für den Zuschlag mal dem Basiswert und ihn über eine "WENN" Formel bei 2xBasiswert gedeckelt. Vermutlich ist das aber auch wieder falsch wenn ich mir deinen Post so durchlese  ::)

Würde mich freuen, wenn du mich weiter an die Hand nimmst um diese Datenbank irgendwie hinzubekommen.  :)

VG,
Martin

Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 01, 2019, 13:43:40
Hallo,
Ziel ist es, keine Wenn mehr zu benötigen.
Die Benennung ist jetzt so richtig. In der Zuschlagtabelle sind 2 Felder 1x Zuschlag und 1x ZuschlagInProzent, eines davon ist überflüssig. Entweder den Zuschlag als Faktor (1,1 - 1,2 ...) oder den Zuschlag als Prozentzahl (10 - 20 oder 0,1 - 0,2 ....).

Kannst Du mal die DB so wie Du diese jetzt hast hier hochladen Die Zuschlagstabelle sollte aber gefüllt sein, nicht komplett, aber für jeden Stof 2-3 Einträge. Die Tabelle kannst Du ohne Formular einfach manuell füllen. Du musst dann aber die FS für den Stoff korrekt eintragen, das heist, auch die Stofftabelle sollte einige Einträge haben.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 01, 2019, 15:12:26
Anbei die Datenbank in .zip Format.

Das ZuschlaginProzent war ein Versuch von mir, ebenso das Kundenformular und die Abfragen... lass dich davon nicht stören... ich versuche ja zu lernen  ;D

Zuschläge und Stoffe sind vollständig.

Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 01, 2019, 17:28:36
Hallo,
ZitatMaximal werden 100% Zuschlag berechnet.
Kannst Du das bitte mal noch geneuer erklären, das habe ich nicht verstanden.
Werden immer alle Stoffe geprüft oder auch mal nur ein Teil ?
Was hat es mit der Tabelle Basiswert auf sich ?
Und lasse Dir einen sinnvollen Namen einfallen für die DB, denn wir dann mit einer Versionsnummer ergänzen und zukünftig verwenden.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 01, 2019, 19:28:16
Es gibt einen Basiswert auf den sich ein Zuschlag bezieht.
Angenommen der Basiswert ist 100, so gilt dieser bei einem CSB Messwert von 0 - 1320, zwischen 1320 und 1800 wird 10% Zuschlag fällig, also Basiswert*Zuschlag=110 und so weiter. Diese 110 ist das was der Kunde am Ende in Rechnung gestellt bekommt.
Zuschläge werden auf CSB, Nges und P erhoben und diese 3 Werte werden immer gemessen und jeder für sich mit einem Zuschlag belegt sofern die entpsrechenden Werte vorliegen. Je nach Produktionsprozess kann es sein, dass keiner der 3 Werte überschritten ist, nur einer, zwei oder eben alle gleichzeitig - aber dann auch in unterschiedlicher Höhe. Beispielsweise hat ein um 20% überhöhter CSB Wert nicht automatisch die gleiche Überschreitung bei Nges und P zur Folge.
Rechnerisch ist es also möglich, dass während einer Prüfung alle 3 Stoffe die Grenzwerte (siehe Tabelle Zuschläge) maximal überschreiten, der Basiswert also 3x100% Zuschlag erhalten müsste. Vertraglich ist aber festgelegt, dass wir maximal den doppelten Basiswert (im Beispiel von oben also 200 - oder eben 100% Zuschlag) verrechnen.

Die anderen Stoffe in der Tabelle werden nur sporadisch oder auf Verdacht geprüft und für diese gibt es auch keine Zuschläge - da keine Grenzwerte vereinbart worden sind. Es ist höchst unwahrscheinlich, dass sich das mal ändert.

Ich hoffe so wirds klarer  :)

Die Tabelle Basiswert habe ich nur angelegt, weil ich vermutet habe, dass man sie brauchen kann. In ihr steht der aktuelle Basiswert als Datensatz.

Für die Zeit der Parametrierung habe ich nur einen Arbeitstitel vergeben damit keiner auf die Idee kommt darin herum zu fummeln. Sie wird am Ende SV_Zuschläge_IDE heißen (müssen).

VG,
Martin

Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 01, 2019, 19:36:29
Hallo,
mit der Tabelle Basiswert habe ich noch nicht verstanden. Da steht ein Wert drin (2,38€). Das muss doch eine Bedeutung haben. Und das ist ja jetzt ein Geldbetrag.
Und oben schreibst was vom Basiswert 100. Das ist irritierend für mich.
Wie kommst Du also vom Messwert zum Geldbetrag ?
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 01, 2019, 20:05:09
Korrekt, 2,58€ ist der aktuelle Basiswert... der kann sich aber ändern. Die Zahl 100 hatte ich nur zur Veranschaulichung verwendet.
Wie gesagt verrechnen wir den Basiswert an unsere Kunden zzgl. der Zuschläge die sich aus den Messwerten für CSB, Nges und P ergeben.
Beispiel: Bei Messwerten von 1500 CSB; 2 Nges und 0,5P verrechnen wir an unseren Kunden nicht den Basiswert von 2,58 sondern 2,83€ weil der CSB Wert so hoch ist, dass wir 10% Zuschlag verrechnen.
Wir haben mit höheren Werten bei diesen 3 Stoffen mehr Aufwand, daher die Zuschläge. Der maximale Betrag den wir in Rechnung stellen ist der Basiswert mal 2, also aktuell 5,16€.

VG,
Martin

Edit: Ich sollte vielleicht noch erwähnen, dass der Kunde nach der Prüfung ein Schreiben erhält indem sinngemäß steht "der Grenzwert CSB ist um 280 überschritten, daher wird ein Zuschlag von 10% fällig. Der neue Betrag lautet 2,83€".
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 02, 2019, 16:56:53
Hallo,
anbei mal die 1. Version.
Im Formaular "ErfassungKunden" kannst Du Kunden ansehen, öndern und auch neue Kunden anlegen. Im Unterformular siehst Du die zu diesem Kunden existierenden Prüfberichte. Die Felder sind schreibgeschützt. Ein Doppelklick im Feld "Prüfbericht" öffnet ein weiteres Formular in dem genau dieser eine Prüfbericht dargestellt wird. Im Ufo können jetzt die Messwerte angesehen eingetragen und bei Bedarf geändert werden. Dieses Formular kann auch direkt aufgerufen werden. In einem neuen Datensatz können dann neue Prüfberichte erstellt werden. Der zutreffende Kunde wird per Kombi gewählt. Sobald ein Datum für den Prüfberichte eingetragen (oder auch geändert wird) wird in der Tabelle mit den Basiswerten der zum Datum passende Basiswert herausgesucht und redundant im Feld Basiswert gespeichert. Mit diesem Wert wird dann auch gerechnet.
Sobald ein Messwert eingetragen ist, wird per VBA in der Zuschlagstabelle die passende ZuschlagID herausgesucht und ebenfalls redundant eingetragen.Die Abfrage für das Ufo verwendet dann den richtigen Zuschlag als Faktor. Der Zuschlag in Prozent wird errechnet. Zuschlag in Prozent wurde in der Zuschlagstabelle gelöscht.
Durch die Zuschlagstabelle ist die komplette Berechnung des Zuschlags auf eine einzige Zeile VBA geschrumft.
Wenn der Stoff in der Zuschlagstabelle nicht gefunden wird, wird automatisch der Zuschlagsfaktor auf 1 gesetzt.
Das Vorgehen erfordert, dass die Daten grundsätzlich über Formulare einzugeben sind. Was aber ohnehin der Normalfall ist.

Die Zuschlagstabelle ist im Moment statisch. Sollte in Zukunft die Grenzwerte für die Zuschläge geändert werden, so müssen dann neue Zuschlagsdatensätze erstellt werden. In die Tabelle muss dann noch ein Hakenfeld, das gültige Zuschlagsdatensätze kennzeichnet.

Was nicht eingebaut ist, ist die Deckelung des Zuschlags auf den Faktor 2.
Das habe ich immer noch nicht so recht verstanden.
Da würde ich vorschlagen, Du machst eine kleine Exceltabelle mit den echten Rechenwerten und wie das nach eine Deckelung aussehen soll.

Schaue es Dir an.
Bei Fragen melden.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 03, 2019, 10:04:54
Wow, vielen Dank Klaus.
Das klingt ziemlich kompliziert, hoffentlich steig ich da durch  :-[
Ich schaue mir das heute Abend an (bin gerade unterwegs und habe hier kein Access).
Habe dir kurz mal die Berechnung in Excel eingetippt. So werden die Zuschläge be- und verrechnet.

Ich melde mich wenn ich mir die DB anschauen konnte.

VG,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 03, 2019, 10:25:57
Hallo,
ZitatDas klingt ziemlich kompliziert,
Das ist nicht kompliziert. Du wirst Dich wundern.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 03, 2019, 23:51:39
Hallo,
Achtung:
Ich habe oben eine geänderte Version hochgeladen.

Wenn Du die DB heruntergeladen hast, bitte noch mal herunterladen.

Ich hatte einen Denkfehler. Es darf nicht die ZuschlagID gespeichert werden, sondern der ermittelte Zuschlag. Das Feld ZuschlagID_F in der Messwerttabelle und die entsprechende Beziehung habe ich gelöscht. Statt dessen gibt es das Feld ermZuschlag (=ermittelter Zuschlag) in der Messwerttabelle, das keine Beziehung benötigt. An der Berechnungsmethode selbst hat sich nichts geändert.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 04, 2019, 08:11:08
Hallo Klaus, guten Morgen.

Ich habe mir die DB angesehen. Vielen Dank für die Arbeit die du hier (vor allem am Wochenende!) investiert hast.
Die Beziehungen sind mir noch nicht so ganz klar, aber ich schau mir das heute nochmals an um es zu verstehen. Mit VBA kenne ich mich so 0,0 aus... weiß nicht ob ich das begreife  :-[

Ich bekomme beim öffnen der Formulare die Meldung "Parameterwert eingeben" tbl_Prüfberichtstoffe.ZuschlagID_F. Hängt das mit der Abfrage zusammen? Denn da steht bei ZuschlagID_F nichts drin.

Bei der Sache mit dem Betrag hast du dir leider zu viel Arbeit gemacht. Es gibt pro Prüfbericht nur einen Betrag der den Kunden verrechnet wird. In dem Formular wird aber jeder Stoff einzeln ausgepreist. Ich würde das Feld Betrag hinter jedem Stoff gerne rausnehmen und dafür im Berichtskopf einen "finalen" Betrag anzeigen (Summe der Zuschläge aus CSB,Nges undP + Basiswert - oder Basiswert *2 - je nachdem was korrekt ist).

Ich finde die Variante mit den Kombinationsfeldern bei den Stoffen sehr schön, so kann man die gemessenen Stoffe beliebig anzeigen.

VG,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 04, 2019, 10:24:47
Hallo,
zwei der Formaulare sind Unterformulare. Die haben ein ...Ufo... im Namen. Diese Formulare können und dürfen nicht selbstständig geöffnet werden. Diese sind in die Hauptformulare eingebunden. Ein einzelnes Öffnen führ dann logischerweise zu der Parameternachfrage. Das mit dem Betrag war kein Aufwnd, das ist nur eine Spalte in der Abfrage.
Zitat(Summe der Zuschläge aus CSB,Nges undP + Basiswert - oder Basiswert *2 - je nachdem was korrekt ist).
Soll das nicht * 2 sein, also so:
Summe(CSB, Nges, P) * Basiswert
oder
Basiswert *2
jenachdem was korrekt ist.

Hast Du die neue Version heruntergeladen und verwendet ?
Das ist wichtig, in der vorherigen Version waren Fehler.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 04, 2019, 10:51:11
Ja du hast natürlich recht, auf die prozentuale Berechnung bezogen ist es die Summe der Zuschläge * Basiswert.
Montag Morgen halt...  ::)

Die Meldung erscheint beim öffnen des Hafo in der Version die ich heute morgen nochmal herunter geladen habe.
Sie erscheint auch beim öffnen der Abfrage... daher meine Vermutung.

VG,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 04, 2019, 11:02:21
Hallo,
grr... mein Fehler, ich habe Felder gelöscht und die Formulare nicht angepasst. Gib mir eine Stunde.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 04, 2019, 12:10:42
Hallo,
anbei eine neue Version (02).
Ich habe auch die Zuschlagstabelle noch geändert. Da stehen jetzt die echten Zuschläge drin (<=1), was für das Summieren vorteilhafter ist. Vorher war das ja ein Faktor (>=1)
Ich habe auch das mit dem Betrag (und der Deckelung auf 2) eingebaut. Ich habe das hoffentlich richtig verstanden.
Schaue es Dir an.

Öffne bitte immer nur die Hauptformulare.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 04, 2019, 13:44:06
Hallo Klaus,

das ist Super :)
So ganz bin ich noch nicht durchgestiegen wie das mit der tbl_Prüfberichtstoffe funktioniert, weil da ja im Prinzip nur IDs drinstehen, aber ich werde mal (in einer Kopie) genauer untersuchen was du da gezaubert hast.
Eine Kleinigkeit war nicht richtig bei der Berechnung im Ufo aber das habe ich schnell selber korrigiert... mit WENN Formeln kenne ich mich ja aus  ;D
Korrekt steht jetzt im "Verrechnet wird" Feld: =WENN(SummeErmZuschl>1;2;SummeErmZuschlag+1)
Das bewirkt jetzt zum einen die Deckelung als auch eine korrekte Berechnung falls die 100% nicht erreicht werden.

Ich gebe jetzt mal eine Reihe Prüfberichte ein und schaue ob alle Daten so passen. Ich darf dir übrigens neben meinem "Danke" auch von meinen Kollegen ein ganz großes Dankeschön übermitteln  :D

VG,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: Beaker s.a. am Februar 04, 2019, 15:00:29
ZitatWas ist richtig ?
Bei einer Deckelung wohl eher dies
Zitat=WENN(SummeErmZuschl+1>2;2;SummeErmZuschlag+1)
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 04, 2019, 15:09:46
@Ekkehard
ich habe ja meine Antwort oben wieder gelöscht.
Alle 3 Formeln stimmen nicht.
Sowohl bei Dir als auch bei Martin wird bei 1,8 als Summe der Zuschläge 2 eingetragen, was aber falsch ist, das muss bei 1,8 bleiben.
Und meine Formel stimmt nicht wenn die Summe der Zuschläge 0 ist (keine Zuschläge).
Ich muss da noch mal nachdenken. Oder Ihr  ;D
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 04, 2019, 15:20:56
Hallo Ekkehard und Klaus,

Bei meiner Formel wird bei einem Zuschlag von 1,8  die Verrechnung 2 angegeben und das ist korrekt, denn: 1,8 entspricht 180%. Der Deckel ist bei Basiswert*2 = 100%.
Bei einem Zuschlag-Wert <1 wird im Feld Verrechnung der ermittelte Zuschlag +1 angezeigt. Das ist korrekt, da der Basiswert * 1,x genommen wird.

VG,
Martin

Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 04, 2019, 15:24:38
Hallo,
wenn Du sagst, es ist richtig soll es mir recht sein. Du musst es wissen.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 04, 2019, 15:55:53
Hallo Klaus,

ja der Wert ist korrekt. Ob da jetzt eine 2 steht oder 100% ist wirklich egal.

Viel prolematischer ist, dass beim hinzufügen neuer Datensätze keine Berechnungen ausgeführt werden. Muss ich da irgendwas beachten?

VG,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: Beaker s.a. am Februar 04, 2019, 16:20:06
Hallo Klaus,
Zitatich habe ja meine Antwort oben wieder gelöscht.
Überschneidungen passieren halt.

Ansonsten denke ich aber den TS richtig verstanden zu haben.
I.Ü. könnte man den Ausdruck auch so formulieren
=WENN(SummeErmZuschl<1;SummeErmZuschlag+1;2)

@Martin
Das liegt wohl daran, dass es bei einem neuen DS noch keine Daten für
die Berechnungen vorliegen. Ergänze diese mit der Nz() Funktion.
=Nz(CSB;0) + Nz(Nges;0) + Nz(P;0)
bzw.
WENN(Nz(SummeErmZuschl;0)<1;Nz(SummeErmZuschlag;0)+1;2)

gruss ekkehard
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 04, 2019, 17:02:56
Hallo,
unter welchen Umständen genau wird nicht berechnet ?
Ich habe das probiert, bei mir wird berechnet.
Es muss auch erst eine Prüfung angelegt werden, mit Datum damit ein Basispreis eingetragen wird.

@Ekkehard
Nz braucht es hier nicht. Sobald ein Messwert eingetragen wird, wird auch berechnet. Und ohne Messwert macht eine Berechnung keinen Sinn. Bei mir klappt das ja.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: Beaker s.a. am Februar 04, 2019, 17:53:07
@Klaus
O.K., muss gestehen, dass ich mir die Beispiel-DB nicht angeschaut habe.
War also mehr so ein Schuss ins Blaue
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 05, 2019, 07:12:55
Guten Morgen Klaus,

ich habe da gestern glaube ich einen Fehler eingebaut als ich die Aktivierungsreihenfolge angepasst habe - das hat wohl dazu geführt, dass bei neuen Datensätzen keine Berechnung durchgeführt wurde. Jetzt habe ich das Prüfdatum im Hafo auf 2 (Prüfnummer auf 0, Firma auf 1) und jetzt geht es (wieder).  ::)

Habe versuchsweise mal eine Abfrage für einen Export erstellt, aber auch hier stoße ich leider an meine Grenzen. Ziel war es den letzten Datensatz (sprich das letzte Prüfprotokoll je Kunde) abzufragen und an eine Wordvorlage zu übergeben. Leider habe ich keine Möglichkeit gefunden die Messdaten und Stoffe in einer Zeile abzubilden - habe also mehrere Zeilen je Prüfprotokoll und damit kommt Word nicht klar. Hättest du da evtl. noch einen Tipp für mich?  :-[

VG,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 05, 2019, 08:33:19
Hallo,
auf Word verzichten und einen Access Bericht erstellen.
Oder wozu brauchst Du Word ?
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 05, 2019, 12:59:06
Wenn ich einen Bericht so gestalten kann, dass ein Brief dabei herauskommt geht das freilich mit einem Bericht.  :D

VG,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 05, 2019, 16:02:59
Hallo,
Du müsstest mir mal ein Idee geben, wie ein solcher Bericht aussehen könnte.
Gibt es da ein Logo ?
Umfasst der Bericht immer nur einen Prüfbericht ?

Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 06, 2019, 07:37:32
Hallo Klaus, guten Morgen

Ich glaube es ist am Ende nicht wahnsinnig kompliziert, aber ich hatte gestern ein anderes Projekt auf dem Tisch und konnte mich nicht damit beschäftigen. Ich glaube am schwierigsten ist es das Format zu finden und das wir natürlich nur die gemessenen Werte übermitteln.
Im Prinzip ist der Bericht ein Brief an den Kunden, in dem er mitgeteilt bekommt welche Werte gemessen worden sind und welcher Betrag ab Zeitpunkt der Prüfung berechnet wird. Habe dir mal ein annonymisiertes Beispiel angehängt.
Der Briefkopf mit unseren Daten und Logo wird nicht mit gedruckt, da wir dafür Kopfbögen verwenden.

VG,
Martin

Edit: Habe es gerade mal versucht mit dem Bericht. Ich bekomme die verschiedenen Messwerte/Stoffe nicht in einen Datensatz. Access erstellt für jede Stoff ID eines Prüfberichts eine eigene Seite  ??? Den Rest hab ich hinbekommen (sofern die SummeZuschlag Geschichte funktioniert, die ich aus dem Ufo übernommen habe)
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 06, 2019, 21:46:28
Hallo,
im Anhang eine neue Version (03) mit dem Bericht.
Der Bericht (InfoBrief) kann direkt aus dem Formular mit dem Prüfbericht über den Button aufgerufen werden.
Der Bericht ist nur grob angelegt. Den musst Du noch verfeinern.

Ich habe auch die Berechnung umgestellt. Die berechneten Werte werden nicht mehr gespeichert, die werden immer nur aktuell berechnet. Das ist die bessere Methode, weil die Funktionen direkt in den Abfragen sind. Es wird immer zuverlässig berechnet.

Die Basiswerte werden immer über das Datum der Prüfung automatisch berechnet.
Sollten sich die Basispreise mal ändern, einfach einen neuen Datensatz mit Datum von - bis anlegen, fertig.

Sollte eines Tages (sag niemals nie) die Grenzwerte für die Berechnung des Zuschlags geändert werden, muss die Tabelle um 2 Datumsfelder erweitert werden und die Funktion analog zum Bassiswert angepasst werden.
Oder, wenn Du sagst das könnte vorkommen, baue ich es noch ein.

DB anbei.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 07, 2019, 10:56:09
Hallo,
Bitte die Version 03 (aus meinem vorherigen Beitrag) noch mal herunterladen. Da war noch ein Fehler drin.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 07, 2019, 13:21:23
Hallo Klaus,

vielen Dank für den Bericht. Mit den VBA Geschichten hast du mich jetzt soweit, dass ich deinen Ideen nicht mehr folgen kann  ;D ;D ;D

Habe die DB heute Morgen heruntergeladen und den Bericht fertig gestellt. Dabei ist mir aufgefallen, dass ich bei den Messwerten keine Dezimalstellen eingeben kann. Es erscheint dann ein Laufzeitfehler. Habe mal in der Tabelle geschaut und auch da (in einer Kopie) habe ich festgestellt, dass Dezimalstellen immer sofort gerundet werden. Ich konnte leider keinen Befehl etc. finden der das unterbindet. Die Formatierung der Tabellenfelder brachte leider keine Änderung.

Ich lade die aktualisierte Version gleich herunter.

VG,
Martin


Edit: die Grenzwerte dürften sich eigentlich nicht ändern. Es geht hier um chemische bzw. biologische Prozesse... die ändern sich nicht einfach so. Aber zu 100% ausschließen kann man es nie, das stimmt.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 07, 2019, 13:57:57
Hallo,
sorry, da habe ich nicht aufgepasst.
Das hängt mit den unterschiedlichen Dezimaltrennzeichen Deutschland - USA zusammen. VBA spricht englisch. Und da wird als Dezimatrennzeichen der Punkt erwartet.
Da muss noch eine kleine Funktion ergänzt werden, die aus dem Komma einen Punkt macht.
Gehen in das VBAmodul und ändere wie folgt:
Public Function fncZuschlag(MW As Variant, ID As Variant) As Double
If IsNull(MW) Or IsNull(ID) Then Exit Function
    MW = Str(MW) '<<<<<<<<< Diese zeile einfügen
    fncZuschlag = Nz(DLookup("Zuschlag", "tbl_Zuschläge", "von < " & MW & " and bis >=" & MW & " and StoffeID_F = " & ID), 0)
End Function


Und in der Tabelle Zuschläge ist der Datentyp der Felder von und bis in Double zu ändern.
Ich habe oben noch mal die verbesserte DB hochgeladen.
Bitte die Version 03 aus meinem Beitrag #53 noch mal herunterladen und die alte 03er entsorgen.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 07, 2019, 17:04:03
Hallo Klaus,

Danke, ich lade die DB herunter.
Hast du einen Tipp für mich wie ich den Bericht (habe den von der ursprünglichen DB V_03 ja schon eingerichtet) in die aktuelle Version hineinbekomme?

VG,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 07, 2019, 17:06:26
Hallo,
den Bericht kannst Du über externe Daten importieren.
Vor dem import den Bericht löschen, dann importieren. Das geht verlustfrei.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 11, 2019, 10:08:53
Hallo Klaus,

bitte entschuldige die lange Sendepause meinerseits.
Ich habe inzwischen alle Anpassungen die ich brauche vorgenommen und angefangen die letzten Prüfprotokolle einzutragen.
Soweit funktioniert alles Bestens - nochmals vielen Dank für deine Arbeit! - 2 Sachen sind mir aber aufgefallen die ich gerne nochmal mit dir besprechen möchte.
1. Wenn man im Formular aus versehen einen Stoff zuviel ausgewählt hat, kann man es nicht rückgängig machen da das Kombinationsfeld dann eine Eingabe erzwingt. Ich habe mir hier insofern geholfen, dass ich in die tbl_Stoffe einen Wert "_" ,also Leerzeichen, hinzugefügt habe den ich auswählen kann. Das funktioniert gut, solange ich noch keinen Messwert eingegeben habe (habe ich ja für gewöhnlich nicht weil ich spätestens dort merke, dass die Eingabe des Stoffes fehlerhaft war). Wenn aus versehen aber dennoch ein Messwert eingegeben wurde, habe ich die Zuschlagsberechnung auf dem Bericht. Dafür ist mir noch keine Lösung eingefallen.
2. Ist vermutlich off-topic, aber im Berichtsentwurf korrekt platzierte Felder werden beim Druck leicht verschoben. Habe mir das jetzt mühsam so hingestrickt, dass es beim Druck sauber aussieht - allerdings sieht nun die Druckvorschau verschoben aus. Kennst du da einen Kniff wie das korrekt aus dem Entwurf in den Druck übertragen werden kann?

Ah und eine Sache habe ich noch. Keine Angst, das ist keine Anforderung an die DB aber ich habe mich gefragt wie es möglich ist Mittelwerte der gemessenen Stoffe (nur die üblichen 3) aus allen bisher eingegebenen Prüfberichten zu bilden und beim jeweiligen Kunden im Formular anzuzeigen.
Ich habe aus Ehrgeiz einfach mal versucht das zu bauen, bekomme es alleine aber nicht hin. Hast du hier einen Tipp für mich welcher Ansatz zum erfolg führt?

VG,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 11, 2019, 15:28:26
Hallo,
Zu 1)
Du kannst einfach den Datensatz löschen. Auf den Datensatzmarkierer klicken und "Entfernen" drücken. Weg isser. Der Datesatzmarkierer ist das kleine Rechteck mit dem kleinen schwarzen Pfeil oder mit dem Stern.

Zu 2)
Kann ich nix sagen, aber Du musst zum Ansehen die Seitenansicht nehmen, die Berichtsansicht ist untauglich. Berichts und Seitenansicht sind 2 verschiedene Dinge. Nur die Seitenansicht taugt zur Voransicht und Vergleich.

Zu 3)
Habe ich Dir in der Version 04 eingebaut. Das ist auch relativ einfach. Man kann eine Abfrage erstellen für die Mittelwerte und dann ein Ufo zur Anzeige. Das Ufo wird über die KundenID verknüpft. Dann sieht man immer die Mittelwerte des Kunden.

Zur Beachtung:
Die Mittelwerte werden für die StoffID<4 gerechnet. Daher darf sich an der Reihenfolge der relevanten Stoffe in der Stofftabelle nichts ändern.


Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 12, 2019, 08:01:49
Hallo Klaus, guten Morgen.

Vielen Dank für deine Antworten.
Habe beim Datensatzmarkierer nur "Ausschneiden", aber das erfüllt offenbar den gleichen Zweck.
Der Bericht ist ja fertig formatiert und im Entwurf sieht den ja niemand außer mir. Sollte so passen denke ich.
Also manchmal zweifle ich an mir... hatte in meinem Versuch für den Mittelwert eine Abfrage erstellt, aber die Bedingungen völlig anders gesetzt als du. So betrachtet ist es wirklich recht simpel  ;D

Heute arbeiten zum ersten Mal die Kollegen mit der DB. Fingers crossed, dass alles klappt :)

VG,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 13, 2019, 07:46:47
Hallo Klaus, kurzes Update: es funktioniert alles Bestens.

Eine Frage: Ich wollte die Reihenfolge der Messwerteingabe im Ufo rumdrehen damit ich erst den Wert, dann den Messwert eingebe (fühlt sich natürlicher an). Das führt aber zu einem Fehler, da die Messwert-Eingabe wohl der Trigger für den Basiswert ist. Interessanter Weise bekam ich zwei unterschiedliche Fehlermeldungen: im ersten Versuch einen VBA Fehler das Null nicht erlaubt ist (In VBA wurde die Zeile gelb markiert in der die Gültigkeitsabfrage des Basiswertes steht), im zweiten Versuch den Fehler "Sie wollen den Null-Wert einer Variable zuweisen deren Datentyp nicht Variant ist".

Hast du hier eine Idee?

Grüße,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 13, 2019, 10:36:24
Hallo,
ich verstehe nicht ganz, was Du da willst.
Die Eingabereihenfolge scheint mir doch jetzt schon logisch zu sein.
Stoff auswählen und dann Messwert eintragen.

Was willst Du da genau anders haben ?
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 13, 2019, 10:43:55
Hallo Klaus,

In Version 4 ist der Messwert vor dem Stoff in der Reihenfolge. Der Tabulator springt vom Ansprechpartner zum Messwert, nicht zum Stoff.
Leg mal Testweise einen neuen Prüfbericht an und springe mit dem Tabulator weiter, dann siehst du was ich meine.

Ich hatte lediglich im Eigenschaftsfenster der Felder die Reihenfolge umgedreht, was zu den o.g. Fehlern geführt hat.

Grüße,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Februar 13, 2019, 11:06:49
Hallo,
in den Eigenschaften des Unterformulars kann man die Reihenfolgepositopn einstellen. Die machst Du in aufsteigender Reihenfolge wie gewünscht. Es sind ja nur 2 Felder. Das Kombi stellst Du auf 1 und den Messwert auf 2.
Dann markierst Du noch die beiden Felder für Zuschlag und Prozent und stellst dafür in den Eigenschaften "Gesperrt" auf Ja und "In Reihenfolge" auf Nein.
Dann wird mit dem Tabulator nur zu den beiden Feldern Stoff und Messwert gesprungen. In der Reihenfolge die über die Zahlen in den Eigenschaften angegeben wird. Ich habe auch noch etwas VBA Code eingefügt, damit das Kombi sofort aufklappt wenn es den Fokus erhält.
Im Hafo habe ich die Reihenfolge auch geändert, es muss erst der Kunde gewählt werden und dann das Datum. Ansprechpartner und Basiswert habe ich auch gesperrt, die Felder dürfen in diesem Formular nicht geändert werden.
In der anhängten Version (05) habe ich das mal gemacht.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Februar 13, 2019, 13:21:23
Danke Klaus,

Zitat von: MzKlMu am Februar 13, 2019, 11:06:49
in den Eigenschaften des Unterformulars kann man die Reihenfolgepositopn einstellen. Die machst Du in aufsteigender Reihenfolge wie gewünscht. Es sind ja nur 2 Felder. Das Kombi stellst Du auf 1 und den Messwert auf 2.
Dann markierst Du noch die beiden Felder für Zuschlag und Prozent und stellst dafür in den Eigenschaften "Gesperrt" auf Ja und "In Reihenfolge" auf Nein.

Hatte ich genauso gemacht  ::) :-\

Ich schaue mir die V5 mal an.

VG,
Martin
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Juli 10, 2019, 15:15:10
Hallo Klaus, ich hoffe es geht dir gut und es ist ok wenn ich den Thread hier neu belebe.

Die Datenbank läuft und ich habe inzwischen ein paar kleine Erweiterungen in Sachen Auswertung eingebaut. Nun habe ich aber eine zusätzliche Anforderung erhalten, von der ich dachte sie wäre simpel, bei der ich bitte Unterstützung benötige.

Kurz zur Erinnerung: In der Datenbank werden Prüfergebnisse erfasst, die Messwerte verschiedener Stoffe enthalten. Das ganze kommt am Ende als Bericht zu den jeweiligen Kunden heraus.

Die neue Anforderung erweitert die Datenbank um den Fakt, dass die Kunden nun "Überwachungswerte" für einige der Stoffe erhalten.
Das knifflige dabei ist, dass potenziell jeder Kunde eigene Überwachungswerte für jeden der gemessenen Stoffe hat.

Beispiel: Bei Kunde A wird Stoff A gemessen, der einen Überwachungswert x hat; Bei Kunde B wird Stoff A gemessen, der aber den Überwachungswert y hat. Bei Kunde C wird Stoff A gemessen, der aber den Überwachungswert z hat, und so weiter und so fort. Es gibt aktuell 12 Stoffe, mit der Erweiterung kommen dann etwa 15 dazu. Ich habe also je Kunde potenziell 27 Überwachungswerte.

Ich hatte mehrere Ansätze:
Ansatz 1 war, die Überwachungswerte direkt bei Erfassung des Kunden einzutragen. Hierzu wollte ich "einfach" die Tabelle mit den Kundendaten um die notwendigen Spalten erweitern.
Nachdem ich aber einen Kunden habe der aktuell 10 Überwachungswerte hat, hätte dies bedeutet 20 Spalten einzufügen und außerdem hätte ich den jeweils zu überwachenden "Stoff" dann mehrmals in der DB, da die Stoffe in einer separaten Tabelle geführt werden.

Ansatz 2 war, die Tabelle der Stoffe um eine Spalte "Überwachungswert" zu erweitern. Dies bedeutet aber, dass Stoff A nicht nur 1x in der Tabelle ist, sondern mehrfach (so oft wie es eben unterschiedliche Überwachungswerte bzw. Kunden in der Datenbank gibt). Da ich die Stoffe je nach Prüfbericht auswähle, wäre das Kombinationsfeld, dass ich im Moment dafür nutze völlig überladen.

Ansatz 3 war, eine Tabelle Üwert_ID mit Üwerten und den jeweiligen Fremdschlüsseln für KundenID und StoffID zu erstellen. Dabei gerate ich aber bei der Abfrage für den Bericht am Ende in einen Konflikt, da sowohl KundenID_F als auch StoffID_F bereits in anderen Tabellen verwendet werden, die für die Abfrage erforderlich sind.

Ich stehe also gewissermaßen auf dem Schlauch welches die "eleganteste" Lösung ist.

Zusätzlich erschwert wird die Sache dadurch, dass ich im Bericht einen Standard-Text in einem Bezichnungsfeld nutze, der sich ändert sobald der Überwachungswert eines Stoffes überschritten wird. Der Kunde soll natürlich darauf hingewiesen werden, dass er eine Überschreitung hat.
Hier habe ich noch keine gute Idee gehabt, aber an etwas gedacht wie ein Auswahlfeld im Formular um zwischen Standard-Text und "Überschreitungs-Text" zu wechseln.

Ich hoffe du kannst mir helfen.

Viele Grüße,
Martin

PS: Anbei die DB in der aktuellen Version, ohne meine testweisen Spielereien. Ich musste sie allerdings im 2003er Format hochladen  ???
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Juli 10, 2019, 17:16:54
Hallo,
die einzig richtige und sinnvolle Umsetzung ist der Ansatz 3.
Zitatda sowohl KundenID_F als auch StoffID_F bereits in anderen Tabellen verwendet werden, die für die Abfrage erforderlich sind.
Das ist bedeutungslos und sollte bei richtiger Anwendung keine Probleme bereiten.
Bitte baue den Ansatz 3 mal ein und ändere auch mal den Bericht wie Du den gerne hättest. Damit ich nicht von vorn anfangen muss.

Fehler sind erst mal egal, die werden dann ausgebügelt.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Juli 11, 2019, 11:14:25
Hallo Klaus,

vielen Dank für deine Antwort.
Anbei mal der Ansatz, soweit ich ihn mir überlegt habe.
Ich bekomme die Abfrage nicht hin ob der Messwert > Überwachungswert ist und die Einbindung in die Abfrage für den Bericht kann ich nicht erstellen wegen einer Fehlermeldung (dass StoffeID_F bereits in einer anderen Tabelle vorhanden ist)

Viele Grüße,
Martin

Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: MzKlMu am Juli 11, 2019, 17:58:17
Hallo,
Zitat(dass StoffeID_F bereits in einer anderen Tabelle vorhanden ist)
das ist ja das geringste Problem. Du musst ja nur die Felder umbennen. Ich habe einfach noch ein Üw davor gesetzt. Damit sind die Feldnamen eindeutig.
Ich habe Dir mal den Üw in den Bericht eingebaut. Prüfe mal ob das so passt/reicht.

Achtung:
Der Bericht zeigt nur dann Datensätze an, zu der eine Kombination aus Kunde und Stoff angelegt wurde. Das heißt, Du musst für jede mögliche Kombination in der Tabelle "tbl_ÜWerte" einen Datensatz anlegen. Ist kein Üw bekannt, bleibt das Feld leer. Ich habe das mal mit einer Anfügeabfrage gemacht, Du musst nur noch die Werte eintragen.
Was ist denn der Üw für ein Wert, Du hast 2 Kommastellen gewählt, aber als Datentyp "LongInteger", da gibt es keine Kommastellen.

Das Formular "ErfassungÜWert" habe ich auch angepasst.

DB im Anhang.
Titel: Re: Wert aus Abfrage in Formular anzeigen
Beitrag von: yme24 am Juli 12, 2019, 12:21:12
Hallo Klaus,

vielen Dank für deine Hilfe. Ich habe es mal ausprobiert und sowohl das hinzufügen der neuen Stoffe, als auch deren ÜWerte klappen hervorragend. Ich wundere mich zwar etwas darüber, dass Access die IDs so hochzählt, aber das soll mich nicht stören solange die Funktion gegeben ist.
Die Anfügeabfrage habe ich nicht benutzt. Ich werde die ÜWerte einmal händisch im Formular eingeben.

Ich habe in die qry-InfoBrief noch eine Bedingung eingefügt die mir ausgibt ob der Messwert eine Überschreitung darstellt oder nicht. Funktioniert bisher auch bestens.

Es ergibt sich noch ein Problem im Bericht - übrigens ist der Bericht "Anschreiben Starkverschmutzer" derjenige welche. Hier habe ich die Felder "ÜWert" und "Überschreitung" eingefügt. Was jetzt aber zu meinem Glück noch fehlt ist, dass der rot gefärbte Text nur dann erscheint wenn mind. 1 "Ja" im Bericht auftaucht. Außerdem verschiebt sich durch den zusätzlichen Text das Format des Berichts (Seitenumbruch) und ich habe in Access keine Ahnung wie das zu lösen ist. Mir würde nur einfallen einen zusätzlichen Detailbereich im Bericht zu erstellen in dem nur der Zusatztext ist, aber ich weiß nicht wie das geht und ob das was bringt.
Kannst du mir hier einen Tipp geben?

Vielen Dank für deine Geduld :)

Grüße,
Martin

PS: Aktuelle Arbeitsversion ist anbei.

Edit: der ÜWert ist eine Zahl mit 2 Dezimalstellen. Ich hatte nur vergessen von Long Int auf Double umzustellen. Anfängerfehler halt  ;D

Edit 06.08.19: Klaus, ich habe nach einigem tüfteln eine Lösung für das optional anzuzeigende Textfeld gefunden. Seitenumbruch habe ich auch gelöst. Die DB läuft zur Zeit sauber und liefert verlässlich ihre Daten. Nochmals vielen Dank für deine Geduld und Hilfe. Gruß, Martin