Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Index nicht mehr gültig in Paradox-Dateien

274 views
Skip to first unread message

Ingo Eppmann

unread,
Jun 8, 2002, 1:51:34 PM6/8/02
to
Ich bekomme im Programm (mit Paradox-Dateien) die Meldung:
"Index nicht mehr gültig in Tabelle c:\.....db

Wie kann man den Index am besten und einfachsten wieder herstellen. Gibt es
dafür eine Funktion in D5

Vielen Dank
Ingo


Sven Lanoster

unread,
Jun 8, 2002, 4:07:23 PM6/8/02
to
Ingo Eppmann wrote:


Die einfachste Methode ist, alle Alternativ-Keys auf der Platte zu
löschen (Tabelle.yg1, nicht Tabelle.db oder Tabelle.px) und per SQL
(z.B.) die Indizes (alle, außer Primärindex) wieder neu zu erstellen.
Geht allerdings nur, wenn der Primärkey und die Tabelle noch ok sind.

Alternativ kann auch das Tabellenreparatur-Util von Coral-Paradox
benutzt werden. Die älteren PDox-Versionen ignorieren beim "Reparieren"
leider den eingestellten Sprachtreiber.

PDox benutzt dazu eine DLL, die Du (notfalls) auch direkt benutzen
kannst. Heißt irgendwas mit "TUTil*.DLL".

MfG,
Sven.

Arnd Scharwächter

unread,
Jun 9, 2002, 11:13:54 AM6/9/02
to

> Wie kann man den Index am besten und einfachsten wieder herstellen. Gibt
es
> dafür eine Funktion in D5

Einfach alle Daten außer *.px, *.db, *.mb der entsprechenden Datenbankdatei
löschen. Sollte es dann immer noch nicht funktionieren, einfach noch die
"px"-Datei löschen.


MfG,

Arnd


heiko Lüttge

unread,
Jun 11, 2002, 2:13:44 AM6/11/02
to
unter www.borland.com/devsupport/bde gibt es tutil32 mit einem
Delphi-Beispiel-Programm. Die dll kann ne ganze Menge reparieren, aber nicht
alles

z.B. geht nicht "Datei ist beschädigt, aber nicht der Vorspann"

Wenn es noch geht, steig auf Interbase um.

Heiko

"Ingo Eppmann" <iepp...@web.de> schrieb im Newsbeitrag
news:adtg75$vet$00$1...@news.t-online.com...

Steffen Werner

unread,
Jun 11, 2002, 3:33:30 AM6/11/02
to
Hi Ingo,


>Wie kann man den Index am besten und einfachsten wieder herstellen. Gibt es
>dafür eine Funktion in D5


Bei mir hat - allerdings unter D6 folgendes funktioniert.
Dabei arbeite ich mit einer Mastertable, bei der ich nachschaue, was es für
Indexe gibt, und einer Clienttable, die an der Beschädigten Datei die Indexe
setzt.
Natürlich kann man die Indexdefinitionen auch direkt als Strings angeben. Aber da
ich sowieso immer noch die leeren Basistabellen habe, ist es so flexibler.


procedure TDatenreparaturForm.AlteIndexeLoeschen;
begin
LoeschAllFiles( Path, '*.px' );
LoeschAllFiles( Path, '*.val' );
LoeschAllFiles( Path, '*.xg?' );
LoeschAllFiles( Path, '*.yg?' );
end;

procedure TDatenreparaturForm.DateienNeuIndexieren;
var
found : boolean;
begin
found := FindFirstFiles( Path + '\Muster\*.db' );
repeat
if FileExists( Path + '\' + FileData.cFileName ) then
begin
TableMaster.TableDateiName := FileData.cFileName;
TableClient.TableDateiName := FileData.cFileName;
IndexTable;
end;
found := FindNextFiles;
until ( found = False );
end;


procedure TDatenreparaturForm.IndexTable;
var
I : integer;
IndexName : String;
IndexString : String;
begin
TableMaster.IndexDefs.Update;
// Primärindex
for I := 0 to TableMaster.IndexDefs.Count - 1 do
begin
if Trim( TableMaster.IndexDefs.Items[I].Name ) = '' then
begin
IndexString := TableMaster.IndexDefs.Items[I].Fields;
IndexName := '';
TableClient.AddIndex(IndexName, IndexString, [ixPrimary]);
end;
end;
// Sekundärindex
for I := 0 to TableMaster.IndexDefs.Count - 1 do
begin
if Trim( TableMaster.IndexDefs.Items[I].Name ) <> '' then
begin
IndexString := TableMaster.IndexDefs.Items[I].Fields ;
IndexName := TableMaster.IndexDefs.Items[I].Name;
TableClient.AddIndex(IndexName, IndexString, []);
end;
end;
end;


// Viel Erfolg wünscht Steffen

--
__________________________________________________________
News suchen, lesen, schreiben mit http://newsgroups.web.de

Steffen Werner

unread,
Jun 11, 2002, 3:50:57 AM6/11/02
to
Hi Ingo,

>procedure TDatenreparaturForm.AlteIndexeLoeschen;
>begin
> LoeschAllFiles( Path, '*.px' );

// > LoeschAllFiles( Path, '*.val' );


> LoeschAllFiles( Path, '*.xg?' );
> LoeschAllFiles( Path, '*.yg?' );
>end;


natürlich in Deinem Fall die .val NICHT löschen.
Man sollte doch nicht so einfach Quelltext kopieren.


Gruß Steffen

Ingo Eppmann

unread,
Jun 11, 2002, 4:57:15 PM6/11/02
to
Vielen Dank für die Tipps,
Werde es mal ausprobieren

Gruß Ingo


"Ingo Eppmann" <iepp...@web.de> schrieb im Newsbeitrag
news:adtg75$vet$00$1...@news.t-online.com...

0 new messages