AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Problem mit Date in SQLite3 und Firedac
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Date in SQLite3 und Firedac

Ein Thema von Fritzew · begonnen am 5. Dez 2016 · letzter Beitrag vom 6. Dez 2016
Antwort Antwort
Seite 1 von 2  1 2      
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#1

Problem mit Date in SQLite3 und Firedac

  Alt 5. Dez 2016, 14:16
Datenbank: SQLite • Version: 3.9.2 • Zugriff über: 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:
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
Das funktioniert und liefert das gewünschte Ergebnis

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?
Fritz Westermann
  Mit Zitat antworten Zitat
jobo

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

AW: Problem mit Date in SQLite3 und Firedac

  Alt 5. Dez 2016, 15:45
"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.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Problem mit Date in SQLite3 und Firedac

  Alt 5. Dez 2016, 15:53
Nehme ich eine der Zeilen mit dem ZAHLBIS in die Abfrage
verstehe ich so, daß der Kommentar um
 /*   and ( ZAHLBIS <= :HEUTE ) */ gelöscht wird.
Da suche ich erst einmal nach den üblichen Verdächtigen
Was steht in :HEUTE ?
passt das Format/der Typ überhaupt zu ZAHLBIS?

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.
Wenn ich so etwas lese, dann erinnert mich das an "Nagel mit Rohrzange in Wand schlagen".

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Problem mit Date in SQLite3 und Firedac

  Alt 5. Dez 2016, 16:02
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.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Problem mit Date in SQLite3 und Firedac

  Alt 5. Dez 2016, 16:24
Es ist tatsächlich so das mit dem CURRENT_DATE der Feldtyp
Code:
  SUM(Gesamtbetrag) as ZAHLUNG
als Blob zurückkommt als leere Menge

Wenn ich den Parameter benutze mit
opSum.Params[0].AsDate := Date; Habe ich auch eine leere Menge und der Feldtyp ist ein Blob


Jobo:

Bei 1. Variante (mit :HEUTE) ist wirklich die Frage, was reingeht. Aber die CURRENT_DATE Variante sollte auf alle Fälle funktionieren.
Führe ich die folgende Abfrage SqlExpert aus funktioniert sie, mit Delphi nicht -> leere Menge

Code:
select Zahlbis from rechnungen
where Zahlbis not NULL
and zahlbis <= CURRENT_DATE
order by Zahlbis
Lasse ich den Vergleich mit CURRENT_DATE weg klappt es
Fritz Westermann
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

AW: Problem mit Date in SQLite3 und Firedac

  Alt 5. Dez 2016, 16:27
In der Connetion mal das SQL loggen?

Nicht dass FireDAC auf die geniale Idee kommt und CURRENT_DATE local ersetzt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#7

AW: Problem mit Date in SQLite3 und Firedac

  Alt 5. Dez 2016, 16:34
https://www.sqlite.org/datatype3.html
Zitat:
2.2. Date and Time Datatype

SQLite does not have a storage class set aside for storing dates and/or times. Instead, the built-in Date And Time Functions of SQLite are capable of storing dates and times as TEXT, REAL, or INTEGER values:

TEXT as ISO8601 strings ("YYYY-MM-DD HH:MM:SS.SSS").
REAL as Julian day numbers, the number of days since noon in Greenwich on November 24, 4714 B.C. according to the proleptic Gregorian calendar.
INTEGER as Unix Time, the number of seconds since 1970-01-01 00:00:00 UTC.
Applications can chose to store dates and times in any of these formats and freely convert between formats using the built-in date and time functions.
Nachdem ich das gelesen habe, bin ich dazu übergegangen, Datumswerte als TEXT abzuspeichern und die Konvertierung mittels Hilfsklasse zu implementieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
jobo

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

AW: Problem mit Date in SQLite3 und Firedac

  Alt 5. Dez 2016, 17:00
Gemeint sind die 2 auskommentierten Zeilen im SQL-Code
Ja, ich hab zunächst nicht geschnallt, was mit (auskommentierte) Zeilen gemeint war.
Gruß, Jo
  Mit Zitat antworten Zitat
jobo

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

AW: Problem mit Date in SQLite3 und Firedac

  Alt 5. Dez 2016, 17:12
Es ist tatsächlich so das mit dem CURRENT_DATE der Feldtyp
Code:
  SUM(Gesamtbetrag) as ZAHLUNG
als Blob zurückkommt als leere Menge
Ich benutze sqlite nicht auf diese Art, aber ich schätze das BLOB Problem ist ein Folgeeffekt, der sich bei der Rückgabe von Werte (Korrekte Behandlung des Datumsparameters) so nicht ergeben würde.
Ggf könnte man sqLite mal per Union Clause oder sum(gesamtsumme)+0 zu einem anderen Typen zwingen.
Gruß, Jo
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Problem mit Date in SQLite3 und Firedac

  Alt 5. Dez 2016, 17:15
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.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:30 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