AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Einfache Formeln in Tabellenfeldern
Thema durchsuchen
Ansicht
Themen-Optionen

Einfache Formeln in Tabellenfeldern

Ein Thema von EarlyBird · begonnen am 19. Feb 2011 · letzter Beitrag vom 19. Feb 2011
Antwort Antwort
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#1

Einfache Formeln in Tabellenfeldern

  Alt 19. Feb 2011, 12:08
Hallo,
Ich habe eine Tabelle mit 10 Feldern und ca. 5000Datensätze.
Alle Felder enthalten verschiedene Integer Werte.
Nun möchte ich dem User die Möglichkeit geben einfache Berechnungen mit diesen Feldern zu erstellen.
Genauer gesagt soll man eine einfache Formeln speichern können die dann immer wieder zur Berechnung genutzt wird.
z.B. User1 möchte folgende Formeln berechnen "erste Formel: (Feld1 + Feld2 + Feld8) / Feld3" und "zweite Formel: ((Feld5*Feld7) + Feld3) div 3"

Als Ausgabe möchte ich nun alle Felder der Tabelle in einem Grid ausgeben und zusätzlich die Ergebnisse der Berechnungen.
Wichtig ist das der User die Formeln selber erstellen kann und diese Formeln gespeichert werden können.
Es geht nicht um komplexe Formeln sondern um einfache Grundrechenfunktionen.

Mir fehlt noch der richtige Denkanstoß um das ganze Umzusetzen.
Wie habt Ihr so etwas gelöst?
Besten Dank für Eure Unterstützung
Gruß
EarlyBird

Geändert von EarlyBird (19. Feb 2011 um 12:23 Uhr) Grund: aussagekräftigerer Titel
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#2

AW: User berechnungen

  Alt 19. Feb 2011, 12:20
Du kannst der DB per SQL ja sagen, welche Ergebnisse sie dir liefern soll. Da SQL auch die Grundrechenarten unterstützt, musst du einfach nur deine Formel als weiteres Feld definieren und per SELECT abfragen. Also etwa so:
SQL-Code:
SELECT Feld1, Feld2, Feld3, Feld1 + Feld2 + Feld3 AS Ergebnis
FROM Zahlentabelle WHERE 1;
Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#3

AW: Einfache Formeln in Tabellenfeldern

  Alt 19. Feb 2011, 12:30
Danke für die schnelle Antwort.
Ich bekomme das mit der Abfrage schon hin.
Aber wie kann der User das Eingeben wenn das Programm läuft?
Oder meinst Du ich soll die kompletten Selectstatments speichern?
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#4

AW: Einfache Formeln in Tabellenfeldern

  Alt 19. Feb 2011, 14:08
Du musst ja nur den Teil (bei mir jetzt) zwischen "Feld3," und dem "AS Ergebnis" speichern. Der Rest ist immer gleich. Vor dem Ausführen musst du das SQL-Statement noch zusammenbauen und zwar hast du das entweder per Parameter ('SELECT *, :p AS Ergebnis ...' und dann SQL.Params('p').AsString := 'Feld1 + Feld2'; ) oder aber normal ('Select *, ' + UserQuery + ' AS Ergebnis ...').

ACHTUNG: Du musst in allen Fällen noch für eine gewisse Grundsicherheit sorgen, da ansonsten der User dazu ermächtigt wird, per SQL-Injection dein Programm oder die Tabelle dahinter zu zerstören.

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

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

AW: Einfache Formeln in Tabellenfeldern

  Alt 19. Feb 2011, 14:13
Formeln zur Laufzeit berechnen: Hier im Forum suchenMatheparser
So ein Parser in Verbindung mit einem Calculated Field das im Event OnCalcFields befüllt wird
würde dein Problem lösen.
Der Benutzer könnte die Formel zur Laufzeit ändern und das Ergebnis im DBGrid sehen.
Auf jeden Fall ist die Berechnung ohne SQL flexibler.

Die Frage wäre noch, ob es nicht klüger wäre das Dataset nach Excel zu exportieren,
um dem Benutzer so die Möglichkeit zu geben auch komplexe Berechnungen sowie
Visualisierung mit Diagrammen vorzunehmen.
Das hängt von der Zielgruppe (Privat, Verein, Kommerziell, Wissenschaftl.,...) ab.
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#6

AW: Einfache Formeln in Tabellenfeldern

  Alt 19. Feb 2011, 14:18
Ja, es gibt immer mehrere Wege. Da ich (dort, wo ich das verwendet habe), auch noch über die Summe sortiert habe, blieb mir nichts anderes übrig, als die Berechnung vom DB-Server (über SQL) durchführen zu lassen.
Nutzt man einen Matheparser und erledigt das ganze im Programm dürfte das einen großen Geschwindigkeitsvorteil bringen, da nicht immer wieder alle 50.000 Datensätze geladen werden müssen und der Mathe-Parser eventuell mehr Funktionen bereitstellt, als der DB-Server per SQL. Eine Export-Funktion fände ich auch nicht schlecht (Excel beherrscht etwa um die 1000 - 1300 Funktionen).

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  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 13:32 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