![]() |
Datenbank: ADS • Version: 10 • Zugriff über: native
Locate mit Datumsfeld
Hallo,
ich habe einer Tabelle Feiertage. Folgende Werte habe ich drinnen. 15.08.2011 01.11.2011 natürlich sind davor und danach auch noch werte daber für mein Problem nicht relevant. Wenn ich nun ein Locate mache findet er nichts
Delphi-Quellcode:
was kann ich machen, dass er sich in die nähe eines dieses Datums positioniert?
if dsFeiertag.Locate('paft_datum', SysUtils.Date, [loCaseInsensitive, loPartialKey]) then
ShowMessage('Datum: ' + FormatDateTime('dd.mm.yyyy', dsFeiertage.FieldByName('part_datum').AsDateTime)); |
AW: Locate mit Datumsfeld
Welchen Typ hat das Datenbankfeld?
|
AW: Locate mit Datumsfeld
Wenn Du nach dem Tagesdatum (sysutils.date) suchst wird er ja keinen Treffer finden können, da heute weder der 15.08. noch der 1.11. ist. Und womit sind die unterschiedlichen Felder paft_datum und part_datum gefüllt?
|
AW: Locate mit Datumsfeld
Das Feld ist vom Typ Date und es ist ein ADT-Tabelle
|
AW: Locate mit Datumsfeld
Aber mit Locate wirst Du da nicht weiter kommen. Verwende lieber SQL. Und definier mal die Aufgabenstellung genauer. Z.b. "Herausfinden welche Feiertage in der Tabelle zwischen heute und nächster Woche liegen" oder so was.
|
AW: Locate mit Datumsfeld
OK, dann muss ich einen Anderen Weg gehen.
Werde mir einen SQL basteln um auf den nächsten Datensatz zu kommen. Ich dachte nur mit loPartialKey positioniert er sich in auf einen von beiden Datensätzen wenn er den gewünschten nicht findet. Funktioniert dann die Option überhaupt mit Datumswerten bzw. Zahlen? |
AW: Locate mit Datumsfeld
Das glaub ich nicht Tim^^
Hier mal ein SQL, das den nächsten Feiertag ab Tagesdatum holt:
Code:
select min(Feiertag) from Feiertage where Feiertag >= (select curdate() from system.iota)
|
AW: Locate mit Datumsfeld
Eine Abfrage über die "absoluten Differenzen" der Datumswerte (
Delphi-Quellcode:
), das sortiert nach aufsteigender Größe und davon dann den ersten Absatz, also den mit dem (kleinsten) Wert.
abs(curdate() - part_datum)
Das würde dann den nächstliegenden Feiertag bringen. Oder alle zukünftigen Feiertage, wobei man hier die vergangenen ignoriert und sich aufsteigend ebenfalls den ersten Absatz rauszieht, welcher dann Heute oder als nächstes kommt. Problem wird hierbei aber der Jahreswechsel sein, welche man mit berücksichtigen müßte. |
AW: Locate mit Datumsfeld
Wieso Abs()? Das würde doch auch vergangene Feiertage ins Spiel bringen oder?
Das Select aus Post 7 ist doch ok, vielleicht noch ein SORT by dazu. |
AW: Locate mit Datumsfeld
Wieso sortieren? Das SQL sollte doch nur einen Datensatz liefern.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz