AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Update Problem nach Sortieren in TFDMemTable
Thema durchsuchen
Ansicht
Themen-Optionen

Update Problem nach Sortieren in TFDMemTable

Offene Frage von "DukeM"
Ein Thema von BerndD. · begonnen am 10. Aug 2018 · letzter Beitrag vom 8. Apr 2020
 
BerndD.

Registriert seit: 10. Aug 2018
Ort: Halle/Saale
3 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Update Problem nach Sortieren in TFDMemTable

  Alt 10. Aug 2018, 10:06
Datenbank: CSV Dateien • Version: Delphi 10.2.3 • Zugriff über: TFDBatchMoveTextReader
Hallo,
mein Ziel ist ein einfaches Programm für macOS zu schreiben, das CSV-Dateien lesen und schreiben soll, also ohne Datenbank nur mit „flat files“ arbeitet. Zur Bearbeitung und Verwendung dieser Daten sollen diese in sortierter und gefilterter Form dargestellt werden können. Die Verwendung beschränkt sich im Wesentlichen auf die Auswahl eines oder mehrerer Datensätze aus der Gesamtmenge.
Mein Testprogramm benutzt folgende Komponenten:
Code:
Batch: TFDBatchMove;
Reader: TFDBatchMoveTextReader;
Writer: TFDBatchMoveDataSetWriter;
FDMemTable1: TFDMemTable;
Grid1: TStringGrid;
Batch benutzt Reader zum Lesen der CSV-Datei und Writer zum umwandeln in ein TFDMemTable konformes Format, was in FDMemTable1 abgelegt wird. FDMemTable1 ist über LiveBindings mit dem Grid1 verbunden. Hier das bisschen Quellcode was ich zum testweisen Anlegen von zwei Indizes und zum Laden der CSV-Datei verwende:
Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Reader.FileName := ExtractFilePath(ParamStr(0)) + 'adr10.csv';
  with FDMemTable1.Indexes.Add do begin
    Name := 'by_name';
    Fields := 'Nachname';
    Active := True;
  end;
  with FDMemTable1.Indexes.Add do begin
    Name := 'by_plz';
    Fields := 'Plz';
    Active := True;
  end;
  FDMemTable1.IndexesActive := True;

  Batch.LogFileName := ExtractFilePath(ParamStr(0)) + 'Batch.log';
  Batch.Execute;
end;
Beim Starten des Programms wird, wie erwartet, der gesamte Datenbestand, in der Reihenfolge wie sie in der Datei stehen, im Grid angezeigt. Nun dachte ich, dass ich auf FDMemTable1 Sortier- und Filterregeln anwenden könnte und dadurch diese Komponente nur noch die Datensätze an das Grid liefert, die der Filterregel entsprechen und dies in der Reihenfolge, die durch die Sortierreihenfolge bestimmt wird. Das scheint aber nicht der Fall zu sein, den bereits das Sortieren nach einen Feld über eins der folgenden Befehle
Code:
FDMemTable1.IndexName := 'by_name';
FDMemTable1.IndexName := 'by_plz';
FDMemTable1.IndexFieldNames := 'Plz';
liefert immer demselben Fehler: Es wird einfach in der Grid-Anzeige der 5. Datensatz mit dem letzten, den 10. Datensatz überschrieben. Erst wenn ich ein Feld editiere, mit Enter bestätige und danach mit den Cursortasten mich in eine andere Zeile bewege, wird plötzlich die richtige Sortierreihenfolge angezeigt.

Nun meine Fragen:
Wie muss ich Sortier- und Filter- Befehle auf die MemTable ausführen, damit sie optimiert angewendet werden und sich die Grid-Darstellung danach aktualisiert?
Ist mein Konzept grundsätzlich richtig oder sollte ich zwischen TFDMemTable und TStringGrid eine TFDQuery zwischenschalten? Das hatte ich verworfen, weil ich dazu eine Connection benötige, womit ich als DB Laie nichts anfangen kann (mein Programm soll ja auch ohne DB funktionieren).

Update: Anhang einfügen geht nicht, deshalb hier externer Link mit sha256 Prüfsumme:
2139a9f1e762942da2cf93634a978adad753954795ee5d0b04 977b23b5cd2b4f *FirstTest.zip

Vielen Dank im Voraus
Bernd

Geändert von BerndD. (10. Aug 2018 um 14:56 Uhr) Grund: Dateianhang hinzugefügt
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 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