[gelöst] Verstehe die Welt nicht mehr in MariaDB

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Benutzeravatar
juelin
Beiträge: 237
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

[gelöst] Verstehe die Welt nicht mehr in MariaDB

Beitrag von juelin »

Hallo Leute,
ich habe Lazarus mit zeos Komponenten und MariaDb unter Windows.
Habe sowas schon tausend mal gemacht.
Aber jetzt findet er den Datensatz nicht mehr in der Datenbank. Ein einfacher SELECT.

Code: Alles auswählen

  Form1.ZQuery1.SQL.Text:='SELECT * FROM fahrplan WHERE Tour=:tour AND Linie=:linie AND solldatum=:solldatum AND sollzeit=:sollzeit AND Wochentag=:wochentag ORDER BY Tour, Linie, solldatum, sollzeit, Wochentag';
  Form1.ZQuery1.ParamByName('tour').asString:=etour;
  Form1.ZQuery1.ParamByName('linie').asString:=elinie;
  Form1.ZQuery1.ParamByName('solldatum').asDateTime:=esolldatum;
  Form1.ZQuery1.ParamByName('sollzeit').asDateTime:=esollzeit;
  Form1.ZQuery1.ParamByName('wochentag').asString:=ewochentag;
// Variable etour ist vom Typ string und enhält 'Test 1'
// Variable elinie ist vom Typ string und enhält 7'
// Variable esolldatum ist vom Typ TDateTime und enhält '30.12.1899' also den Wert 0
// Variable esollzeit ist vom Typ TDateTime und enhält '06:52:00'
// Variable ewochentag ist vom Typ string und enhält 'Samstag'
// Primary-Key ist: Tour, Linie, Solldatum, Sollzeit, Wochentag
siehe Datenbank in bild1 ind bild2
bild2.jpg
(302.91 KiB) Noch nie heruntergeladen
bild1.jpg
(208.74 KiB) Noch nie heruntergeladen
das verrückte ist, wenn ich die sollzeit aus der WHERE-Klausel raus nehme findet er den Datensatz.
Habe keine Ahnung warum.
Kann mir da jemand einen Tipp geben????
Danke und Gruß
Jürgen
Zuletzt geändert von juelin am Sa 26. Apr 2025, 21:30, insgesamt 1-mal geändert.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6762
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Verstehe die Welt nicht mehr in MariaDB

Beitrag von af0815 »

uhrzeiten werden als Bruchteil eines Tages verwendet. Damit sollte man exakte Vergleiche vermeiden. Ist so wie beim float Vergleich.

Ich gehe davon aus, das die Bruchteile nicht ganz zusammenstimmen (Aweichung in den ms zum Beispiel)

Da wird beim Convertieren auf das richtige Format ev. gerundet und damit ist der Vergleich mit = problematisch.

Sollzeit ist in der DB vom Typ TIME, du übergibst aber einen TDateTime. Schau das die Typen soweit immer durchgängig sind.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
juelin
Beiträge: 237
Registriert: Sa 24. Jul 2021, 18:03
OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
CPU-Target: 64Bit
Wohnort: Mannheim

Re: Verstehe die Welt nicht mehr in MariaDB

Beitrag von juelin »

ja af0815
es ist zwar traurig,
aber ich habe jetzt für die Zeit in der Datenbank von TIME auf Varchar umgestellt.
Und jetzt klappt es.
na ja ..................................
Danke und Gruß
Jürgen

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6762
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Verstehe die Welt nicht mehr in MariaDB

Beitrag von af0815 »

juelin hat geschrieben: Sa 26. Apr 2025, 21:29 es ist zwar traurig,
aber ich habe jetzt für die Zeit in der Datenbank von TIME auf Varchar umgestellt.
Es wäre nicht nötig, aber mit Zeiten zu arbeiten, braucht etwas an Strategie. Wenn du einen Zeitpunkt haben willst, so baue immer einen Vergleich der das Intervall das möglich ist berücksichtigt. Die Strategie ist dann gleich ob du als Intervall eine Sekunde, Stunde oder Tag nimmst.

Die Umstellung auf Varchar ist eine Art Kopfwehpulver, was das Symptom kurzfristig lindert, nicht aber das zugrunde liegende Problem.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten