TDBGrid sortierung

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

TDBGrid sortierung

Beitrag von hbr »

Hallo bitte um Hilfe!
Ich habe mir ein TDbf Datenbank nach dem Beispiel Addressbook aufgebaut.
habe auch hier 'http://wiki.lazarus.freepascal.org/Lazarus_Tdbf_Tutorial/de' nachgeschaut,
komme jedoch nicht weiter.

Ich möchte die TDBGrid - Ausgabe nach den definierten Felder(AddIndex) sortieren.

Wie stelle ich das an? Wenn möglich Bitte mit einem Beispiel.

Meine Datenbank wurde folgendermaßen aufgebaut.

Code: Alles auswählen

 With DBA do
   begin
    Close;
    with FieldDefs do
      begin
      Clear;
      Add('VName',ftString,30, true);
      Add('NName',ftString,30, true);
      Add('GDatum',ftString,12, true);
      Add('Zahl1',ftString,2, true);
      Add('Zahl2',ftString,2, true);
      Add('Zahl3',ftString,2, true);
      Add('Zahl4',ftString,10, true);
      Add('Info1',ftString,18, true);
      Add('Info2',ftString,50, true);
      end;
    TableName:=AFileName;
    CreateTable;
    TableLevel := 7;
    Exclusive := true;
    Open;
    AddIndex('NName', 'NName', []);
    AddIndex('GDatum', 'GDatum', []);
    AddIndex('Zahl1', 'Zahl1', []);
    AddIndex('Zahl2', 'Zahl2', []);
    AddIndex('Zahl3', 'Zahl3', []);
    AddIndex('Info1', 'Info1', []);
    AddIndex('Info2', 'Info2', []);
    Free;
   end;   

Gruß
Zuletzt geändert von Lori am Fr 8. Mär 2013, 16:39, insgesamt 1-mal geändert.
Grund: richtiger Highlighter

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: TDBGrid sortierung

Beitrag von hbr »

Hallo,
hat niemand eine Idee?

Sicherlich hat doch schon jemand eine Sortierung mit TDBGrid gemacht?

Gruß

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: TDBGrid sortierung

Beitrag von hbr »

Hallo Forum,
suche immer noch nach einer Lösung! :roll:

Habe nun versucht diese Funktion (http://wiki.lazarus.freepascal.org/How_ ... BufDataSet) zu verwenden,
stolpere aber an folgendem Punkt.

Nun gibt es einen Fehler ( Exception-Klasse >>External: SIGSEGV).
In der Zeile "Field := DataSet.Fields.FindField(FieldName);" .

Leider weiß ich nicht ob dem Parameter Products vom Type 'TBufDataSet' etwas zugewiesen werden muß.
Da ich Products vorher deklarieren muste (Products:TBufDataSet).

Code: Alles auswählen

Aufruf der Funktion: 
procedure TFormMain.DBGridProductsTitleClick(Column: TColumn);
begin
  SortBufDataSet(Products, Column.FieldName);
end;
Kann mir Eventuell jemand hierzu etwas sagen?

Gruß

baba
Beiträge: 265
Registriert: Mi 4. Apr 2007, 17:47

Re: TDBGrid sortierung

Beitrag von baba »

Moin,

ein DBGrid stellt die Daten nur dar, es sind keine enthalten wie z.B. bei einem StringGrid. In dem Moment wo Du einen Index aktivierst, wird auch die Sortierung geändert, ganz automatisch.

Ich emfehle Dir aber SQL, z.B. SQLite. Die Indexe sind dann obsolet, es reicht eine Abfrage wie "SELECT * FROM meinedaten ORDER BY datenfeld;"

Gruß
Baba.

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: TDBGrid sortierung

Beitrag von hbr »

Hallo
Danke Baba für den Hinweis,
doch für SQL benötige ich ja eine Serverlösung (Software Server) und der Aufbau ist mir fremd.

Meine Datenmenge ist so gering, dass eine DB Datenbank völlig ausreicht.
In dem Beispiel ist es ja offensichtlich möglich eine Aufsteigende Sortierung nach Spalten zu realisieren.
Mir würde schon helfen, wenn ich wüste ob dem Parameter "Products" etwas zugewiesen werden muß!
Grusß
hbr

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: TDBGrid sortierung

Beitrag von hbr »

Hallo,
habe es hinbekommen!
Wenn ich dem 'MasterFiels' und dem 'IndexName' der TDbf den IndexName der einzelnen Felder übergebe,
dann wird die Ausgabe(aufsteigend) im DBGrid angezeigt.

Weis jemand was man übergeben muss, dass die Anzeige absteigen angezeigt wird?

Gruß
hbr


Danke hat sich erledigt!
Geht mit '[ixDescending]' :wink:

Gruß

baba
Beiträge: 265
Registriert: Mi 4. Apr 2007, 17:47

Re: TDBGrid sortierung

Beitrag von baba »

hbr hat geschrieben: doch für SQL benötige ich ja eine Serverlösung (Software Server) hbr
Falsch! Für SQLite benötigst Du nur eine DLL-Datei, mehr nicht. Es ist eine Embedded-Lösung, ganz ohne Server. Solltest Du Dir mal genauer ansehen.

Gruß
Baba.

hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: TDBGrid sortierung

Beitrag von hbr »

Hallo Baba,
baba hat geschrieben:
hbr hat geschrieben: doch für SQL benötige ich ja eine Serverlösung (Software Server) hbr
Falsch! Für SQLite benötigst Du nur eine DLL-Datei, mehr nicht. Es ist eine Embedded-Lösung, ganz ohne Server. Solltest Du Dir mal genauer ansehen.

Gruß
Baba.
Hast Du mal ein Beispiel welche Komponenten man benötigt, bzw. Verknüpfen muss um eine Datenbank zu realisieren?
Ist SQLite Standartmässig in Lazarus?

Gruß
Hbr

baba
Beiträge: 265
Registriert: Mi 4. Apr 2007, 17:47

Re: TDBGrid sortierung

Beitrag von baba »


hbr
Beiträge: 321
Registriert: Mi 20. Feb 2013, 10:30
OS, Lazarus, FPC: Win (L 2.2.4 FPC 3.2.2)
CPU-Target: 32/64,ARM(RPi)

Re: TDBGrid sortierung

Beitrag von hbr »

Danke,
werde ich mir ansehen.

Antworten