Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi nach berechneten Feldern sortieren (https://www.delphipraxis.net/26002-nach-berechneten-feldern-sortieren.html)

oki 16. Jul 2004 10:49


nach berechneten Feldern sortieren
 
Hi Leute,

ich arbeite schon seit längerer Zeit nicht mehr mit der BDE (mag sie einfach nicht). Aus diesem Grund bin ich da auch nicht mehr so richtig fitt.

Nun muß ich ein älteres Projekt updaten. Seinerzeit habe ich der Einfachheit halber für einfache Datenstrukturen die BDE verwendet. Nun macht es für mich keinen Sinn das ganze Projekt auf ein neues Datenbankformat zu ändern (eigentlich macht mir die Programmierung mit der BDE ja auch keine Schwierigkeiten).

Jetzt bekomme ich aber ein spezielles Problem nicht gelöst. Das sieht folgendermaßen aus:

in der Tabelle gibt es zwei Felder; Einkaufspreis und Verkaufspreis.
Ich habe ein berechnetes Feld "Differenz" eingefügt. Im DBGrid möchte ich dem Anwender nun die Möglichkeit geben die Datensätze nach Differenz zu sortieren oder per Filter eingrenzen zu können.
Ich bekomme nur Meldungen wie "Feld Differenz nicht vorhanden" usw.

Kann mir jemand sagen, wie ich das Thema Sortieren/Filtern bei berechneten Feldern angehen muß? Die OH war da nicht hilfreich.

Dank im Voraus,

Gruß oki

Robert_G 16. Jul 2004 11:22

Re: nach berechneten Feldern sortieren
 
Das ist abhängig davon wie du es berechnest.
Berechnest du das Feld in der Abfrage, dürfte es keine Probleme geben:
SQL-Code:
SELECT Feld1
      ,Feld2
      ,abs(Feld1-Feld2) Differenz
FROM DeineTabelle
ORDER BY Differenz
Das macht bei manchen DBMS Probleme, dort würde dann das gehen:
SQL-Code:
SELECT sQ.*
FROM (SELECT Feld1
             ,Feld2
             ,abs(Feld1-Feld2) Differenz
       FROM DeineTabelle) sQ
ORDER BY sQ.Differenz

Jelly 16. Jul 2004 13:11

Re: nach berechneten Feldern sortieren
 
Zitat:

Zitat von Robert_G
SQL-Code:
SELECT sQ.*
FROM (SELECT Feld1
             ,Feld2
             ,abs(Feld1-Feld2) Differenz
       FROM DeineTabelle) sQ
ORDER BY sQ.Differenz

Und da mault dann wieder MySQL, da dort noch keine Subqueries unterstützt werden... Aber folgender Code sollte auf allen DBS funktionieren:
SQL-Code:
select feld1, feld2, abs(feld1-feld2) as Differenz
from tabelle
order by 3
Gruß,
Tom

oki 16. Jul 2004 13:22

Re: nach berechneten Feldern sortieren
 
Hi,

schon mal Dank für die Antworten.

Leider habe ich vergessen zu erwähne, dass ich keine TQuery sondern eine TTable-Kompo (also Standard) verwende. Hier berechne ich die Werte für Differenz zur Laufzeit mittels Ereignis OnCalcFields.
Sortiert wird dann über Setzen der Eigenschaft IndexName (ich hab natürlich Secundärindizes für alle echt "physikalisch" vorhandenen Felder eingerichtet).

So, nu Problem!

Gruß oki

Jelly 16. Jul 2004 14:31

Re: nach berechneten Feldern sortieren
 
Und was spricht jetzt gegen eine TQuery?

oki 19. Jul 2004 08:31

Re: nach berechneten Feldern sortieren
 
Hi Jelly,

dann muß ich halt doch umschreiben, und das wollte ich nicht unbedingt. Außerdem dachte ich, dass es nach dem bekannten Motto geht, mann sucht sich tot und wenn einer einem einen Tipp gibt ist das Problem in einer Minute erledigt. Hab da wohl Pech gehabt.

Gruß oki


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:09 Uhr.

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