![]() |
Datenbank: SQLite • Version: 3.9.2 • Zugriff über: Firedac
Problem mit Date in SQLite3 und Firedac
Hallo,
ich habe hier ein seltsames Problem SQLLITE, Berlin U2 , Firedac Ich bin daran ein altes Project (nicht von mir) von der BDE nach Firedac zu konvertieren jetzt steh ich echt auf dem Schlauch Die Daten sind schon alle in einer neuen SQLite DB Folgende Tabelle (gekürzt) :
Code:
CREATE TABLE "rechnungen"(
"ID" INTEGER PRIMARY KEY, "Zahlbis" DATE, "Mahnstufe" INTEGER DEFAULT 0, "Gebucht" BOOLEAN DEFAULT false, "istBezahlt" BOOLEAN DEFAULT false, "istTeil" BOOLEAN DEFAULT false, "Gesamtbetrag" CURRENCY, "Zahlbetrag" CURRENCY ); Mit dieser Query:
Code:
Das funktioniert und liefert das gewünschte Ergebnis
SELECT
SUM(Gesamtbetrag) as ZAHLUNG , Mahnstufe FROM RECHNUNGEN WHERE (Gebucht and ((not istbezahlt) or istteil)) and ( coalesce (Gesamtbetrag, 0) > coalesce(Zahlbetrag, 0) /* and ( ZAHLBIS <= :HEUTE ) */ /* and ( ZAHLBIS <= CURRENT_DATE ) */ ) GROUP BY MAHNSTUFE ORDER BY MAHNSTUFE Nehme ich eine der Zeilen mit dem ZAHLBIS in die Abfrage kommen keine Ergebnisse mehr zurück Das erste Feld wird zu einem BLOB??? Im SQLite expert funktioniert das ohne Probleme Hat jemand ne Idee? |
AW: Problem mit Date in SQLite3 und Firedac
"kommt kein Ergebnis"
also leere Menge? Oder vielleicht unterdrückter Fehler in Try Finally/Except? Wenn Du die Tabelle mit dem Date Typ in Delphi persistierst, welcher Datentyp wird dann in Delphi angezeigt? Und was bedeutet ".Nehme ich eine der Zeilen mit dem ZAHLBIS in die Abfrage .." Als Where Bedingung? Oder nur zur Ausgabe? Wenn als "Where", wie übergibst Du den Datentyp? fYI: sqLite arbeitet intern nicht mit Datentypen, dazu gibt es hier auch schon Threads, die das bearbeiten. Bei sqLite selbst auf der HP ist das auch erläutert. |
AW: Problem mit Date in SQLite3 und Firedac
Zitat:
SQL-Code:
gelöscht wird.
/* and ( ZAHLBIS <= :HEUTE ) */
Da suche ich erst einmal nach den üblichen Verdächtigen Was steht in :HEUTE ? passt das Format/der Typ überhaupt zu ZAHLBIS? Zitat:
Gruß K-H |
AW: Problem mit Date in SQLite3 und Firedac
Jobo:
Gemeint sind die 2 auskommentierten Zeilen im SQL-Code :) Bei der 2. Variante mit CURRENT_DATE stellt sich die Frage nach dem Type nicht, da es eine SQL-Funktion ist (die es auch in SQLite gibt). @Fritzew: Bei 1. Variante (mit :HEUTE) ist wirklich die Frage, was reingeht. Aber die CURRENT_DATE Variante sollte auf alle Fälle funktionieren. |
AW: Problem mit Date in SQLite3 und Firedac
Es ist tatsächlich so das mit dem CURRENT_DATE der Feldtyp
Code:
als Blob zurückkommt als leere Menge
SUM(Gesamtbetrag) as ZAHLUNG
Wenn ich den Parameter benutze mit
Delphi-Quellcode:
Habe ich auch eine leere Menge und der Feldtyp ist ein Blob
opSum.Params[0].AsDate := Date;
Zitat:
Code:
Lasse ich den Vergleich mit CURRENT_DATE weg klappt es
select Zahlbis from rechnungen
where Zahlbis not NULL and zahlbis <= CURRENT_DATE order by Zahlbis |
AW: Problem mit Date in SQLite3 und Firedac
In der Connetion mal das SQL loggen?
Nicht dass FireDAC auf die geniale Idee kommt und CURRENT_DATE local ersetzt. |
AW: Problem mit Date in SQLite3 und Firedac
![]() Zitat:
|
AW: Problem mit Date in SQLite3 und Firedac
Zitat:
|
AW: Problem mit Date in SQLite3 und Firedac
Zitat:
Ggf könnte man sqLite mal per Union Clause oder sum(gesamtsumme)+0 zu einem anderen Typen zwingen. |
AW: Problem mit Date in SQLite3 und Firedac
Ich persönlich speicher Datum und Zeitwerte generell als Unixtimestamp (integer). Lediglich für die Anzeige im Programm selbst wandel ich das mal um. Dafür bieten die Programmiersprachen, die ich kenne, alle in irgendeiner Form eine Konvertierung an (Bei Delphi UnixToTDateTime bzw. TDateTimeToUnix), sofern sie nicht selbst diesen Typ nutzen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:29 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