Autor Beitrag
rowisoft
Hält's aus hier
Beiträge: 10



BeitragVerfasst: So 03.11.02 14:56 
Hallo!

Habe da so meine Probleme mit dem Sortieren einer Tabelle.
Und zwar kann ich doch mit dem SQL-Befehl
SELECT * FROM datenbank.db ORDER BY Datum
eine Tabelle sortieren.
Ich habe jedoch das Problem, das danach die Tabelle nicht mehr bearbeitert werden kann! Gibt's da irgend eine Lösung, um die Datenbank zu sortieren und diese trotzdem editierbar zu halten?

tschüss
Robert
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: So 03.11.02 15:01 
Hi,

mit Deinem SELECT-Befehl sortierst Du schon Deine Tabelle. Nur Du triffst eine Auswahl. Um eine Tabelle zu sortieren, mußt Du einen Index setzen, damit die auch noch editierbar bleibt oder Irre ich mich da ?
rowisoft Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: So 03.11.02 15:33 
Titel: Index
Hallo!

bis11 hat folgendes geschrieben:
Um eine Tabelle zu sortieren, mußt Du einen Index setzen, damit die auch noch editierbar bleibt oder Irre ich mich da ?


Ja - die Sortierung funktioniert auch, aber wie gesagt kann man die Daten dann nicht mehr editieren.
Einen Primärindex zu setzen würde doch bedeuten, dass ich dann immer nur einen Datenbankeintrag mit dem gleichen Datum in der Spalte "Datum" haben darf. Das ist aber nicht Sinn und Zweck...
Und wenn ich einen Sekundärindex einrichte - hilft mir das gar nichts weiter??! Wie kann ich denn angeben, dass nach diesen Sekundärindex sortiert werden soll?

Achja: Das ganze ist im Übrigen eine Paradox-Tabelle (.db)

tschüss
Robert
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: So 03.11.02 15:46 
Hi,

Du kanst mit folgenden SQL-Befehl einen Index erzeugen :

ausblenden Quelltext
1:
CREATE INDEX datenbank ON "datenbank.DB" (Datum)					


Danach rufts Du einfach nur nochmal folgenden SELECT-Befehl auf und es müßte funktionieren :

ausblenden Quelltext
1:
SELECT * FROM datenbank.db					
Steffer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 299



BeitragVerfasst: So 03.11.02 15:51 
Nun, bei Order By muss dieses ein Index nutzen. Auch muss RequestLive:= True; sein. Darüber hinaus gibt es weitere Regeln:
www.faqsen.de/find.j...544850494951514952;2

_________________
Keine Signatur ...
rowisoft Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: So 03.11.02 15:59 
Titel: Sortierung
Hallo!

Ersteinmal vielen besten Dank für deine Antworten und die Mühe die du dir machst!

Leider funktioniert das immer noch nicht :-(

Mit dem Befehl wurde jetzt ein Sekundär-Index angelegt mit dem Namen "datenbank". (Das kann ich auch aus der Datenbankoberfläche entnehmen).
Wenn ich dann jedoch wieder den normalen SELECT-Befehl anwende, ist noch immer nichts sortiert - jedoch kann ich editieren.
Dann habe ich noch probiert, den SELECT-Befehl mit der ORDER BY-Klausel anzuwenden - hier wird dann zwar wieder sortiert - jedoch können die Daten dann aber wieder nicht mehr editiert werden... :-(

tschüss
Robert
rowisoft Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: So 03.11.02 16:02 
Titel: "auf Index basiert"
Hallo Steffer!

Steffer hat folgendes geschrieben:
Nun, bei Order By muss dieses ein Index nutzen. Auch muss RequestLive:= True; sein. Darüber hinaus gibt es weitere Regeln:
www.faqsen.de/find.j...544850494951514952;2


RequestList ist True...
Ein Index wird doch automatisch genutzt, oder???
Vorhanden ist er in der Tabelle zumindest, ob er genutzt wird - naja so sicher bin ich mir da nämlich nicht...

tschüss
Robert
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: So 03.11.02 18:29 
Titel: Re: "auf Index basiert"
Hi
rowisoft hat folgendes geschrieben:
Ein Index wird doch automatisch genutzt, oder???
Vorhanden ist er in der Tabelle zumindest, ob er genutzt wird - naja so sicher bin ich mir da nämlich nicht...

Wenn du eine ORDER BY Klausel verwendest und es existiert ein Index auf diese Spalte(n), wird der Index zur Beschleunigung der Sortierung verwendet. Ohne dein Zutun.

Borland hat folgendes geschrieben:

Abfragen, die Daten aus einer einzelnen Tabelle abrufen, sind unter folgenden Voraussetzungen aktualisierbar:

Die SELECT-Anweisung darf nicht das Schlüsselwort DISTINCT enthalten.
Die SELECT-Klausel beschränkt sich auf eine einfache Spaltenreferenz oder auf eine berechnete Spalte. Aggregationen sind unzulässig. Berechnete Spalten bleiben schreibgeschützt.
Die in der FROM-Klausel referenzierte Tabelle ist eine aktualisierbare Basistabelle.
Es ist keine GROUP BY- oder HAVING-Klausel vorhanden.
In der Anweisung sind keine Unterabfragen enthalten.

Die Abfrage enthält keine ORDER-BY-Klausel.

Wenn in der ORDER-BY-Klausel nur eine Spalte angegeben ist und ein einspaltiger dBASE-Primär- oder Sekundärindex vorhanden ist, der auf ebendiesem Feld beruht, wird der Nur-lesen-Effekt einer ORDER-BY-Klausel aufgehoben und die Abfrage aktualisierbar. Dies gilt nicht, wenn ein zusammengesetzter dBASE-Index vorliegt. Ein Paradox-Einfeld- oder Mehrfeld-Primärindex macht die Abfrage aktualisierbar, wenn ORDER BY exakt die gleichen Spalten (in der gleichen Reihenfolge) verwendet wie der Index. Paradox-Sekundärindizes dagegen heben den Nur-lesen-Effekt einer ORDER-BY-Klausel nicht auf.


Wenn du also einen Sekundärindex hast für die Sortierung nach dem Datum und verwendest den in einer ORDER BY, bleibt die Datenmenge ReadOnly.
Allerdings kannst du dann ja auf die SELECT verzichten und statt dessen eine TTable-Komponente mit diesem Index verwenden. Dann hast du auch die Sortierung und deine Datenmenge ist aktualisierbar. Eventuelle Einschränkungen kannst du dann immer noch mit Filtern realisieren.

Wenn du unbedingt TQuery verwenden willst, bleibt zum Aktualisieren nur der Weg über CachedUpdates.

Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
rowisoft Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: So 03.11.02 19:19 
Titel: Re: "auf Index basiert"
Hallo!

Danke für deine Antwort!

LCS hat folgendes geschrieben:
Wenn du unbedingt TQuery verwenden willst, bleibt zum Aktualisieren nur der Weg über CachedUpdates.


Und der Weg über CachedUpdates - wie würde der in etwa aussehen? Und wo sind die Nachteile? Habe damit noch keine Erfahrungen gemacht.

tschüss
Robert