Autor Beitrag
Olli_Sahr
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 83


D5 Prof, D7 Architect
BeitragVerfasst: Mo 20.02.06 23:33 
Liebe Community,


ich habe eine Access 2000 Datenbank mit der Tabelle "Kunde".
In der Tabelle sind nur ein paar Felder (alles Textfelder).

Ich benutze die KaDao Komponenten (Version 9.00) um die Access Datenbank in Delphi anzubinden.
Das funktioniert bestens.

Ich habe mal ein wenig mit "Filtern" gespielt.
Dazu habe ich eine Schaltfläche auf mein Formular gelegt, die beim "OnClick" den Folgenden Code ausführt:

ausblenden Delphi-Quelltext
1:
2:
TabelleKunde.Filter := 'Vorname = "Oliver"';
TabelleKunde.Filtered := True;


Wenn ich den Filter anwende, werden nur Kunden angezeigt, die den Vornamen "Oliver" haben (es funktioniert also bestens).

Ich habe in meinem Formular auch eine Tabelle (KaDaoDBGrid) mit den Spalten "Nachname" und "Vorname".
Die Tabelle dient als Navigation in den Kundendaten.
Klicke ich in der Tabelle auf einen Kunden, wird der ausgewählt und die Eingabefelder für die Kundendaten mit den Daten des Kunden vorbelegt.
Wenn ich den Filter anwende, wird die Kundenliste auch gefiltert (es werden nur Kunden angezeigt, die den Vornamen "Oliver" haben.

Es funktioniert also alles perfekt.

Es hat mich nur gestört, dass in der Kundentabelle die Daten nicht sortiert werden.

Da meine User absolute Looser sind (die froh sind, wenn sie den PC alleine anschalten können) habe ich die Tabelle sehr einfach gestaltet.
Normalerweise hat man bei einem KaDaoDBGrid eine "FixedColum", in der der Datensatzmarkierer (der Pfeil, der auf den aktuellen Datensatz zeigt).
In der FixedColum ist auch oben links ein Pfeil, wenn man den klickt kommt ein englisches und sehr großes PopUp Manü, in dem man auch Sortieren kann.
Man bekommt einen Dialog, in dem man die Spalten und die Sortierreihenfolge festlegen muss.
Zu kompliziert für meine Looser.

Daher habe ich die FixedColumn ausgeblendet und die Sortierung so gelöst (Tipp von einem Freund):

In Access habe ich die Tabelle Kunde bearbeitet und auf die Schaltfläche "Indizes" geklickt.
Dann habe ich einen Index "KundenSort" angelegt, in dem erst nach Nachname und anschließend nach "Vorname" sortiert wird.

In Delphi habe ich der Tabelle " TabelleKunde" bei der Property "IndexName" den Index auswählen wollen, aber dabei die Meldung erhalten, dass das nur bei Standart-Tabellen möglich ist.
Ich habe daher den TableType von "DynasetTable" auf "StandardTable" geändert und den Index ausgewählt.

In der Anwendung werden die Kundendaten in der Kundenliste richtig sortiert (erst nach Nachname und dann nach Vorname).

Aber wenn ich jetzt auf den Button mit dem Filter klicke, bekomme ich die Meldung "Operation für diesen Objekttyp nicht unterstützt".

Also kann ich (mit meinem Wissenstand) entweder das Filtern haben, oder das Sortieren.
Ich brauche aber beides.

Muss ich bei einer "StandardTable" vielleicht die Filter anders machen (andere Syntax)?
Oder kann ich die Sortierung anders lösen, so dass ich den TableType auf "DynasetTable" lassen kann?

Wo ist eigentlich der Unterschied zwischen einer "StandardTable" und einer "DynasetTable"?


Bitte helft mir, ich komme da echt nicht weiter!

Danke für Eure Hilfe.


OLLI