AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Verständnissfrage zu IIF Abfrage in SQLite mit Firedac
Thema durchsuchen
Ansicht
Themen-Optionen

Verständnissfrage zu IIF Abfrage in SQLite mit Firedac

Ein Thema von fisipjm · begonnen am 8. Mär 2022 · letzter Beitrag vom 9. Mär 2022
Antwort Antwort
fisipjm

Registriert seit: 28. Okt 2013
298 Beiträge
 
#1

Verständnissfrage zu IIF Abfrage in SQLite mit Firedac

  Alt 8. Mär 2022, 11:33
Datenbank: SQLite • Version: 3.31.1 • Zugriff über: Firedac
Hi,

ich habe folgende Situation. Eine lokale FFDMemtable, TFDLocalSQL und TFDQuery.
Ich frage über die Query die daten der Memtable ab. Jetzt hab ich nur folgendes Problem. Ich nutze Delphi 10.4 und will in der Query die IIF Function verwenden. In folgendem Forum hab ich gelesen warum ich wohl aktuell immer nur leere Werte zurück bekomme.
https://en.delphipraxis.net/topic/36...ite-local-sql/

Soweit versteh ich das, was ich nicht verstehe ist warum ich die Query in der IDE zur Designtime auführen kann und alle Daten passen, also scheint es ja doch irgendwie zu gehen.
Habt ihr Ideen? Ich hab es jetzt umgeschrieben in ein Case kontrukt. Wird aber halt gefühlt um den faktor 10 unübersichtlicher.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: Verständnissfrage zu IIF Abfrage in SQLite mit Firedac

  Alt 9. Mär 2022, 12:00
Ich kenne mich mit den Interna der verschiedenen Delphi Versionen nicht aus. Bzw ist unklar, wie, welches SQLite hier (manuell ggf) eingebunden wird: in der IDE, EXE?
IIF() scheint jedenfalls innerhalb der SQLite Funktionen relativ neu zu sein. Vielleicht eine Versionsfrage. Ob das diese Auswirkungen hat ist allerdings wiederum fraglich.

Ggf. sind einfach die Besonderheiten von SQLite (Typaffinität) und den "Ausdrucksmöglichkeiten" von IIF() so speziell, dass sie im DBClient nicht perfekt umgesetzt sind. IIF / CASE WHEN kann theoretisch je nach Datenlage unterschiedliche Ergebnistypen produzieren. SQLite selbst ist das dank Typaffinität wahrscheinlich relativ egal, dem DBClient vielleicht weniger. Die Sachlage kann dabei unterschiedlich kompliziert sein, je nach Datentypvermischung, impliziter Konvertierbarkeit und vielleicht auch der Existenz von NULL Werten.

In neuen SQLite Versionen (der letzten Stand Ende Februar 2022) gibt es den Strict Mode, der grundlegend das Verhalten von SQLite und Spaltentypen ändert Richtung "normaler" DB. Klappt vielleicht besser, hat aber vielleicht auch unerwartete Effekte auf den Bestandscode, jenachdem wie sauber der entwickelt wurde.

Wenn es mit CASE WHEN geht, würde ich es erstmal so lassen und vielleicht mal bei den Client Entwicklern fragen.
Gruß, Jo
  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 02:33 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