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

Q: Paradox-Tabellen umstrukturieren, Indizes reparieren

176 views
Skip to first unread message

Lukas Zeller

unread,
Apr 27, 1998, 3:00:00 AM4/27/98
to

Ich habe folgende zwei Probleme mit der BDE und Paradox-Dateien, wo ich
in der BDE-Programmierung steckengeblieben bin (unter D3):

1. Reparieren des Primärindex einer Paradox-Table. Mit "DbiRegenIndexes"
oder "DbiRegenIndex" kann man zwar wunderbar kaputte Sekundärindizes
reparieren. Wie aber lässt sich ein Primärindex, der defekt ist,
wiederherstellen? Das Problem scheint zu sein, dass man für
DbiRegenIndex(es) die Tabelle zuerst oeffnen muss (entweder mit
MyTable.active:=true oder DbiOpenTable), was eben nicht geht, wenn
der Primaerindex nicht einwandfrei ist.

2. Umstrukturieren einer Paradox-Table. Ich habe auf der Delphi Super
Page (DSP) ein Beispiel gefunden (autoinc.pas), das die Anwendung
von "DbiDoRestructure" sehr gut und ausführlich vorzeigt. Das
dumme dabei ist nur, dass auch das Originalbeispiel unter D3
nicht funktioniert. "DbiDoRestructure" liefert ganz stur einen
Fehler "Ungültiger Felddescriptor", sogar dann, wenn ich gar
keine echte Umstrukturierung mache, d.h. die Felddescriptoren,
die "DbiGetFieldDescs" liefert, unverändert an "DbiDoRestructure"
weiterreiche.

Ich wäre sehr dankbar um einen Tip, was wohl das Problem sein könnte,
nachdem ich wirklich alles versucht habe, was mir in den Sinn gekommen
ist...

Lukas Zeller (l...@zep.ch)


--
Lukas Zeller (l...@zep.ch)

Carsten Meyer

unread,
Apr 28, 1998, 3:00:00 AM4/28/98
to

Hallo Lukas,

ich stecke selber zwar nicht in der BDE-Programmierung, habe aber etwas von
einer Tool-Dll von Borland gehört.

Diese wird zusammen mit einem Beispiel-Programm auf www.borland.com zur
Verfügung gestellt. Das Programm kann (angeblich) viele Fehler in
Paradox-Datenbanken reparieren. Der Name der Dll: TUtility.Dll

Der genaue Link lautet: http://www.borland.com/devsupport/bde/utilities.html
Vielleicht ist das ja die Lösung Deines Problems

Viele Grüße,
Carsten Meyer


Lukas Zeller schrieb in Nachricht
<1d85fw0.zw...@zhwbs-e1-08.limmat.ch>...

Jürgen Ewen

unread,
Apr 28, 1998, 3:00:00 AM4/28/98
to

Hallo Lukas,

diese Probleme hatte ich auch mal. Ich bin dann per Programm folgendermaßen
vorgegangen:

1. Mit eine Schleife alle Dateien der Tabelle (Tabelle.PX, Tabelle.X*,
Tabelle.Y* usw.) gelöscht. (Außer Tabelle.DB) natürlich !)
Dadurch ist dann keine Primär und Sekundärindex mehr vorhanden, sondern
nur noch die nackte
Datendatei.

2. Mit
dbTab.Open;
dbTab.AddIndex('', 'IdZa', [ixPrimary,ixUnique]);
dbTab.AddIndex('ILastBest', 'Artikelnummer', [ixCaseInsensitive]);
dbTab.Close;
Primär und Sekundärindexe wieder hergestellt.

Ist zwar nicht die feine Art aber es klappt bis heute noch wunderbar. Was
soll man auch machen, wenn sich die Tabelle überhaupt nicht mehr öffnen läßt
?

Gruß Jürgen.


Lukas Zeller schrieb in Nachricht
<1d85fw0.zw...@zhwbs-e1-08.limmat.ch>...
>Ich habe folgende zwei Probleme mit der BDE und Paradox-Dateien, wo ich
>in der BDE-Programmierung steckengeblieben bin (unter D3):
>
>1. Reparieren des Primärindex einer Paradox-Table. Mit "DbiRegenIndexes"
> oder "DbiRegenIndex" kann man zwar wunderbar kaputte Sekundärindizes
> reparieren. Wie aber lässt sich ein Primärindex, der defekt ist,
> wiederherstellen? Das Problem scheint zu sein, dass man für
> DbiRegenIndex(es) die Tabelle zuerst oeffnen muss (entweder mit
> MyTable.active:=true oder DbiOpenTable), was eben nicht geht, wenn
> der Primaerindex nicht einwandfrei ist.
>
>2. Umstrukturieren einer Paradox-Table. Ich habe auf der Delphi Super
> Page (DSP) ein Beispiel gefunden (autoinc.pas), das die Anwendung
> von "DbiDoRestructure" sehr gut und ausführlich vorzeigt. Das
> dumme dabei ist nur, dass auch das Originalbeispiel unter D3
> nicht funktioniert. "DbiDoRestructure" liefert ganz stur einen
> Fehler "Ungültiger Felddescriptor", sogar dann, wenn ich gar
> keine echte Umstrukturierung mache, d.h. die Felddescriptoren,
> die "DbiGetFieldDescs" liefert, unverändert an "DbiDoRestructure"
> weiterreiche.
>
>Ich wäre sehr dankbar um einen Tip, was wohl das Problem sein könnte,
>nachdem ich wirklich alles versucht habe, was mir in den Sinn gekommen
>ist...
>
>Lukas Zeller (l...@zep.ch)
>
>

>--
>Lukas Zeller (l...@zep.ch)

Jorg Schaefer

unread,
Apr 30, 1998, 3:00:00 AM4/30/98
to

In article <1d85fw0.zw...@zhwbs-e1-08.limmat.ch>, l...@zep.ch
says...

> Ich habe folgende zwei Probleme mit der BDE und Paradox-Dateien, wo ich
> in der BDE-Programmierung steckengeblieben bin (unter D3):
>
> 1. Reparieren des Primärindex einer Paradox-Table. Mit "DbiRegenIndexes"
> oder "DbiRegenIndex" kann man zwar wunderbar kaputte Sekundärindizes
> reparieren. Wie aber lässt sich ein Primärindex, der defekt ist,
> wiederherstellen? Das Problem scheint zu sein, dass man für
> DbiRegenIndex(es) die Tabelle zuerst oeffnen muss (entweder mit
> MyTable.active:=true oder DbiOpenTable), was eben nicht geht, wenn
> der Primaerindex nicht einwandfrei ist.
>
> 2. Umstrukturieren einer Paradox-Table. Ich habe auf der Delphi Super
> Page (DSP) ein Beispiel gefunden (autoinc.pas), das die Anwendung
> von "DbiDoRestructure" sehr gut und ausführlich vorzeigt. Das
> dumme dabei ist nur, dass auch das Originalbeispiel unter D3
> nicht funktioniert. "DbiDoRestructure" liefert ganz stur einen
> Fehler "Ungültiger Felddescriptor", sogar dann, wenn ich gar
> keine echte Umstrukturierung mache, d.h. die Felddescriptoren,
> die "DbiGetFieldDescs" liefert, unverändert an "DbiDoRestructure"
> weiterreiche.
>
> Ich wäre sehr dankbar um einen Tip, was wohl das Problem sein könnte,
> nachdem ich wirklich alles versucht habe, was mir in den Sinn gekommen
> ist...

Hy,

zu Problem 1 kann ich Dir leider im Moment nichts sagen. Bei Problem 2
gehe ich wie folgt vor:
1 - Kopie der Tabelle unter eindeutigem Tempname anlegen.
2 - Tabelle mit neuer Struktur unter altem Namen anlegen.
3 - Alle Felder von alt nach neu per Batchmove.Mappings umkopieren.
4 - Wenn's geklappt hat, die Temptabelle löschen.

Mein Problem ist, dass wenn referentielle Integritäten definiert sind,
die Sache nicht funktioniert. Noch habe ich aber keinen Weg gefunden RI's
zu löschen und wieder anzulegen. D.h., noch funktioniert er nicht.

Schicke ggf. mal ein Stueck Source aus dem Dein Problem deutlicher
hervorgeht.

Ciao...
js

Lukas Zeller

unread,
May 2, 1998, 3:00:00 AM5/2/98
to

Jorg Schaefer <jorg.s...@netcologne.de> wrote:

> In article <1d85fw0.zw...@zhwbs-e1-08.limmat.ch>, l...@zep.ch
> says...
>
> > Ich habe folgende zwei Probleme mit der BDE und Paradox-Dateien, wo ich
> > in der BDE-Programmierung steckengeblieben bin (unter D3):

[snip]
> > 2. Umstrukturieren einer Paradox-Table.
[snip]

> zu Problem 1 kann ich Dir leider im Moment nichts sagen. Bei Problem 2
> gehe ich wie folgt vor:
> 1 - Kopie der Tabelle unter eindeutigem Tempname anlegen.
> 2 - Tabelle mit neuer Struktur unter altem Namen anlegen.
> 3 - Alle Felder von alt nach neu per Batchmove.Mappings umkopieren.
> 4 - Wenn's geklappt hat, die Temptabelle löschen.
>
> Mein Problem ist, dass wenn referentielle Integritäten definiert sind,
> die Sache nicht funktioniert. Noch habe ich aber keinen Weg gefunden RI's
> zu löschen und wieder anzulegen. D.h., noch funktioniert er nicht.
>
> Schicke ggf. mal ein Stueck Source aus dem Dein Problem deutlicher
> hervorgeht.

Unterdessen bin ich (auf Umwegen über Suche nach "dbiDoRestructure"
in Altavista) auf BDE-Infos auf der Borland-Homepage gestossen, wo es
Beispielcode hat, der tatsächlich funktioniert:

http://www.borland.com/devsupport/bde/bdeapiex/dbidorestructure.html

Da hat es für verschiedene Restukturierungsaufgaben vollständige
Prozeduren; ich glaube auch dass etwas zu referentiellen Integritäten
dabei ist.

Jedenfalls: Vielen Dank für die Tips!

Gruss,

0 new messages