![]() |
Datenbank: ORACLE • Version: 9 • Zugriff über: DATABASE
Berechnetes Feld in TQuery
Hallo zusammen,
wie kann ich z.B. sowas:
Delphi-Quellcode:
in eine Select - Abfrage umbauen und in einer TQuery implementieren ?
if Query['DRUCKGERAETVORHANDEN'] = 1 then
begin Query['KEIN_DB'] := 'P'; end else begin Query['KEIN_DB'] := ''; end; Gruss Holger P.S.: KEIN_DB -> zur Zeit ein berechnetes Feld DRUCKGERAETVORHANDEN -> Spalte in der Datenbank |
Re: Berechnetes Feld in TQuery
Ungetestet:
SQL-Code:
SELECT Feld1,(CASE DRUCKGERATVORHANDEN WHEN 1 THEN 'P' ELSE '' END) AS KEIN_DB
FROM Tabelle WHERE... |
Re: Berechnetes Feld in TQuery
Funktioniert,
super ... Danke ... Gruss Holger |
Re: Berechnetes Feld in TQuery
Habe da jetzt mal was gebaut, das klappt aber nicht ganz. Er sagt mir fehlender Ausdruck:
Delphi-Quellcode:
Gruss
(CASE SYSWVKISU.ZEITSCHEIBEN.LEIST WHEN > (SELECT SYSDBP.DBP_KATEGORIE.LEISTUNGSWERT FROM SYSDBP.DBP_KATEGORIE WHERE ID = 1) THEN 'P' ELSE '' END) AS LEI_PRUE
Holger |
Re: Berechnetes Feld in TQuery
Bei Oracle weiß ich es nicht genau, aber das SQL-Case arbeitet AFAIK ähnlich dem Delphi-Case, d.h. Du musst zum Vergleichen Konstanten verwenden. Deshalb geht das so nicht. Ich überlege aber gerade, wie man das umformulieren könnte, ist aber (zumindest für mich) nicht ganz einfach.
|
Re: Berechnetes Feld in TQuery
Versuch mal, ob das so geht:
SQL-Code:
(CASE SIGN(SYSWVKISU.ZEITSCHEIBEN.LEIST - (SELECT SYSDBP.DBP_KATEGORIE.LEISTUNGSWERT
FROM SYSDBP.DBP_KATEGORIE WHERE ID = 1)) WHEN 1 THEN 'P' ELSE '' END) AS LEI_PRUE |
Re: Berechnetes Feld in TQuery
Hi,
das klappt. Super danke. Aber wie berechneest Du da die 1. Du ziehst die eine Leitung von der anderen ab. Und was macht das SIGN ? Gruss Holger |
Re: Berechnetes Feld in TQuery
SIGN ermittelt das Vorzeichen. Wenn das Ergebnis der Subtraktion positiv ist, kommt eben 1 heraus, d.h. erster Wert ist größer als 2 Wert. :zwinker:
|
Re: Berechnetes Feld in TQuery
Clever,
kannst Du mir noch verraten, wie Du zwei Spalten multiplizieren würdest um dann das Ergebnis anzuzeigen ? Gruss Holger |
Re: Berechnetes Feld in TQuery
Einfach
SQL-Code:
...<Spalte1> * <Spalte2> as Erg...
|
Re: Berechnetes Feld in TQuery
Stimmt,
klappt ... danke ... Habe schon wieder zu kompliziert gedacht. Gruss Holger |
Re: Berechnetes Feld in TQuery
Hi,
jetzt habe ich da aber noch eine Frage. Wie kann ich so eine ELSE - ABfrage verschachteln ? Wenn ich das so mache:
Delphi-Quellcode:
dann wird nur der Teil hinter dem ersten ELSE berücksichtigt ...
(CASE SYSDBP.DBP_LEISTUNGSWERTE.TYP_ID WHEN NULL THEN '''' ELSE (CASE SYSDBP.DBP_LEISTUNGSWERTE.VERANTWORTUNG WHEN 1 THEN '''' ELSE ''P'' END) END) AS VERANTWORTUNG
Gruss Holger |
Re: Berechnetes Feld in TQuery
Zieh doch beide Felder in eine Bedingung.
kennt oracle IIF()? |
Re: Berechnetes Feld in TQuery
Wie würde das denn mit IIF aussehen ?
Gruss Holger P.S.: Weiss nicht ob ORACLE das kann, aber wenn ich schon die korrekte Zeile habe probiere ich es aus. |
Re: Berechnetes Feld in TQuery
|
Re: Berechnetes Feld in TQuery
Habe mal den Lesetip gelesen:
So schreibt er mir immer Rechte Klammer fehlt:
Delphi-Quellcode:
Gruss
(DECODE SYSDBP.DBP_LEISTUNGSWERTE.TYP_ID, NULL , NULL, (CASE SYSDBP.DBP_LEISTUNGSWERTE.VERANTWORTUNG WHEN 1 THEN '''' ELSE ''P'' END)) AS VERANTWORTUNG
holger |
Re: Berechnetes Feld in TQuery
Ich denke DECODE ist für mich auch nicht richtig.
Ich will ja wenn Spalte A NULL ist das Nichts ausgegeben wird. Wenn Spalte A nicht NULL ist soll geprüft werden, ob Spalte B 1 oder NULL ist. Bei NULL wird 'P' ausgegeben und bei 1 wieder Nichts. Gruss Holger |
Re: Berechnetes Feld in TQuery
Ich habe es:
Delphi-Quellcode:
Die kombi machts.
DECODE (SYSDBP.DBP_LEISTUNGSWERTE.TYP_ID, NULL , '''', (CASE SYSDBP.DBP_LEISTUNGSWERTE.VERANTWORTUNG WHEN 1 THEN '''' ELSE ''P'' END))) AS VERANTWORTUNG
Danke und Gruss Holger |
Re: Berechnetes Feld in TQuery
Zitat:
SQL-Code:
iif( SYSDBP.DBP_LEISTUNGSWERTE.TYP_ID is 0 or SYSDBP.DBP_LEISTUNGSWERTE.VERANTWORTUNG = 1, '''', ''P'')
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:02 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 by Thomas Breitkreuz