AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Berechnung mit SQL, Vorgehensweise
Thema durchsuchen
Ansicht
Themen-Optionen

Berechnung mit SQL, Vorgehensweise

Ein Thema von haentschman · begonnen am 5. Jan 2010 · letzter Beitrag vom 5. Jan 2010
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#1

Berechnung mit SQL, Vorgehensweise

  Alt 5. Jan 2010, 18:58
Datenbank: firebird • Version: 2.0 • Zugriff über: Zeos
Hallo an alle...

ich hätte da gern mal wieder ein Problem.

Gegebenheiten:

- Tabelle mit Terminen Felder: START, ENDE, DATUM und diverse Statusfelder. Diese Termine werden im TMS Planer visualisiert.
- Tabelle mit den Monteuren Felder: NAME und diverse "unwichtige"

Aufgabe:

- Visualisierung der Prozentualen Auslastung der Tage

Was ich brauche:

- eine Ergebnismenge (Query) mit dem Datum und der Auslastung in %

Auslastung in % := (Summe der Stunden der Termine pro Tag / (Anzahl Monteure * 8 Stunden) ) * 100

Wie würdet ihr vorgehen ? Kann man so etwas direkt im SQL berechnen lassen ? Oder eher SP ? Oder die Daten Clientseitig berechnen lassen und eine Query füllen.

PS: ich erwarte keine fertige Lösung, ich will ja noch was lernen. Nur könnt ihr mir ein paar Wattebällchen dazwischen schieben bevor ich gegen die Wand laufe

Danke für Info´s
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Berechnung mit SQL, Vorgehensweise

  Alt 5. Jan 2010, 19:07
Ich würde die Query so schreiben, dass sie die "Summe der Stunden der Termine pro Tag" und die "Anzahl Monteure" in zwei getrennten Feldern liefert.
Die Query sieht ganz grob so aus:
SQL-Code:
SELECT datum, SUM(stunden) AS WorkingHours, SUM(Monteure) AS WorkersCount FROM ...
GROUP BY datum
ORDER BY datum
Die Auslastung würde ich clientseitig mit einem Calculated Field berechnen.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.292 Beiträge
 
Delphi 12 Athens
 
#3

Re: Berechnung mit SQL, Vorgehensweise

  Alt 5. Jan 2010, 19:19
Danke für deine schnelle Antwort.

was das clientseitige betrifft, habe ich einfach Angst, daß bei der Berechnung die Performance in den Keller geht. Stell dir mal vor, 10 Monteure, jeder 5 Termine am Tag * 1 Monat bzw. bei der Jahresübersicht 365 Tage.

Ansonsten machbar.

Geht eigentlich eine View, welche über eine SP bei Änderung der Tabelle Termine bzw. Monteure neu berechnet wird, so daß ich nur die View auslesen muß ?
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Berechnung mit SQL, Vorgehensweise

  Alt 5. Jan 2010, 19:31
Zitat von haentschman:
... habe ich einfach Angst, daß bei der Berechnung die Performance in den Keller geht.
Die Daten werden doch über die GROUP BY Klausel verdichtet - pro Tag nur ein Datensatz.
Das Grid zeigt davon vielleicht 30 Datensätze auf dem Bildschirm an; also wird bei jedem Scrollen 30 Mal das Event OnCalcFields aufgerufen.
Selbst leistungsschwache Rechner haben mit der einfachen Prozentberechnung kein Problem.
Delphi-Quellcode:
// ungetestet
procedure TForm1.QuerySummeCalcFields(Dataset:TDataset);
const
  WORKING_HOURS_PER_DAY = 8.0;
begin
  Dataset['Auslastung'] := Dataset.FieldByName('WorkingHours').AsFloat / (Dataset.FieldByName('WorkersCount').AsFloat * WORKING_HOURS_PER_DAY) * 100.0;
end;
fork me on Github
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:28 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