Delphi-PRAXiS
Seite 1 von 2  1 2      

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)

concept2015 17. Aug 2019 19:11

Datenbank: Sqlite • Version: 3 • Zugriff über: Delphi

Datum aus voriger Zeile zum berechnen
 
Hallo Spezialisten,
jetzt stehe ich vor dem nächsten Problem, zu dem ich keine Lösung finde.
Die Datenbank: Stammdaten
Die Tabelle : Zwischen

! gekürzt !
CREATE TABLE [zwischen](
[SatzNr] INTEGER PRIMARY KEY ASC AUTOINCREMENT,
[QEchtDat] DATE,
[WER] CHAR(30),
[Nummer] INTEGER);

Die Abfrage:

Select QechtDat,wer,Nummer
from Zwischen
where jahr="2019" and nummer = "139" order by QechtDat

bringt folgendes Ergebnis:
QEchtDat WER Nummer
2019-01-10 Demag 139
2019-01-19 Demag 139
2019-01-25 Demag 139
2019-02-01 Demag 139
2019-02-08 Demag 139
2019-02-13 Demag 139
2019-02-27 Demag 139
2019-03-08 Demag 139
2019-03-15 Demag 139

Jetzt muss ich für jede Zeile die vergangenen Tage zur vorigen Zeile berechnen:
Beispiel:
QEchtDat WER Nummer Tage
2019-01-10 Demag 139 0
2019-01-19 Demag 139 9
2019-01-25 Demag 139 6

Zeile 1 ist die erste Zeile und deshalb 0 Tage

Wie bekomme ich es hin,
(dass ich das Datum aus der Zeile zuvor mitnehme in die nächste Zeile)
(oder in der aktuellen Zeile auf das Datum der vorigen Zeile zugreife)
um daraus die Tage zu berechnen.
[SatzNr] ist in der Abfrage NICHT fortlaufend !

Wenn irgendwie möglich Abfrage mit --Erklärung
denn diese Nuss ist mir zu hart.:oops:

Danke im voraus für Eure Mühe.

timog 17. Aug 2019 20:05

AW: Datum aus voriger Zeile zum berechnen
 
In Sqlite kannst Du mit einer Unterabfrage arbeiten. Auf Stackoverflow gibt es da ein Beispiel.

jobo 17. Aug 2019 22:23

AW: Datum aus voriger Zeile zum berechnen
 
Seit Ende 2018 (Version 3.25) gibt es Windows Functions in SQLite.
Damit nimmt man z.B. im Fall hier für Zugriff auf vorige oder folgende Datensätze lag() und lead() und benötigt keine Unterabfragen dazu. Der Zugriff auf andere Datensätze (vorige, nächste) ist damit sehr vergleichbar zu Tabellenkalkulationsprogrammen.
Da die Unterabfragen wegfallen und eine spezifische Implementierung dieser Funktionen vorgenommen wurde, ist es idR auch viel schneller.

Die Implementierung würde ich schon recht umfangreich nennen.
https://www.sqlite.org/windowfunctions.html



Hier ein Tutorial:
http://www.sqlitetutorial.net/sqlite...ns/sqlite-lag/

concept2015 18. Aug 2019 08:15

AW: Datum aus voriger Zeile zum berechnen
 
Danke Timo und Jo !
Durch den Hinweis (Link) von Timo konnte ich mir die Lösung zusammenbauen.:-D
Aus:

SELECT
day
,price
,price - (SELECT t2.price
FROM mytable t2
WHERE
t2.item = t1.item AND
t2.day < t1.day
ORDER BY t2.day DESC
LIMIT 1
) AS change
FROM mytable t1

wurde:
SELECT Qechtdat,wer,nummer,
JulianDay(Qechtdat) -
(SELECT
JulianDay(Qechtdat) As Integer
FROM Zwischen t2
WHERE t2.nummer = t1.nummer AND
JulianDay(t2.Qechtdat) < JulianDay(t1.Qechtdat)
ORDER BY
JulianDay(t2.Qechtdat)
DESC LIMIT 1) AS Tage FROM Zwischen t1
where Jahr = "2019"
and nummer = "139"

mit dem Ergebnis:
QEchtDat WER Nummer Tage
2019-01-10 Demag 139 20
2019-01-19 Demag 139 9
2019-01-25 Demag 139 6
2019-02-01 Demag 139 7

Zeile 1 hat aber einen Fehler - hier ist kein Bezug auf ein Datum - also müsste er 0 sein.

Wie ich den ersten Eintrag auf 0 bekomme ist mir aber noch schleierhaft.

Hat jemand eine Idee ? (Lösung)

Schokohase 18. Aug 2019 08:41

AW: Datum aus voriger Zeile zum berechnen
 
Mal etwas verkürzt

Mit dieser Datenbasis
SQL-Code:
CREATE TABLE [zwischen](
[SatzNr] INTEGER PRIMARY KEY ASC AUTOINCREMENT,
[QEchtDat] DATE,
[WER] CHAR(30),
[Nummer] INTEGER);

INSERT INTO [zwischen] (QEchtDat,WER,Nummer) VALUES ('2019-01-10','Demag',139);
INSERT INTO [zwischen] (QEchtDat,WER,Nummer) VALUES ('2019-01-19','Demag',139);
INSERT INTO [zwischen] (QEchtDat,WER,Nummer) VALUES ('2019-01-25','Demag',139);
INSERT INTO [zwischen] (QEchtDat,WER,Nummer) VALUES ('2019-02-01','Demag',139);
INSERT INTO [zwischen] (QEchtDat,WER,Nummer) VALUES ('2019-02-08','Demag',139);
liefert diese Abfrage
SQL-Code:
select QEchtDat,
julianday(QEchtDat) - julianday(lag(QEchtDat,1,QEchtDat) over (order by QEchtDat)) Tage
from zwischen
diese Daten
Code:
        QEchtDat               Tage
----------------  ------------------
      10.01.2019                   0
      19.01.2019                   9
      25.01.2019                   6
      01.02.2019                   7
      08.02.2019                   7

concept2015 18. Aug 2019 09:25

AW: Datum aus voriger Zeile zum berechnen
 
WOW !!! :shock:

Danke Schokohase !!!

Volltreffer - bin sprachlos -

concept2015 18. Aug 2019 09:58

AW: Datum aus voriger Zeile zum berechnen
 
In Sqlite Expert liefert diese Abfrage die RICHTIGEN Ergebnisse.

Aber in Delphi 10.2 mit:

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

bekomme ich einen Fehler:

[FireDac][Phys][SQLite] ERROR: near "over" : syntax error.

den ich nicht finden kann.
(Die Zeile 3 von QText:= ist in einer Zeile geschrieben
wird hier aber getrennt)

blawen 18. Aug 2019 10:27

AW: Datum aus voriger Zeile zum berechnen
 
Zitat:

Zitat von concept2015 (Beitrag 1441921)
In Sqlite Expert liefert diese Abfrage die RICHTIGEN Ergebnisse.

Aber in Delphi 10.2 mit:

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

bekomme ich einen Fehler:

[FireDac][Phys][SQLite] ERROR: near "over" : syntax error.

den ich nicht finden kann.
(Die Zeile 3 von QText:= ist in einer Zeile geschrieben
wird hier aber getrennt)

Die Meldung kommt nicht von Delphi. Vermutlich fehlt ein oder mehrere Leerzeichen.

Hier z.B. fehlt eines
Delphi-Quellcode:
Jahr ="2019"';

jobo 18. Aug 2019 11:03

AW: Datum aus voriger Zeile zum berechnen
 
Zitat:

Zitat von concept2015 (Beitrag 1441918)
WOW !!! :shock:

Danke Schokohase !!!

Volltreffer - bin sprachlos -

Kein Grund zu staunen, ließ Dir die Links durch, die ich gepostet habe.
Windows Functions sind echt cool und sparen eine Menge Clientgerödel und ergeben sogar lesbare Statements. Dazu ähnlich gibt es "um die Ecke" einen langen Thread zum Thema Performance..
Ich sag einfach mal so, damit geht in SQL alles, was auch mit Excel geht. Und zwar prinzipiell ohne Größenbeschränkung und ohne ständig mit Workarounds arbeiten zu müssen*.

Für eine Delphianwendung bedeutet das, man kann nahe zu beliebige Datentransformationen, -Reports, .. anzeigen, ohne eine Zeile Programmcode zu schreiben. (Nur das SQL Statement und die Komponenten verknüpfen > RAD!)

Zitat:

Zitat von concept2015 (Beitrag 1441921)

bekomme ich einen Fehler:

[FireDac][Phys][SQLite] ERROR: near "over" : syntax error.

den ich nicht finden kann.

Wie auch geschrieben, diese Funktionen gibt es in SQLite "erst" seit Ende 2018.
Wenn es kein Syntaxfehler ist, der durch das Aneinanderklöppeln von Statementhäppchen entstanden ist, dann ist es vielleicht ein Versionsproblem.

* dafür wäre ein weiteres Feature der DB noch Pivot/Unpivot

concept2015 18. Aug 2019 18:15

AW: Datum aus voriger Zeile zum berechnen
 
Also, ich war heute mal an einem anderen Rechner:
Win 10 mit Delphi Rio. (Delphi 10.3 Version 26....)
SqlVersion 3.23.1

Die Abfrage direkt im FDQuery eingegeben !
Der gleiche Fehler in Delphi ! auch mit korrigierten Leerzeichen.


In SQLite Expert (Sql Version 3,2.9)
Liefert die Abfrage:


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

das:
QEchtDat WER Nummer Tage
2019-01-10 Demag 139 0
2019-01-19 Demag 139 9
2019-01-25 Demag 139 6
2019-02-01 Demag 139 7
2019-02-08 Demag 139 7
2019-02-13 Demag 139 5

läuft tadellos !!

Hat jemand noch eine Idee ?

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 ?

jobo 19. Aug 2019 15:20

AW: Datum aus voriger Zeile zum berechnen
 
Rufe die Abfrage der SQLiteversion aus Delphi heraus auf, wie ich es oben vorgeschlagen habe.

concept2015 19. Aug 2019 16:06

AW: Datum aus voriger Zeile zum berechnen
 
Im Abfrageeditor mit ausführen:
gestern in

Rio 10.3.2
3.23.1

In Tokyo
3.9.2

In SqLite Expert
3.29.0 Hier klappt die Abfrage !

jobo 19. Aug 2019 17:56

AW: Datum aus voriger Zeile zum berechnen
 
Wie in Beitrag 3 geschrieben, die Funktionen sind in V 3.25 eingeführt worden.
Irgendwo später hab ich einen Link gepostet, wie man die sqlite dll dynamisch einbinden kann.
Versuchs einfach mal!

concept2015 20. Aug 2019 06:47

AW: Datum aus voriger Zeile zum berechnen
 
Hallo Jo,
mit dem dynamischen Zugriff auf Sqlite habe ich so meine Probleme.
Ich habe Bedenken, dass nach dem kopieren der DLL´s und einstellen in Firedac mein System nicht mehr richtig läuft
und meine ganze Arbeit damit stecken bleibt.

Kennst Du eine Schritt für Schritt Anleitung, die ich zur Not auch Schritt für Schritt rückgängig machen kann.

Mit 65 wird man vorsichtiger und es ist schon passiert,das mit weniger, viel Arbeit ausgelöst wurde.

Lag und Kollegen ist mit Sicherheit eine feine Sache aber
ich trau mich nicht .... da bastel ich mir lieber die Abfrage um und arbeite umständlich weiter :oops::cry:

Schokohase 20. Aug 2019 06:53

AW: Datum aus voriger Zeile zum berechnen
 
Also mir wird bei Rio die SQLite Version 3.28.0 angezeigt.

Beim FDConnection Verbindungseditor gibt es einen Info-Tab
Code:
================================
FireDAC info
================================
Tool = RAD Studio 10.3
FireDAC = 17.0.0 (Build 93731)
Platform = Windows 32 bit
Defines = FireDAC_NOLOCALE_META;FireDAC_MONITOR
================================
Client-Info
================================
Loading driver SQLite ...
DLL = <sqlite3_x86.obj statically linked>
Client version = 3.28.0
Compile options = DEFAULT_CACHE_SIZE=8000;DEFAULT_FILE_FORMAT=4;
  DEFAULT_JOURNAL_SIZE_LIMIT=1048576;
  DEFAULT_PAGE_SIZE=4096;DEFAULT_RECURSIVE_TRIGGERS;
  ENABLE_COLUMN_METADATA;ENABLE_DBSTAT_VTAB;
  ENABLE_FTS3;ENABLE_FTS3_PARENTHESIS;ENABLE_FTS4;
  ENABLE_FTS5;ENABLE_JSON1;ENABLE_RBU;ENABLE_RTREE;
  ENABLE_STAT4;HAS_CODEC;OMIT_AUTOINIT;TEMP_STORE=2;
  THREADSAFE=2;USE_URI
================================
Sitzungs-Info
================================
Current catalog =
Current schema =
Total changes = 0
Database encoding = UTF8
Encryption mode = <unencrypted>
Cache size = 10000
So sieht das bei mir aus. Zeig doch mal deine Info

concept2015 20. Aug 2019 07:18

AW: Datum aus voriger Zeile zum berechnen
 
================================
Verbindungsdefinitionsparameter
================================
Database=E:\Abr\AbrDB\Stammdaten.db
LockingMode=Normal
Synchronous=Full
DriverID=SQLite
================================
FireDAC info
================================
Tool = RAD Studio 10.2
FireDAC = 16.0.0 (Build 88974)
Platform = Windows 32 bit
Defines = FireDAC_NOLOCALE_META;FireDAC_MONITOR
================================
Client-Info
================================
Loading driver SQLite ...
DLL = <sqlite3_x86.obj statically linked>
Client version = 3.9.2
Compile options = ENABLE_COLUMN_METADATA;ENABLE_DBSTAT_VTAB;
ENABLE_FTS3;ENABLE_FTS3_PARENTHESIS;ENABLE_FTS4;
ENABLE_FTS5;ENABLE_JSON1;ENABLE_RTREE;
ENABLE_STAT4;HAS_CODEC;OMIT_AUTOINIT;
OMIT_DEPRECATED;SYSTEM_MALLOC;TEMP_STORE=2;
THREADSAFE=2
================================
Sitzungs-Info
================================
Current catalog =
Current schema =
Total changes = 0
Database encoding = UTF8
Encryption mode = <unencrypted>
Cache size = 10000

jobo 20. Aug 2019 09:38

AW: Datum aus voriger Zeile zum berechnen
 
Zitat:

Zitat von concept2015 (Beitrag 1442184)
Ich habe Bedenken,

Ja, kann ich verstehen. Andererseits:
Es gibt Backupsoftware, mit der man im Notfall eine zerpfriemlete Software wieder auf den alten Stand bringen kann.


Firedac 16 versus 17 wäre dann wohl der Grund für die Ursache.
Ich hab leider keine Schritt für Schritt Anleitung und kann Dir als Alternative nur das nennen, was du selbst geschrieben hast, mehr Handarbeit in den Queries. (Oder offenbar ein Delphi Update)

Sicher kannst Du das auch abwägen, wenn es nur diese eine Abfrage ist, dann ist und bleibt es halt eine Abfrage mit Workaround, wenn noch mehr so Zeug kommt, überlegst Du es Dir vielleicht anders.

jobo 20. Aug 2019 09:43

AW: Datum aus voriger Zeile zum berechnen
 
So, jetzt muss ich mir mal kurz die Augen reiben:
Der Link zu Emba, den ich in Beitrag https://www.delphipraxis.net/1442024-post12.html gepostet habe, hat zu der Zeit des Postings eine Anleitung (vielleicht nicht Schritt für Schritt, aber immerhin) enthalten, wo ist das nun hin?

http://docwiki.embarcadero.com/RADSt...anken_(FireDAC

Moombas 20. Aug 2019 09:47

AW: Datum aus voriger Zeile zum berechnen
 
Hast du auch geprüft ob deine genutzten Variablen passen (richtige Werte)?

Schokohase 20. Aug 2019 09:58

AW: Datum aus voriger Zeile zum berechnen
 
Zitat:

Zitat von jobo (Beitrag 1442227)
So, jetzt muss ich mir mal kurz die Augen reiben:
Der Link zu Emba, den ich in Beitrag https://www.delphipraxis.net/1442024-post12.html gepostet habe, hat zu der Zeit des Postings eine Anleitung (vielleicht nicht Schritt für Schritt, aber immerhin) enthalten, wo ist das nun hin?

http://docwiki.embarcadero.com/RADSt...anken_(FireDAC

Dein Link wird nicht korrekt wiedergegeben. So ist der richtig (kuckst du Klammer am Ende)
http://docwiki.embarcadero.com/RADSt...nken_(FireDAC)
Und dann nochmal Tokyo
http://docwiki.embarcadero.com/RADSt...nken_(FireDAC)
Allerdings scheint die Rio-Doku falsch zu sein, denn ich habe ja die SQLite-Version 3.28.0 an Bord.

jobo 20. Aug 2019 10:06

AW: Datum aus voriger Zeile zum berechnen
 
Zitat:

Zitat von Schokohase (Beitrag 1442232)

Dein Link wird nicht korrekt wiedergegeben. So ist der richtig (kuckst du Klammer am Ende)...

"Wird nicht korrekt wiedergegeben" ist echt nett formuliert. :)
Ich bin wohl nicht in der Lage, einen Link zu posten.

Wieauchimmer, vielleicht bekommt concept2015 das noch mit und geht das Wagnis ein.

Schokohase 20. Aug 2019 10:17

AW: Datum aus voriger Zeile zum berechnen
 
Zitat:

Zitat von jobo (Beitrag 1442235)
Zitat:

Zitat von Schokohase (Beitrag 1442232)

Dein Link wird nicht korrekt wiedergegeben. So ist der richtig (kuckst du Klammer am Ende)...

"Wird nicht korrekt wiedergegeben" ist echt nett formuliert. :)
Ich bin wohl nicht in der Lage, einen Link zu posten.

Wieauchimmer, vielleicht bekommt concept2015 das noch mit und geht das Wagnis ein.

Das Problem bist nicht du - sondern die Forums-Software schneidet eine schließende runde Klammer am Ende einer URL einfach weg.

Du musst das nur wissen und entsprechend handeln.

jobo 20. Aug 2019 10:31

AW: Datum aus voriger Zeile zum berechnen
 
Zitat:

Zitat von Schokohase (Beitrag 1442238)
die Forums-Software schneidet eine schließende runde Klammer am Ende einer URL einfach weg.

Und dann wird dieser kaputte Link auch noch so angezeigt, als warte er schon länger auf eine amtliche Befüllung.
Was für eine geniale Verkettung unlücklicher Umstände!

Das bestärkt einen nicht gerade darin, einem Link zu folgen und den Inhalt am eigenen System anzuwenden.

Danke für den Hinweis.

concept2015 20. Aug 2019 14:19

AW: Datum aus voriger Zeile zum berechnen
 
So, ich bin das Wagnis eingegangen -
die richtigen DLL´s in die Verzeichnisse kopiert
64er DLL umbenannt

FireDAC.inc geändert '.' weg

und jetzt ?
Alles beim alten ! ... der Fehler kommt

jobo 20. Aug 2019 20:48

AW: Datum aus voriger Zeile zum berechnen
 
Im laufenden Betrieb? Mal einen Neustart gemacht?
Schon erneut die Versionsabfrage durchgeführt?

concept2015 21. Aug 2019 06:03

AW: Datum aus voriger Zeile zum berechnen
 
Ja, alles beim alten.
Muss ich die Verbindung jetzt anders aufbauen ?

jobo 21. Aug 2019 06:43

AW: Datum aus voriger Zeile zum berechnen
 
Ich kann Dir da nicht weiterhelfen, außer Dich jede Zeile aus dem Link abzufragen.
Ich habe diese Delphi Version nicht und kann es nicht nachvollziehen.
Vielleicht ist da jemand anderes zu in der Lage.

concept2015 23. Aug 2019 16:19

AW: Datum aus voriger Zeile zum berechnen
 
Hallo, nach tagelangem rumgewurschtel in Delphi wurde es mir zu bunt. Wenn ich die SqLite.DLL (extern) benutzen will, bekomme ich die Windows Funktions dazu, verliere aber die Datenbank-Verschlüsselung - das geht nicht.

Ich lasse alles so, wie es ist und verzichte (vorerst) auf die Funktionen.

Deshalb nochmal meine Frage:
Wie muss ich die Abfrage umstellen, um in der ersten Zeile, in der ja kein Datum vorher ist, mit 0 bekomme ?

Hier nochmal die Abfrage:

SELECT Qechtdat,wer,nummer,
JulianDay(Qechtdat) -
(SELECT JulianDay(Qechtdat) As Integer
FROM Zwischen t2
WHERE t2.nummer = t1.nummer AND
JulianDay(t2.Qechtdat) < JulianDay(t1.Qechtdat)
ORDER BY
JulianDay(t2.Qechtdat)
DESC LIMIT 1) AS Tage FROM Zwischen t1
where Jahr = "2019"
and nummer = "139"

Das Ergebnis liefert bis auf die erste Zeile richtige Daten:
QEchtDat WER Nummer Tage
2019-01-10 Demag 139 20
2019-01-19 Demag 139 9
2019-01-25 Demag 139 6
2019-02-01 Demag 139 7
2019-02-08 Demag 139 7
2019-02-13 Demag 139 5
2019-02-27 Demag 139 14
2019-03-08 Demag 139 9
2019-03-15 Demag 139 7
2019-03-22 Demag 139 7
2019-04-04 Demag 139 13
2019-04-04 Demag 139 13
2019-04-11 Demag 139 7
2019-04-26 Demag 139 15

Wenn mir da jemand helfen könnte :roll:

p80286 23. Aug 2019 19:56

AW: Datum aus voriger Zeile zum berechnen
 
Zunächst solltest du alle Felder mit der zugehörgen DB erweitern. Es könnte sonst böse Überraschungen geben.
Also:
SQL-Code:
SELECT t1.Qechtdat,
       t1.wer,
       t1.nummer,
       JulianDay(t1.Qechtdat) -
........ usw.
Gruß
K-H

concept2015 24. Aug 2019 09:45

AW: Datum aus voriger Zeile zum berechnen
 
Hab ich gemacht aber hilft mir ja nicht wirklich.

Hat noch jemand eine Idee ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:17 Uhr.
Seite 1 von 2  1 2      

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