collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 65
  • Punkt Versteckte: 0
  • Punkt Mitglieder: 0

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14471
  • stats Beiträge insgesamt: 72211
  • stats Themen insgesamt: 9746
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Wert aus Abfrage in Formular anzeigen  (Gelesen 2422 mal)

Offline yme24

  • Newbie
  • Beiträge: 34
Wert aus Abfrage in Formular anzeigen
« 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
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8084
Re: Wert aus Abfrage in Formular anzeigen
« Antwort #1 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.
Gruß
Klaus
 
Folgende Mitglieder bedankten sich: yme24

Offline yme24

  • Newbie
  • Beiträge: 34
Re: Wert aus Abfrage in Formular anzeigen
« Antwort #2 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?
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8084
Re: Wert aus Abfrage in Formular anzeigen
« Antwort #3 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
Gruß
Klaus
 

Offline yme24

  • Newbie
  • Beiträge: 34
Re: Wert aus Abfrage in Formular anzeigen
« Antwort #4 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
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8084
Re: Wert aus Abfrage in Formular anzeigen
« Antwort #5 am: Januar 31, 2019, 10:00:03 »
Hallo,
Die Berechnung alleine führt nicht zu diesem Verhalten.
Zeige bitte mal die Abfrage (SQL).
Gruß
Klaus
 

Offline yme24

  • Newbie
  • Beiträge: 34
Re: Wert aus Abfrage in Formular anzeigen
« Antwort #6 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
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8084
Re: Wert aus Abfrage in Formular anzeigen
« Antwort #7 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.
« Letzte Änderung: Februar 04, 2019, 00:01:39 von MzKlMu »
Gruß
Klaus
 
Folgende Mitglieder bedankten sich: yme24

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1483
Re: Wert aus Abfrage in Formular anzeigen
« Antwort #8 am: Januar 31, 2019, 10:49:28 »
Abfragen mit Gruppierung können nicht aktualisiert werden.
Grüße von der (⌒▽⌒)
 

Offline yme24

  • Newbie
  • Beiträge: 34
Re: Wert aus Abfrage in Formular anzeigen
« Antwort #9 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

 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8084
Re: Wert aus Abfrage in Formular anzeigen
« Antwort #10 am: Januar 31, 2019, 11:21:19 »
Hallo,
Zitat
aber 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.
Gruß
Klaus
 

Offline yme24

  • Newbie
  • Beiträge: 34
Re: Wert aus Abfrage in Formular anzeigen
« Antwort #11 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.
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8084
Re: Wert aus Abfrage in Formular anzeigen
« Antwort #12 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 ?
« Letzte Änderung: Januar 31, 2019, 12:18:01 von MzKlMu »
Gruß
Klaus
 
Folgende Mitglieder bedankten sich: yme24

Offline yme24

  • Newbie
  • Beiträge: 34
Re: Wert aus Abfrage in Formular anzeigen
« Antwort #13 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
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 8084
Re: Wert aus Abfrage in Formular anzeigen
« Antwort #14 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.

Gruß
Klaus
 
Folgende Mitglieder bedankten sich: yme24

 

VBA-Code funktioiniert bei einem Wert, bei einem anderen nicht

Begonnen von OPSBoard Access Programmierung

Antworten: 7
Aufrufe: 8461
Letzter Beitrag Mai 19, 2010, 17:29:09
von OPS
Gebunde Spalte - Wert ist Weg

Begonnen von ACCOBoard Formular

Antworten: 1
Aufrufe: 2576
Letzter Beitrag Juni 10, 2010, 09:10:38
von DF6GL
Filter Wert überprüfen

Begonnen von pepperbreathBoard Access Programmierung

Antworten: 3
Aufrufe: 3253
Letzter Beitrag Juni 15, 2010, 15:23:44
von pepperbreath
Wert aus Unterformular über Textfeld in Tabelle speichern

Begonnen von nappillBoard Formular

Antworten: 14
Aufrufe: 6477
Letzter Beitrag Januar 08, 2018, 10:35:01
von MzKlMu
Dropdownlisteneintrag mit Tabelle verknüpfen und Wert speichern für Vergleich

Begonnen von ohnePlanBoard Microsoft Excel

Antworten: 2
Aufrufe: 2736
Letzter Beitrag August 16, 2010, 13:14:16
von ohnePlan

Advertisment / Werbung - Amazon Affiliate Links