![]() |
Re: vorhandenen Index ermitteln
Hallo,
an dieser Stelle erst einmal Dank an Alle die bei der Problemlösung behilflich waren. @raiguen, ...Schleife nicht praktikabel, hat ja auch nicht funktioniert und die Fehlermeldung gab es auch noch dazu. Habe nun den Code entsprechend geändert bzw. ergänzt und siehe da es funktioniert!! Ganz so weit habe ich doch nicht daneben gelegen, und ich denke das ich noch im lernfähigen Alter bin! Am Ende wäre noch gut, wenn die neu erzeugten Indexe gelöscht würden. Entweder nur temporär erstellen oder mit Form onClose löschen, will mal sehen vielleicht gibt es ja dazu noch einen Tipp. Nochmal danke für die Hilfe und einen schönen Abend. Mit den besten Grüßen aus Ahlhorn Fritz |
Re: vorhandenen Index ermitteln
Hallo Fritz, ich frage mich die ganze Zeit, wozu Du unbedingt temporäre Indizes erstellen möchtest. :gruebel:
|
Re: vorhandenen Index ermitteln
Hallo DeddyH,
temporär nicht unbedingt! Nur, wie schon geschrieben, sollten die neu erstellten Indizies am Ende nicht mehr vorhanden sein. Mit diesem Teil kann ich mir dann außerhalb meiner Anwendung auf jedes Feld einen Index setzen, ohne die eigentliche Tabelle zu verändern. Damit ist dann die Suche nach irgendwelchen Daten deutlich vereinfacht. Habe schon oft genug in einer unsortierten Tabelle gesucht. Die hat zwar nur ca. 3500 Datensäte, aber durchsuch die mal. So kann ich einzelne Felder, an die ich sonst nicht rankomme, direkt im Grid verädern. Das möchte ich, wenn es denn richtig fertig ist, in ein anderes Programm integrieren. Schönen Abend noch Fritz |
Re: vorhandenen Index ermitteln
Ja OK, in einer sortierten (oder besser indizierten) Tabelle sucht es sich schneller. Allerdings muss der Index aber auch erstmal erstellt werden, und das dauert ja auch seine Zeit. Ich weiß nicht, wie das bei ABS DB ist, aber ich denke, der Geschwindigkeitsvorteil wird dadurch wieder zunichte gemacht.
|
Re: vorhandenen Index ermitteln
Zitat:
Zitat:
Delphi-Quellcode:
@DeddyH: Das ABS-Manual verweist (gerade bei SQL-STatements) auf die Möglichkeit, zur Beschleunigung von Such-/Sortiervorgängen zusätzliche Indizies auf die betreffenden Spalten zu setzen. Okay, bei GROSSEN TAbellen kann das natürlich etwas dauern...
for cnt := 0 to Pred(IndexListe) do
Tabelle.DeleteIndex(IndexListe[cnt]); |
Re: vorhandenen Index ermitteln
@ raiguen,
danke, habs gleich probiert. DeleteAllIndexes ist ja eine sehr radikale Sache. Alles weg. Da ist für meine Anwendung die andere Möglichkeit DeleteIndex(const Name: String); optimal. Da benutze ich eine Listbox und merke mir dort die neuen Indizies.
Delphi-Quellcode:
Zunächst habe ich die Procedure auf einen Button onClick gelegt, aber...
lbIndex.Items.Add(sName);
Delphi-Quellcode:
Fehlermeldung beim compiliern: Inkompatible Typen und Klasse besitzt keine Standardeigenschaft.
procedure TForm1.bIndexDeleteClick(Sender: TObject);
var cnt : integer; // <-- sollte doch richtig sein oder?? begin for cnt := 0 to Pred(lbIndex) do Table.DeleteIndex(lbIndex[cnt]); end; Hilfe bitte nochmal erforderlich. Fritz |
Re: vorhandenen Index ermitteln
Delphi-Quellcode:
vielleicht?
Table.DeleteIndex(lbIndex.Items[cnt]);
|
Re: vorhandenen Index ermitteln
Hallo Progman,
danke. Nein, der Fehler muß hier liegen
Delphi-Quellcode:
Die Zeile ist rot hinterlegt und der Cursor blinkt hinter ')' dieser Klammer.
for cnt := 0 to Pred(lbIndex) do
Fritz |
Re: vorhandenen Index ermitteln
Halo,
was ist lbIndex ? Eine Form-Variable ? Wozu ?
Delphi-Quellcode:
Ausserdem wozu eine ListBox ?
for i:= 0 to ListBox1.Items.Count-1
Eine StringList recith doch, oder ? Ich würde mal die pas-Datei mit dem Editor öffnen (Delphi zu). Es kann sein, dass durch ein Paste falsche Zeilenumbrüche in der Pas stehen, erkennbar durch schwarze Blöcke. Heiko |
Re: vorhandenen Index ermitteln
Delphi-Quellcode:
(ich nehme mal an, lbIndex ist eine ListBox) ;)
for cnt := 0 to lbIndex.ItemsCount -1 do
Und wenn es nur darum geht, die Listbox zu löschen, einfach lbIndex.items.Clear. Ein for-Schleife zum Löschen geht meist schief, weil sich ja die Anzahl nach Löschen eines Eintrags geändert hat, aber for ganz stur seine am Anfang ermittelt Durchlaufzahl machen will. Da nimmt man
Delphi-Quellcode:
while lbIndex.count > 0 do lbIndex.Delete(0);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz