Hi!
Ich habe versucht, einen Index auf das Beginndatum einer Datei zu setzen:
use vs_bank
go top
copy to vs_benk.dbf
use vs_benk
index on beginn to ivs_bank
Danach kommt Fehler: siehe Anlage)
oError:args
-> VALTYPE: C VALUE: ivs_benk
-> VALTYPE: C beginn
-> VALTYPE: B VALUE [II beginn]
oError; decriction ; Datenbank-Alias existiert nicht/ist ungültig
oError:genCode : 66
oError:operation : DbCreateIndex
oError: subcode : 8021
///////////////////////////////////
An einer anderen Stelle im Programm tritt die folgende Fehlermeldung Base/8999 auf (s. Anlage)
beginn ist ein DB-Element
use vs_bank
index on beginn to vs_bindx
close Databases
use vs_bank
Set INDEX TO vs_bindx
==> Fehlermeldung:
Fehler BASE/8999
Beschreibung: Datei kann nicht geöffnet werden
Operation: OrdListAdd
///////////////////////////
Zusatz-Info: Die Datei: ivs_benk.ntx wird bei der Installation mitgeliefert, die Datei: vs_bindx jedoch nicht. Hat das eine Bedeutung?
Was mache ich falsch bei meiner INDEXIERUNG?
Gruß Werner
Problem mit INDEX ON beginn to ivs_benk
Moderator: Moderatoren
Problem mit INDEX ON beginn to ivs_benk
- Dateianhänge
-
- FM_RGB.JPG (45.61 KiB) 1610 mal betrachtet
-
- XPPERROR.LOG
- (12.57 KiB) 22-mal heruntergeladen
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: Problem mit INDEX ON beginn to ivs_benk
vs_benk ist anderswo oder auf demselben Rechner vermutlich exklusiv in Benutzung und gesperrt. Deshalb kann nicht in diese Datei kopiert bzw. diese Datei nach dem Kopieren geöffnet werden, und aus dem gleichen Grund lässt sie sich an der anderen Stelle auch nicht öffnen.
USE (cDateiName) erzeugt keinen Laufzeitfehler, wenn in der ErrorSys.PRG entsprechend abgefangen wird. Deshalb geht Dein Code fehlerfrei über das USE hinweg, obwohl die Datei nicht geöffnet werden konnte, und scheitert dann beim Index. Wenn man NetErr() nach dem USE abfragt, kann man mit so etwas umgehen.
USE (cDateiName) erzeugt keinen Laufzeitfehler, wenn in der ErrorSys.PRG entsprechend abgefangen wird. Deshalb geht Dein Code fehlerfrei über das USE hinweg, obwohl die Datei nicht geöffnet werden konnte, und scheitert dann beim Index. Wenn man NetErr() nach dem USE abfragt, kann man mit so etwas umgehen.
Herzlich,
Tom
Tom
- Wolfgang Ciriack
- 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: Problem mit INDEX ON beginn to ivs_benk
Oder fehlende Schreibberechtigung im Verzeichnis. Oder Virenscanner blockiert.
Viele Grüße
Wolfgang
Wolfgang
Re: Problem mit INDEX ON beginn to ivs_benk
Hallo Tom!
Danke für Deine schnelle Antwort! Du hast vielleicht recht mit der Annahme, dass die besagte Datei: ivs_benk.ntx woanders im Programm
gebraucht und dann nicht geschlossen wird. Frage: Soll ich hier einfach einen anderen Namen für die Index-Datei wählen, z.B. ivs_bonk.ntx?
Gruß Werner
Danke für Deine schnelle Antwort! Du hast vielleicht recht mit der Annahme, dass die besagte Datei: ivs_benk.ntx woanders im Programm
gebraucht und dann nicht geschlossen wird. Frage: Soll ich hier einfach einen anderen Namen für die Index-Datei wählen, z.B. ivs_bonk.ntx?
Gruß Werner
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9387
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 362 Mal
- Kontaktdaten:
Re: Problem mit INDEX ON beginn to ivs_benk
Hallo, Werner.
Du hast vermutlich SET EXCLUSIVE ON in Deinem PRG zu stehen, was bedeutet, dass eine Tabelle immer nur einmal geöffnet sein kann. Das ist eigentlich nur für Servicefunktionen nötig, etwa für PACK. Ansonsten kann man Tabellen immer im Shared-Modus öffnen, und dann geht das auch beliebig oft, ohne sie gleich wieder schließen zu müssen. Aber das Programm verhält sich dann auch anders - es erwartet, dass Du Datensätze lockst, bevor Du sie bearbeitest oder löschst. Und dass Du sie wieder unlockst, wenn Du damit fertig bist.
Das Problem ist nicht das Erzeugen der Indexdatei, wobei man darauf verzichten sollte, andauernd Indexdateien zu erzeugen - das reicht eigentlich einmalig, und dann öffnet man sie immer wieder mit den Tabellen. Die Indexe werden automatisch aktualisiert, wenn sich etwas an den Tabellen tut.
Kann es sein, dass Du da gerade ganz am Anfang stehst?
Du hast vermutlich SET EXCLUSIVE ON in Deinem PRG zu stehen, was bedeutet, dass eine Tabelle immer nur einmal geöffnet sein kann. Das ist eigentlich nur für Servicefunktionen nötig, etwa für PACK. Ansonsten kann man Tabellen immer im Shared-Modus öffnen, und dann geht das auch beliebig oft, ohne sie gleich wieder schließen zu müssen. Aber das Programm verhält sich dann auch anders - es erwartet, dass Du Datensätze lockst, bevor Du sie bearbeitest oder löschst. Und dass Du sie wieder unlockst, wenn Du damit fertig bist.
Das Problem ist nicht das Erzeugen der Indexdatei, wobei man darauf verzichten sollte, andauernd Indexdateien zu erzeugen - das reicht eigentlich einmalig, und dann öffnet man sie immer wieder mit den Tabellen. Die Indexe werden automatisch aktualisiert, wenn sich etwas an den Tabellen tut.
Kann es sein, dass Du da gerade ganz am Anfang stehst?
Herzlich,
Tom
Tom