Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Werte aus DB auf 100% umrechnen? (https://www.delphipraxis.net/96076-werte-aus-db-auf-100-umrechnen.html)

divBy0 18. Jul 2007 10:50

Datenbank: MySQL • Version: 5 • Zugriff über: ZeosLIB

Werte aus DB auf 100% umrechnen?
 
Hallo zusammen!

Bei folgendem Vorhaben brauche ich mal eure Hilfe, ich weiß keinen Lösungsweg.

Also, in der Datenbank sind Prozesswerte gespeichert, die sollen natürlich auch angezeigt werden, geht soweit auch über TDBChart ganz gut.
Jetzt sollen in einer Übersicht aber die Werte auch auf 100% skaliert werden, und entsprechend angezeigt werden. Kann ich das über ein SQL-Befehl machen? Oder eine stored-procedure? Sorry, für die dummen Fragen, bis jetzt habe ich mit DBs immer nur gespeichert und wieder geladen.

Bin für jede Hilfe dankbar.

Gruß

mkinzler 18. Jul 2007 10:52

Re: [Frage] - Werte aus DB auf 100% umrechnen?
 
Einfacher Dreisatz:

wert/Proz*100

Ist so direkt in der SQL-Anweisung möglich
SQL-Code:
select Wert, Proz, (wert/Proz*100) as 100proz, ... from <Tabelle>;

divBy0 18. Jul 2007 11:05

Re: [Frage] - Werte aus DB auf 100% umrechnen?
 
Danke mal für die schnelle Antwort.

Das rechnet den einen Wert auf 100%, aber wie geht das denn mit allen anderen Werten? Es soll ja die ganze Kurve von 0% - 100% dargestellt werden.

Eigentlich müsste doch zuerst aus allen Werten der größte ermittelt werden, dieser entspricht dann 100%, und alle anderen müssen dann entsprechend umgerechnet werden.

Wenn doch der größte Wert dann z.B. 70 entspricht, wäre der Faktor 100/70 = 1,429, dann müssten alle Werte aus dieser Spalte mit 1,429 multipliziert werden. Oder bin ich jetzt durcheinander? :gruebel:

mkinzler 18. Jul 2007 11:10

Re: [Frage] - Werte aus DB auf 100% umrechnen?
 
Würde ich dann in 2 Abfragen machen.

divBy0 18. Jul 2007 11:28

Re: [Frage] - Werte aus DB auf 100% umrechnen?
 
So, werde das mal probieren, wenn ich noch welche Probleme hab, dann meld ich mich!

Danke nochmal!

marabu 18. Jul 2007 11:36

Re: Werte aus DB auf 100% umrechnen?
 
Hallo,

vielleicht verstehe ich nicht richtig, aber mir schwebt folgendes vor:

SQL-Code:
select wert * 100 / (select max(wert) from prozesswerte) from prozesswerte
Grüße vom marabu

oldmax 18. Jul 2007 12:25

Re: Werte aus DB auf 100% umrechnen?
 
Hi
Nun, ich glaube nicht, das der größte Wert 100% entspricht, oder besser gesagt, muß er nicht. Nehmen wir einen Motor dessen Nennstrom 35 A beträgt, dann werden in der Datenbank Werte je nach Auslastung von 10 - 100 A hinterlegt sein und Einschaltströme können gut das 3,5 fache von dem Nennstrom haben. Daher ist es m.E. wichtig, den Bezug zu den Zahlen festzulegen, eben 100 % ist Nennwert, nicht größter genessener oder gespeicherter Wert.
Gruß oldmax

divBy0 18. Jul 2007 12:27

Re: Werte aus DB auf 100% umrechnen?
 
Hi Marabu!

Zum Verständniss, in der Datentabelle gibt es unter anderem eine Spalte "Druck (bar)" und "Durchfluss (m³)".

Diese Werte sollen in einem TDBChart also Liniendiagramm dargestellt werden, da jetzt allerdings der Druck Werte 0 - 16 bar hat und der Durchfluss viel größere Werte hat, ist abhängig von der Laufzeit (z.B. bis 100m³ oder mehr), ist die Ablesbarkeit nicht so gut, weil die Kurve vom Druck ja viel kleiner dargestellt wird.
Daher sollen die Kurven einfach den größten Wert als 100% annehmen und entsprechend alle niedrigeren Werte umrechnen.

Also, 100% entspricht dann einem Druck von 16 bar, das ist ja kein Problem, aber da der Durchfluss ja variiert, muss da erst der Maximalwert ermittelt werden und da hänge ich irgendwie dran.

Ich hoffe, dass das jetzt einigermaßen verständlich war. Mein Hauptproblem ist dabei die SQL-Syntax, damit komme ich noch so gut zurecht. :oops:

Gruß

divBy0 18. Jul 2007 12:30

Re: Werte aus DB auf 100% umrechnen?
 
Hi Oldmax!

Der größte Wert aus einer Spalte soll aber 100% entsprechen, dabei wäre ja auch der Anlaufstrom von einem Motor mit einbegriffen, da ja der Maximalwert ermittelt werden muss.

Bei deinem Beispiel wäre der Anlaufstrom von 100A dann auch ein Wert von 100%, wenn der Motor dann mal seine Drehzahl erreicht hat und unter normalen Bedingungen läuft, liegt der Durchschnittswert von 35A ja auch bei 35% und so soll es ja letztendlich auch mal sein.

Gruß

mkinzler 18. Jul 2007 12:41

Re: Werte aus DB auf 100% umrechnen?
 
Das Maximum einer bestimmten Spalte oder das Maximum über mehrere Spalte.

divBy0 18. Jul 2007 13:11

Re: Werte aus DB auf 100% umrechnen?
 
Also, die Tabelle hat 10 Spalten und von jeder Spalte brauch' ich ein Maximum.

mkinzler 18. Jul 2007 13:16

Re: Werte aus DB auf 100% umrechnen?
 
das wäre dann eine Abfrage mit 10 Aggegats-Subselects. da müsste man schauen, wie das ganze performencetechnisch auswirkt.

marabu 18. Jul 2007 13:29

Re: Werte aus DB auf 100% umrechnen?
 
Hallo,

auch bei zehn Spalten sollte es funktionieren:

SQL-Code:
select
  druck * 100 / (select max(druck) from prozesswerte),
  durchfluss * 100 / (select max(durchfluss) from prozesswerte)
from prozesswerte
Freundliche Grüße

alex517 18. Jul 2007 14:22

Re: Werte aus DB auf 100% umrechnen?
 
Hi,

Zitat:

Zitat von marabu
Hallo,

auch bei zehn Spalten sollte es funktionieren:

SQL-Code:
select
  druck * 100 / (select max(druck) from prozesswerte),
  durchfluss * 100 / (select max(durchfluss) from prozesswerte)
from prozesswerte

Ich kenne MySQL nicht, aber in Firebird würde je Ergebnismengen-Datensatz jedes Subselect
einmal aufgerufen werden.
Wenn du z.B. in diesem Fall 10000 Datensätze zurückbekommst, so wird
10000 Mal (select max(druck) ..) und 10000 Mal (select max(durchfluss) ..) ausgeführt.
Ich würde auf jeden Fall die Performence überprüfen und ggf. die Abfrage über eine SP realisieren.
In der SP kann man als Erstes alle Max/Min-Werte über eine Abfrage holen, in Variablen speichern
und danach in der eigentlichen Abfrage verwenden.

alex

divBy0 18. Jul 2007 14:37

Re: Werte aus DB auf 100% umrechnen?
 
Danke euch allen!!

Mit der Methode vom Marabu :-D funktioniert es. Performance wird sich im Praxiseinsatz zeigen, noch sind zu wenige Daten in der Tabelle.

oldmax 19. Jul 2007 05:40

Re: Werte aus DB auf 100% umrechnen?
 
Hi
DivBy0 schrieb
Zitat:

Bei deinem Beispiel wäre der Anlaufstrom von 100A dann auch ein Wert von 100%, wenn der Motor dann mal seine Drehzahl erreicht hat und unter normalen Bedingungen läuft, liegt der Durchschnittswert von 35A ja auch bei 35% und so soll es ja letztendlich auch mal sein.
Sorry, ich wollte lediglich darauf hinweisen, das 100 % die Nennlast, der Nennstrom, die Nennleistung etc. ist. Werte, die drüber oder drunter liegen sind eben auch oberhalb oder unterhalb von den Nennangaben. Sich auf den höchsten Wert in einer Datenbank zu beziehen ohne die Nennangaben zu prüfen ist falsch, da es durchaus sein kann, dass der Wert nie die Nennangabe erreicht oder kurzzeitig weit überschritten wird. Also keine zuverlässige Aussage über die reale Auslastung. Im Beispiel des Motors wird dies deutlich, das sein Anlaufstrom bei 350 % vom Nennstrom sein kann. Wenn du diesen auf 100 % bewertest, wird jeder sagen, da ist ja noch mehr rauszuholen, der läuft ja noch nicht mal mit 30 % und schon hat du nach kurzer Zeit Schrott...
Wenn du einen Durchfluß mißt, ist am Geber die 100% festgelegt, sei es durch den el. Meßwert
(oft 0-20 mA), den max. Durchfluß oder was auch immer. Darauf kannst du dann deine Angaben bewerten. Dasselbe gilt für den Druck. Auch hier ist angegeben, welche Werte der Meßwert max. annehmen kann. Es ist daher auch möglich, wenn die Sensorik falsch bemessen ist, und der Wert permanent an dem max. Wert hängt, das du durchaus Werte erhalten würdest, die über 100 % liegen, wenn es die Signalhöhe zuließe..
Also Norm 0 bis 20 mA, Signal bei 25 mA wäre eine Überschreitung von 25 %. Allerdings wird die Sensorik nur 20 mA liefern und du liegst fest....

Gruß oldmax

divBy0 19. Jul 2007 22:25

Re: Werte aus DB auf 100% umrechnen?
 
Hi Oldmax,

das stimmt zwar alles, bei einem Nennwert von irgendwas Ampere oder was auch immer, ist aber das Bereichsende des Sensors noch nicht erreicht.
Die 100% Maximalwert entsprechen dann den 20mA, 0% entsprechen 4mA.

Dabei ist das ganz egal, ob es ein Druck, Strom, Spannung, Durchfluss oder ne Katze ist... spielt einfach keine Rolle 100% = 20mA.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz