Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Neusortierung nach Änderung von Begriff in sortiertem Feld (https://www.delphipraxis.net/59518-neusortierung-nach-aenderung-von-begriff-sortiertem-feld.html)

ratloser 23. Dez 2005 14:08

Datenbank: Access • Version: 2000 • Zugriff über: TADO-Connection, TADOBetterDataset, TDataSource

Neusortierung nach Änderung von Begriff in sortiertem Feld
 
Hallo an Alle!

Hab wieder mal ein kleines Problem!

Bei einer Anwendung habe ich die Daten mit Select * from tabelle order by name ausgewählt.

Wenn ich nun einen Eintrag im Feld Name ändere, oder bei einem bestehenden Satz das Feld name ändere, stimmt die alphabetisch Sortierung nicht mehr.

Wie kann man diese wieder herstellen. Habs mit index versucht, jedoch funzt das glaub ich im Zusammenhang mit ADO nicht, das Spiel active:= false und active:=true ist auch nicht durchführbar, da er in diesem Fall zwar eine sehr schnelle Sortierung akutalisiert, jedoch danach nicht mehr am aktuellen Satz steht.

Vielleicht hat jemand eine Idee.

LG Ratloser

marabu 23. Dez 2005 17:47

Re: Neusortierung nach Änderung von Begriff in sortiertem Fe
 
Hallo Konrad,

du kannst dir den primary key des aktuellen Datensatzes merken und mit diesem nach der Sortierung den Positionszeiger korrigieren:

Delphi-Quellcode:
procedure TDemoForm.TestButtonClick(Sender: TObject);
var
  id: integer;
begin
  with ADOQuery do
  begin
    DisableControls;
    id := FieldByName('ID').AsInteger;
    // GetSqlStatement() ist deine Funktion die das
    // SQL Statement neu zusammenbaut...
    SQL.Text := GetSqlStatement;
    Open;
    Locate('id', id, []);
    EnableControls;
  end;
end;
Weihnachtsgrüße vom marabu

alzaimar 23. Dez 2005 19:43

Re: Neusortierung nach Änderung von Begriff in sortiertem Fe
 
Beim ADOTable gibt es doch die Eigenschaft 'IndexFieldNames'. Die setzt Du auf 'Name' und das wars.

Einem DB-Server sollte man das Sortieren nicht überlassen, denn er hat Besseres zu tun. ADO sortiert für Dich und behält auch noch die Reihenfolge bei. Ob aber das Umhergehüpfe des Datensatzzeigers auf dem Bildschirm wiklich das Gelbe vom Ei ist, sei dahingestellt.

ratloser 25. Dez 2005 21:39

Re: Neusortierung nach Änderung von Begriff in sortiertem Fe
 
Danke für Deine Antwort.

Das hab ich aber schon gefunden.

Es ist nur so, dass er mir bei Eintrag eines Feldes unter IndexFieldNane folgende Meldung bringt:

Delphi-Quellcode:
Der aktuelle Provider unterstützt nicht die erforderliche Schnittstelle für die Sortier- bzw. Filterfunktion.
Vielleicht weiss jemand die Lösung.

Danke

ratloser 25. Dez 2005 21:41

Re: Neusortierung nach Änderung von Begriff in sortiertem Fe
 
Ich habs derzeit so gelöst:

Delphi-Quellcode:
procedure Tstammdaten_Branchen.BrancheExit(Sender: TObject);
var
   begriff: String;
begin
   db_branchen.post;
   begriff := db_branchen['branchen'];
   db_branchen.Active := false;
   db_branchen.Active := true;
   db_branchen.Locate('branchen', begriff, [loPartialKey]);
   buttonwahl;
end;
Kann aber doch nicht der Weisheit letzter Schluss sein. Bei großen Datenmengen zuckt er dadurch ganz schön.

Danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:43 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