Autor Beitrag
sms-ag
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mo 14.10.02 18:04 
Vielleicht ist das für euch nicht so kompliziert :-)

ich möchte aus einer Datenbank die hunderte von Zeitwerten beinhaltet per sql den am nächsten passenden Zeitwert finden.
LIKE funktioniert leider nicht.

SQL.Add('SELECT* FROM Test WHERE (Uhrzeit LIKE "'+zeit1.Text+'")ORDER BY Uhrzeit');

Zeit1 ist ein Edit-Feld und kann beliebig geändert werden. Dabei kann es auch oft vorkommen, dass die Zeit die im Edit-Feld eingegeben wird tatsächlich in der Datenbank nicht existiert. In diesem Fall soll die nächste höhere Zeit gefunden werden.

Danke für jede Hilfe
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Di 15.10.02 06:19 
Hi
hängt davon ab, wie die die Zeitinformationen in der Datenbank speicherst. Wenn du ein Time Feld verwendest sollte das eigentlich funktionieren:
ausblenden Quelltext
1:
SQL.Text := 'SELECT * from Test where Uhrzeit >= ' + QuotedStr(Zeit1.Text);					


Wenn du die Zeit in einem String Feld speicherst funktionierts eigentlich genauso, aber du musst darauf achten, dass du die Uhrzeit immer mit der gleichen Anzahl Stellen beschreibst. Also 07:30 statt 7:30.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
sms-ag Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Di 15.10.02 11:41 
Titel: Habe das eigentliche Problem gefunden...
Danke erst mal...
Die Zeitwerte werden als Time in der DB gespeichert.

So funktioniert es nun endlich:
ausblenden Quelltext
1:
2:
3:
4:
Active:=False;
SQL.Clear;
SQL.Add('SELECT* from backtestZZ where Uhrzeit >= "'+TimeToStr(zeit1.Time)+'"');
Active:=True;

Der eigentliche Fehler war, dass eine Komponente die Zeitwerte falsch übergeben hatte: bei "08:00:00" z.B. kam "8 . ." raus. Ich habe diese nun durch die von Delphi (DateTimePicker) ersetzt und jetzt werden die Werte auch korrekt übergeben.