Tdbf Frage zur Sortierung

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
pjensen
Beiträge: 77
Registriert: Fr 27. Jul 2007, 08:43
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Nahe Flensburg

Tdbf Frage zur Sortierung

Beitrag von pjensen »

Hallo,

gegeben sei ein DBGrid auf eine DBase-Datenbank mit 5 Spalten und 100 Datensätzen, sortiert nach Spalte 1 (Integer).
Die ersten 20 Einträge der Spalte 1 sind "0", die anderen irgendwas zwischen 1 und 100.

Jetzt trage ich in Spalte 1, Zeile 5 eine 77 ein und rücke cursor-down.
Dann wird diese Zeile richtig einsortiert, z.B. in Zeile 88. Danach springt der Cursor in Zeile 89.
Dies ergibt ein "wildes Rumgehüpfe im Grid".

Scheinbar wird also erst sortiert und dann (per next ?) in die nächste Zeile gesprungen.

Ich will möchte aber, dass nicht in Zeile 89 gesprungen wird, sondern in Zeile 6. Also in die nächste, ausgehend von der Position vor der Änderung.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Tdbf Frage zur Sortierung

Beitrag von Christian »

hallo Gesucht sei die datenzugriffskomponente, die Datenbank, die Lazarusversion und die fpc version ;)
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pjensen
Beiträge: 77
Registriert: Fr 27. Jul 2007, 08:43
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Nahe Flensburg

Re: Tdbf Frage zur Sortierung

Beitrag von pjensen »

Opps, hatte ich vergessen:


- OpenSUSE.0 - KDE 3.5
- fpc 2.2.0-0 als rpm installiert
- lazarus 0.9.24-0 als rpm installiert

Desweiteren gibt es
- 1 * Tdbf, Name = DB_LTax
- 1 * TDatasource, Name=DatasourceLTax, Dataset = DB_LTax
- 1 * DBGrid mit Datasource = DatasourceLTax

- Datenbank: DBase 4
(aus TForm1.NeuClick: ... DB_LTAX.TableLevel := 4; ...)
Es wird entweder eine neue Datenbank erstellt oder eine vorhanden geöffnet (siehe unten).

Wenn ich jetzt z.B. nach Konto sortiere und dann im Grid ein Konto verändere, tritt das ungewünschte Verhalten auf.

Code: Alles auswählen

begin
  SaveDialog1.InitialDir := '/home/peter/ltax_dbf';
  DB_LTAX.Close;
  if SaveDialog1.Execute then
  begin
    DB_LTAX.TableLevel := 4;
    DB_LTAX.FilePathFull:= '/home/peter';
    DB_LTAX.TableName := SaveDialog1.Filename;
    with DB_LTAX do
    begin
      Close;
      TempFieldDefs := TDbfFieldDefs.Create(Self);
      try
        with TempFieldDefs.AddFieldDef do begin
          FieldName := 'DATUM';
          NativeFieldType := 'D';
        end;
 
        with TempFieldDefs.AddFieldDef do begin
          FieldName := 'NUMMER';
          NativeFieldType := 'N';
          Size := 4;
        end;
 
        with TempFieldDefs.AddFieldDef do begin
          FieldName := 'KONTO';
          NativeFieldType := 'C';
          Size := 100;
        end;
 
        with TempFieldDefs.AddFieldDef do begin
          FieldName := 'BETRAG';
          NativeFieldType := 'N';
          Size := 15;
          Precision := 3;
        end;
 
        with TempFieldDefs.AddFieldDef do begin
          FieldName := 'BUCHTEXT';
          NativeFieldType := 'C';
          Size := 500;
        end;
 
        with TempFieldDefs.AddFieldDef do begin
          FieldName := 'UST';
          NativeFieldType := 'N';
          Size := 15;
          Precision := 3;
        end;
 
        with TempFieldDefs.AddFieldDef do begin
          FieldName := 'BERECHNEN';
          NativeFieldType := 'L';
        end;
 
        with TempFieldDefs.AddFieldDef do begin
          FieldName := 'PA';
          NativeFieldType := 'N';
          Size := 15;
          Precision := 3;
        end;
 
        DB_LTAX.CreateTableEx(TempFieldDefs);
      finally
        FreeAndNil(TempFieldDefs);
      end;
      Open;
    end;
    MakeStatusbar;
  end;
end;
Zuletzt geändert von monta am Mo 29. Sep 2008, 09:54, insgesamt 1-mal geändert.
Grund: Codetags gesetzt, bitte demnächst selbst setzen ;)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Tdbf Frage zur Sortierung

Beitrag von Christian »

OK TDbf war das was mir gefehlt hat, an dem verhalten kann man wohl in richtung datenzugriff bei tdbf nix ändern. Aber du kannst dir in BeforePost einen Recordzeiger des nächsten Datensatzes wegspeichern und in AfterPost zu diesem Springen. Das könnte klappen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pjensen
Beiträge: 77
Registriert: Fr 27. Jul 2007, 08:43
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Nahe Flensburg

Re: Tdbf Frage zur Sortierung

Beitrag von pjensen »

BeforePost + AfterPost
das wars, was mir gefehlt hat.

Danke, läuft jetzt :D

Antworten