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.
Tdbf Frage zur Sortierung
-
- 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
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/
-
- 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
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.
- 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 ;)
Grund: Codetags gesetzt, bitte demnächst selbst setzen ;)
-
- 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
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/
-
- 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
BeforePost + AfterPost
das wars, was mir gefehlt hat.
Danke, läuft jetzt
das wars, was mir gefehlt hat.
Danke, läuft jetzt
