Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Tabelle mit Indizies neu erstellen (https://www.delphipraxis.net/158629-tabelle-mit-indizies-neu-erstellen.html)

Angel4585 24. Feb 2011 12:41

Datenbank: BDE • Version: 5.2.xyz • Zugriff über: Delphi Std DB Komponenten

Tabelle mit Indizies neu erstellen
 
Hallo,

ich möchte eine Tabelle samt Indiezies neu ertsellen, so sieht mein Code dazu aus:

Delphi-Quellcode:
table1.Close;
table1.DatabaseName:=ADB;
if not table1.Exists then  
  begin
  table1.CreateTable;            
  table1.IndexDefs.Clear;
  table1.IndexDefs.Add('SortErledigt','ErledigtDatum',[ixDescending]);
  end;
table1.IndexName:='SortErledigt';
table1.Open;
Wenn ich das so ausführe bekomme ich bei dem Open die Meldung:
---------------------------
Fehler
---------------------------
Index does not exist.

Index: SortErledigt
---------------------------
OK
---------------------------


Wenn ich die IndexDefs vor dem CreateTable mache, kommt folgende Meldung:
---------------------------
Fehler
---------------------------
Table is not indexed.

Table does not exist.

Table: D:\Pfad\XTabelle.db

File or directory does not exist.

File: D:\Pfad\XTabelle.db
---------------------------
OK
---------------------------

Was genau mach ich falsch, das hinzufügen von Indizies ging doch über IndexDefs oder? :gruebel:

DeddyH 24. Feb 2011 12:48

AW: Tabelle mit Indizies neu erstellen
 
Hast Du Dir das C++-Beispiel aus dem DocWiki einmal angeschaut?

nahpets 24. Feb 2011 12:59

AW: Tabelle mit Indizies neu erstellen
 
Hallo,

stell' bitte mal die Indexdefinitionen vor das CreateTable.

So sind die Indexdefinitonen beim Erstellen noch nicht bekannt und können daher auch nicht berücksichtigt werden.

DeddyH 24. Feb 2011 13:05

AW: Tabelle mit Indizies neu erstellen
 
Das hat er ja auch versucht.

Angel4585 24. Feb 2011 13:09

AW: Tabelle mit Indizies neu erstellen
 
Danke danke, so klappts:
Delphi-Quellcode:
table1.Close;
table1.DatabaseName:=ADB;
if not table1.Exists then  
  begin                                          
  table1.IndexDefs.Clear;
  with table1.IndexDefs.AddIndexDef do
    begin
    Name:='';
    Fields:='Id';
    Options:=[ixPrimary,ixUnique];
    end;
  with table1.IndexDefs.AddIndexDef do
    begin
    Name:='SortErledigt';
    Fields:='Erledigt';
    Options:=[ixCaseInsensitive];      
    end;      
  table1.CreateTable;            
  end;
table1.IndexName:='SortErledigt';
table1.Open;
Einmal musste ich einen Primärindex definieren und dann wird eine leere Option nicht akzeptiert, also muss man da was reinschreiben, da ich nicht descending sondern ascending sortieren will, hab ich das halt mal so gelöst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz