![]() |
SQL: Betrag ermitteln
Hallo,
gibt es eine Möglichkeit, in Paradox per SQL den Betrag einer Zahl zu ermitteln (also ihren Wert unabhängig vom Vorzeichen)? Ciao, sepp001 |
Re: SQL: Betrag ermitteln
bin nicht sicher, ob Paradox das mitmacht aber wenn ja, dann geht es so:
SQL-Code:
Gruß
SELECT ABS(Feldname) AS Betrag
FROM Tabelle |
Re: SQL: Betrag ermitteln
Das ist ja [edit] leider [/edit] das Problem: diese Funktion steht nicht zur Verfügung. Naja, werde ich mir was anderes einfallen lassen müsen.
Trotzdem vielen Dank! Ciao, sepp001 |
Re: SQL: Betrag ermitteln
Ich würde ja Folgendes vorschlagen:
SQL-Code:
aber das kann Paradox (local SQL) ja auch nicht. :wall:
Select SQRT(feld*feld) AS Betrag FROM Tabelle
|
Re: SQL: Betrag ermitteln
Wäre auch ziemlich krass, ihn jedesmal eine Wurzel rechnen zu lassen... :mrgreen:
Schaue dir doch mal den von r_Kerber so oft empfohlenen ADS Localserver an. Der kann IMHO auch deine Paradox-tabellen verarbeiten. |
Re: SQL: Betrag ermitteln
Hallo,
da gibt es leider 2 Probleme: a) kann ich mir das Wurzelziehen wegen Rundungsdifferenzen nicht erlauben (wir haben ein Kassensytem auf dem Markt) und b) setzen wir extern entwickelte Komponenten aus Sicherheitsgründen nur sehr ungern ein. Wir haben jetzt einfach die Berechnung in Delphi verändert. Ciao, sepp001 |
Re: SQL: Betrag ermitteln
ADS Local ist eine br<auchbare Desktop DB.
Die BDE hat so viel mit Sicherheit (vor allem Dateisicheerheit!) zu tun, wie G.W. Bush mit durchdachter Politik. Außerdem unterstützt ADS IMHO den kompletten ANSI-SQL92-Standard, die BDE streckt schon alle Viere von sich wenn es um den Betrag einer Zahl geht. |
Re: SQL: Betrag ermitteln
vielleicht kannst du den typ casten.
SQL-Code:
local Sql müsste das casten unterstützen.
select cast(betrag as integer)
from Tabelle raik |
Re: SQL: Betrag ermitteln
Hallo,
ein Type-Casting hilft mir nicht weiter, da ich nur das negative Vorzeichen (so vorhanden) verschwinden lassen will. Und eine andere Datenbank kommt aus Kompatibilitätsgründen bei Kunden nicht in Frage. Ciao, sepp001 |
Re: SQL: Betrag ermitteln
Zitat:
Überlege es dir nochmals; mit Paradox kommst du auf keinen grünen Zweig. Falls du z.B. Autoincrement-Felder verwendest, hast du im harten Praxiseinsatz schon verloren (alle paar Monate oder Wochen muss repariert werden). |
Re: SQL: Betrag ermitteln
Hallo,
ich weiss mittlerweile ziemlich gut, was Paradox ist. Und das Produkt läuft bereits seit mehr als 5 Jahren ohne Probleme beim Kunden. Ausserdem ist es nicht meine Entscheidung, was für eine Datenbank eingesetzt wird. Das Migrieren auf eine andere Datenbank (geplant: irgendwann vielleicht mal Firebird auf Linux-Server) würde uns momentan zuviel Entwicklungszeit kosten. Ciao, sepp001 |
Re: SQL: Betrag ermitteln
Also Sepp - wenn Du auf Paradox festgelegt bist, mußt Du wohl tricksen.
Wenn Du ein eindeutiges Schlüsselfeld hast, und Paradox "Union All" kennt, könntest folgendes versuchen:
SQL-Code:
Du selectierst id und Betrag, sowie id und negativer Betrag, vereinigst diese ergebnisse mit Union und gruppierst dann nach id (reduzierst also die gedoppelten Datensätze wieder auf einen) und holst Dir mit "max" den höchsten Wert (immer positiv).
SELECT A.idFeld
, max(A.DerBetrag) as Betrag FROM (SELECT idFeld , DeinWunschfeld As DerBetrag FROM Tabelle UNION ALL SELECT idFeld , (DeinWunschFeld * -1) As DerBetrag FROM Tabelle ) A GROUP BY A.idFeld Ende meines ParadoxLateins Gruß |
Re: SQL: Betrag ermitteln
Hallo Sepp,
ich meine, dass Local SQL keine verschachtelten SELECTS zulässt, was aber funktioniert ist:
SQL-Code:
Also einfach in String umwandeln, das - Zeichen "wegtrimmen" und zurückverwandeln).
select CAST(TRIM(LEADING "-" FROM CAST(wert as char(10)))as integer) from test
|
Re: SQL: Betrag ermitteln
Hallo,
@MrSpock: Die Idee ist super, nur leider würde genau das zu einem geschachtelten SELECT führen. *ärger* Wie gesagt, das Problenm ist bereits per Delphi gelöst. Trotzdem vielen Dank! Ciao, sepp001 |
Re: SQL: Betrag ermitteln
Hallo sepp001,
die Anweisung selbst ist ja noch kein verschachteltes SELECT. Es kann natürlich sein, dass du aus dieser Datenmenge etwas auswählen willst, aber auch das muss noch nicht zwangsweise in einem verschachteltes SELECT Statement geschehen. OK, du hast es ja bereits gelöst, aber ich bin noch nicht überzeugt, dass sich dein Problem nicht mit local SQL lösen lässt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:45 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