Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi GotoNearest ersetzen (https://www.delphipraxis.net/210982-gotonearest-ersetzen.html)

Chemiker 9. Jul 2022 13:11

Datenbank: Firebird • Version: 2.5 • Zugriff über: IBDAC

GotoNearest ersetzen
 
Hallo zusammen,

ich bin zur Zeit dabei ein altes Programm das noch mit der BDE arbeitet umzustellen.

In diesem Programm wird mit Hilfe von GotoNeares der Datensatzzeiger in einem DBGrid auf ein bestimmtes Datum gestellt.

Delphi-Quellcode:
//  with EOListeDatMod.EOListeTab do
//   begin
//    Active := True;
//    Close;
//    IndexName := 'iEODatum';
//    Open;
//    {Mit diesen Anweisungen wird immer auf den aktuellen DatenSatz gesprungen
//     der das heutige Datum trägt.}
//    SetKey;
//    FieldByName('EO-Datum').AsDateTime := date();
//    GotoNearest;
//   end;
Ich habe nun die Funktion mit Locate versucht nachzustellen:

Delphi-Quellcode:
var
  aDatum : TDate;
  SuchOptionen : TLocateOptions;
  Gefunden : boolean;
begin
  aDatum := strtodate('09.07.2022');
  SuchOptionen := [loPartialKey];
  Gefunden := EODatenViewModel.EO_DataSource.DataSet.Locate('EO_Datum', aDatum,SuchOptionen);
Das Funktioniert auch ohne Probleme wenn das Datum in der Tabelle vorhanden ist, allerdings wenn das Datum nicht in der Tablelle vorhanden ist bleibt der Datensatzzeiger auf den aktuellen stehen.
Bei GotoNearest wird der Datensatzzeiger auf das ungefähre Datum gesetzt.

z.B. : folgende Daten sind vorhanden:
08.07.2022
10.07.2022
11.07.2022
Gesucht wird das Datum: 09.07.2022, dann wird der Datensatzzeiger mit GotoNearest auf 10.07.2022 gestellt.

Wie kann man diese Funktionsweise nachbauen?


Bis bald Chemiker

Uwe Raabe 9. Jul 2022 14:03

AW: GotoNearest ersetzen
 
Was ist denn mit FindNearest?
Zitat:

Moves the cursor to a specific record or to the first record in the dataset that matches or is greater than the values specified in the KeyValues parameter.

Chemiker 10. Jul 2022 12:02

AW: GotoNearest ersetzen
 
Hallo Uwe,

danke für den Hinweis.
Ich habe einiges probieren müssen, bis ich die passende Kombination gefunden habe.


Delphi-Quellcode:
//******************************************************************************
     EOListeDatMod.EO_ListeIBCQuery.KeyFields := 'EO_DATUM';
     EOListeDatMod.EO_ListeIBCQuery.FindNearest([aDatum]);
//******************************************************************************
Bis bald Chemiker

dataspider 11. Jul 2022 11:30

AW: GotoNearest ersetzen
 
GotoNearest ist IMO veraltet und stammt noch aus der BDE.
Laut DevArt soll man LocateEx mit lxNearest als Option verwenden.

Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 Uhr.

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