Delphi-PRAXiS
Seite 2 von 7     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Datum aus voriger Zeile zum berechnen (https://www.delphipraxis.net/201703-datum-aus-voriger-zeile-zum-berechnen.html)

p80286 18. Aug 2019 21:30

AW: Datum aus voriger Zeile zum berechnen
 
vielleicht hilft Dir http://www.sqlitetutorial.net/sqlite...ns/sqlite-lag/ weiter.

Gruß
K-H

jobo 19. Aug 2019 05:54

AW: Datum aus voriger Zeile zum berechnen
 
Zitat:

Zitat von concept2015 (Beitrag 1441967)

Hat jemand noch eine Idee ?

Ich denke, die Version, die unter FDQuery eingebunden ist, ist älter.
Du könntest über Delphi mal abfragen:
Code:
select sqlite_version();
Ich hab im Kopf, die sqlite ist bei Firedac integriert, aber da bin ich mir wirklich nicht sicher. Hier gibt es sicher jemand, der das genau weiß.

Hier noch was gefunden:
http://docwiki.embarcadero.com/RADSt...anken_(FireDAC)

Schokohase 19. Aug 2019 07:03

AW: Datum aus voriger Zeile zum berechnen
 
Also mein SQL-Statement ist so wie hier gepostet mit Delphi 10.3.2 und FireDAC lauffähig.

Moombas 19. Aug 2019 07:12

AW: Datum aus voriger Zeile zum berechnen
 
Mal nebenebei: Pack das over mal nicht in eine gesonderte Zeile.
Dein Code:
Delphi-Quellcode:
...
QText:=QText+'julianday(lag(QEchtDat,1,QEchtDat)
over (order by QEchtDat)) Tage ';
...
Richtig wäre:
Delphi-Quellcode:
...
QText:=QText+'julianday(lag(QEchtDat,1,QEchtDat) over (order by QEchtDat)) Tage ';
...
Oder:
Delphi-Quellcode:
...
QText:=QText+'julianday(lag(QEchtDat,1,QEchtDat)' +
'over (order by QEchtDat)) Tage ';
...
Oder:
Delphi-Quellcode:
...
QText:=QText+'julianday(lag(QEchtDat,1,QEchtDat)';
QText:=QText+'over (order by QEchtDat)) Tage ';
...
Schau mal ob sich damit dein Problem lösen lässt.

jobo 19. Aug 2019 08:04

AW: Datum aus voriger Zeile zum berechnen
 
Also SQL ist nicht Zeilen sensitiv. Aber Leerzeichen zwischen den Schlüsselwörtern, Feldnamen und Funktionen können nicht schaden!

Moombas 19. Aug 2019 08:42

AW: Datum aus voriger Zeile zum berechnen
 
SQL ist nicht Zeilensensitiv, ABER bei der Compilierung in Delphi gibt es Probleme wenn du innerhalb eines Strings die Zeile wechselst, was er laut/ copy/paste tut:
Delphi-Quellcode:
...
QText:=QText+'julianday(lag(QEchtDat,1,QEchtDat) //hier endet die Zeile ohne ' und ; oder + um den String abzuschließen
over (order by QEchtDat)) Tage '; // hier geht der String weiter ohne ihn mit ' zu beginnen bzw. "over" kennt Delphi so in der Form natürlich nicht (da falsch interpretiert)
...

jobo 19. Aug 2019 08:50

AW: Datum aus voriger Zeile zum berechnen
 
Du hast Recht, hab ich übersehen!

Schokohase 19. Aug 2019 08:51

AW: Datum aus voriger Zeile zum berechnen
 
Zitat:

Zitat von Moombas (Beitrag 1442046)
SQL ist nicht Zeilensensitiv, ABER bei der Compilierung in Delphi gibt es Probleme wenn du innerhalb eines Strings die Zeile wechselst, ...

ja, das mag richtig sein ... aber wenn der TE folgende Fehlermeldung sieht
Zitat:

[FireDac][Phys][SQLite] ERROR: near "over" : syntax error.
dann ist die Compilierung schon Vergangenheit und wird befinden uns in der Runtime.

Moombas 19. Aug 2019 11:16

AW: Datum aus voriger Zeile zum berechnen
 
Hast recht @Schokohase.
Habe aktuell das gleiche Problem -.- und die Abfrage passt in der Workbench einwandfrei, nur über den Query bekomme ich den Fehler.
FDQuery.Open('SELECT * FROM ' + sDatenbank + ' WHERE seriennummer = ' + sSNR);

Workbench: Einwandfrei
Delphi (FDQuery.SQL): Einwandfrei
Programm zur Laufzeit: Fehler


FEHLER (zumindest bei mir) gefunden. Ich hatte die Datenbank per Bedingung definiert, welche aber irgendwie ins leere lief und daher leer/undefiniert war. Das führte zu meinem Fehler, evtl. hat der TE ein ähnliches Problem?
AM besten mal per Showmessage(QText); deine Variablen der Query Abfrage prüfen

concept2015 19. Aug 2019 15:09

AW: Datum aus voriger Zeile zum berechnen
 
So, musste erst mal etwas arbeiten.

Selbst mit der Abfrage in einem Zug und +
kommt der gleiche Syntax Fehler bei "over" .
Die Formatierung wird hier verändert !


QText:='select QEchtDat,wer,nummer,julianday(QEchtDat) -'+
' julianday(lag(QEchtDat,1,QEchtDat) over (order by QEchtDat)) as Tage '+
'FROM zwischen Where Jahr = "2019" and nummer = "139" ORDER BY QEchtDat';

Mit Showmessage(QText)wird alles, wie eingegeben (mit leerzeichen an den richtigen Stellen) angezeigt.


Was kann ich noch testen um den Fehler zu finden ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:06 Uhr.
Seite 2 von 7     12 34     Letzte »    

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