richtige Einbindung einer Indexdatei

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Werner
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 120
Registriert: Sa, 18. Mär 2006 16:08

richtige Einbindung einer Indexdatei

Beitrag von Werner »

Hi!
Ich habe mit folgendem Code den Betriebssystemfehler:

DbCreateIndex Thread ID: 1 Betriebssystem Fehler: 1 bekommen:

use vs_bank (das ist die .DBF Datei: vs_bank.dbf u.a. mit dem Feld: beginn)
INDEX ON beginn TO vs_bindx (dies die über die Installation mitgelieferte Index-Date: vs_bindx.ntx

Und hier bei: INDEX ON beginn TO vs_bindx steigt das System mit dem o. beschriebenen Fehler aus.

Muss ich vielleicht bei den Dateien jeweils immer die Endung mit angeben, also: use vs_bank.dbf und INDEX ON beginn TO vs_bindx.ntx ?

Vielen Dank für Eure Mühe!

mfG Werner
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: richtige Einbindung einer Indexdatei

Beitrag von Koverhage »

Ich denke das Problem ist beginn
BEGIN ist ein Schlüsselwort und könnte in dem Zusammenhang zu Problemen führen.
Gruß
Klaus
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: richtige Einbindung einer Indexdatei

Beitrag von Tom »

BEGIN ist ein Schlüsselwort und könnte in dem Zusammenhang zu Problemen führen.
Nein, das stimmt nicht. "INDEX ON BEGINN TO <MeineIndexDatei>" funktioniert problemlos, wenn alles andere richtig ist.

Leider fallen viele Probleme beim Erzeugen und zuweilen auch beim Verwenden von Indexen auf OS1 und "unzulässige Funktion" zurück, aber es wäre schon interessant, die XppError.LOG vollständig zu sehen, Werner.

Es gibt viele mögliche Ursachen. Ist "VS_BANK" überhaupt geöffnet worden? Wenn Du direkt dahinter NetErr() abfragst, was sagt das? Oder die Rückgabe von DbInfo(DBO_FILENAME)? Möglicherweise hast Du nicht das Recht, den Index zu erzeugen (Rechte im Verzeichnis). Oder Dir funkt ein Virenscanner dazwischen. Der Feldname "BEGINN" jedenfalls ist es NICHT.
Herzlich,
Tom
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2936
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: richtige Einbindung einer Indexdatei

Beitrag von Wolfgang Ciriack »

Oder die Datenbanktreiber sind nicht geladen - oder nicht die für NTX.
Viele Grüße
Wolfgang
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: richtige Einbindung einer Indexdatei

Beitrag von Tom »

Oder das Feld "BEGINN" existiert in der aktuellen Tabelle nicht. Das kann auch der Fall sein, wenn eine Tabelle nicht geöffnet werden konnte, die es tatsächlich enthält.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: richtige Einbindung einer Indexdatei

Beitrag von Tom »

Hallo, Werner.

Noch eine erklärende Ergänzung:

"INDEX ON ..." erzeugt eine Indexdatei zu einer Tabelle. Es ist nicht erforderlich, das jedes Mal zu tun, wenn man eine Tabelle verwendet, ganz im Gegenteil. Eigentlich erzeugt man Indexe nur hin und wieder, etwa, wenn eine Tabelle ganz neu ist (also der Index noch nicht exisitiert) oder aus Servicegründen (Datenwartung, bei korrupten/beschädigten Indexdateien, oder bei CDX regelmäßig, weil die Indexdateien da stark anwachsen können).

Einen bestehenden, korrekten Index öffnet man einfach mit der Tabelle oder kurz nach ihrer Öffnung:

Code: Alles auswählen

USE VS_BANK INDEX VS_BANK ALIAS bank NEW // öffnet die Tabelle "VS_BANK.DBF" und die Indexdatei "VS_BANK.NTX/.CDX"
oder

Code: Alles auswählen

USE VS_BANK ALIAS bank NEW // öffnet nur die Tabelle
SET INDEX TO VS_BANK // öffnet den Index dazu
Wenn man Daten einer Tabelle ändert, ändert sich dann der Index gleich mit. Deshalb ist es wichtig, immer alle Indexe mitzuöffnen, wenn Daten verändert oder neu erfasst werden könnten. Wenn man nur in der Tabelle sucht oder nur Inhalte ändert, die nicht in Indexen berücksichtigt sind, ist das nicht erforderlich. Wenn man mehrere Index(ausdrück)e hat hat, kann man den führenden Index mit "SET ORDER TO" wechseln, bei Compoundindexen (CDX) auf Wunsch ergänzt um "TAG" für den Namen des Indexes.
Herzlich,
Tom
Antworten