Problem mit INDEX ON beginn to ivs_benk

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

Problem mit INDEX ON beginn to ivs_benk

Beitrag von Werner »

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
Dateianhänge
FM_RGB.JPG
FM_RGB.JPG (45.61 KiB) 1350 mal betrachtet
XPPERROR.LOG
(12.57 KiB) 19-mal heruntergeladen
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: Problem mit INDEX ON beginn to ivs_benk

Beitrag von Tom »

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.
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: Problem mit INDEX ON beginn to ivs_benk

Beitrag von Wolfgang Ciriack »

Oder fehlende Schreibberechtigung im Verzeichnis. Oder Virenscanner blockiert.
Viele Grüße
Wolfgang
Werner
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 120
Registriert: Sa, 18. Mär 2006 16:08

Re: Problem mit INDEX ON beginn to ivs_benk

Beitrag von Werner »

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
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: Problem mit INDEX ON beginn to ivs_benk

Beitrag von Tom »

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?
Herzlich,
Tom
Antworten