Seite 2 von 2
Re: Error NTX Index öffnen OrdListAdd Fehler 8999
Verfasst: Fr, 17. Okt 2014 19:36
von Bernd Reinhardt
Hallo.
So wie es aktuell aussieht ist bei mir die Aktivitätskontrolle von Kaspersky das Problem.
Der normale Virenscanner, Firewall, Webscan usw. kann aktiv sein.
mfg
Bernd Reinhardt
Re: Error NTX Index öffnen OrdListAdd Fehler 8999
Verfasst: Do, 15. Jan 2015 7:39
von Koverhage
ich habe jetzt wieder mal das Problem das sich
eine Index Datei nicht erstellen lässt, weil der Virenscanner dazwischen funkt.
Was kann ich tun (außer Zertifizierung) um das "Timimg" Problem zu umgehen ?
Code:
Code: Alles auswählen
use (my_ziel) alias kdh exclusive new
clindex(my_ziel, my_ind1, 'kdnr')
procedure clindex
parameters datei, ntx, schluessel, lDeleKondition, cBedingung
DEFAULT lDeleKondition to NO // Auch gel”schte S„tze im Index
DEFAULT cBedingung to " "
if !lDeleKondition
if empty(cBedingung)
index on &schluessel to &ntx
else
index on &schluessel to &ntx for &cBedingung
endif
else
if empty(cBedingung)
index on &schluessel to &ntx for !deleted()
else
index on &schluessel to &ntx for !deleted() .and. &cBedingung
endif
endif
return
Fehlermeldung:
Xbase++ Version : Xbase++ (R) Version 1.90.355
Betriebssystem : Windows Vista 06.01 Build 07601 Service Pack 1
------------------------------------------------------------------------------
oError:args :
-> VALTYPE: C VALUE: S:\HKABR\DATA\HV210468\IHOME\kdihome.ntx
oError:canDefault : N
oError:canRetry : J
oError:canSubstitute: N
oError:cargo : NIL
oError:description : Datenbank-Alias existiert nicht/ist ungltig
oError:filename :
oError:genCode : 66
oError:operation : OrdListAdd
oError:osCode : 0
oError:severity : 2
oError:subCode : 8021
oError:subSystem : BASE
oError:thread : 1
oError:tries : 1
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von HV_IMP(1865)
Aufgerufen von LE253(490)
Aufgerufen von (B)CREATEMENUSYSTEM(1433)
Aufgerufen von MAIN(533)
Re: Error NTX Index öffnen OrdListAdd Fehler 8999
Verfasst: Do, 15. Jan 2015 7:45
von brandelh
Nichts, außer die DBF, DBT, NTX und CDX von der Online-Überwachung (heuristik) und am Besten auch aus der normalen Suche auszuschließen.
Re: Error NTX Index öffnen OrdListAdd Fehler 8999
Verfasst: Do, 15. Jan 2015 8:31
von Koverhage
Das habe ich, kann aber sein das auf dem Server auch ein Antiviren Programm aktiv ist..
Ich habe wenig Einfluss auf den Virenscanner bei den Kunden
Re: Error NTX Index öffnen OrdListAdd Fehler 8999
Verfasst: Do, 15. Jan 2015 9:08
von brandelh
Der Sinn eines Antiviren Programmes ist es, dass Anwendungsprogramme es nicht ändern können, somit hast du vom Programm aus keine Chance ein falsch eingestelltes Antiviren Programm zu umgehen
Re: Error NTX Index öffnen OrdListAdd Fehler 8999
Verfasst: Do, 15. Jan 2015 10:15
von Koverhage
Ich möchte das Antiren Programm nicht umgehen, sondern dem
INDEX ON
mehr Zeit geben bzw. den Fehler abzufangen und z.B. 5 mal probieren lassen.
Re: Error NTX Index öffnen OrdListAdd Fehler 8999
Verfasst: Do, 15. Jan 2015 11:16
von AUGE_OHR
Koverhage hat geschrieben:Code: Alles auswählen
use (my_ziel) alias kdh exclusive new
clindex(my_ziel, my_ind1, 'kdnr')
oError:description : Datenbank-Alias existiert nicht/ist ungltig
Aufgerufen von HV_IMP(1865)
da du nach dem USE keine NETERR() Abfrage hast
kannst du nicht sicher sein das die DBF geöffnet wurde und du einen Index erstellen kannst.
Re: Error NTX Index öffnen OrdListAdd Fehler 8999
Verfasst: Do, 15. Jan 2015 11:46
von brandelh
OK neben dem erwähnten
NETERR(), das unbedingt abgefragt werden
MUSS !
Kannst du entweder die globale Fehlerbehandlung um den obenen genannten Fehler ergänzen und es mehrfach versuchen oder eine lokale Fehlerbehandlung einführen:
Siehe dazu das 1. Beispiel von
ErrorBlock() - Codeblock definieren, der bei einem Laufzeitfehler ausgeführt wird
oder das zweite von
BEGIN SEQUENCE - Kontrollstruktur für BREAK oder Break() einleiten
Ich nutze z.B. diese Funktion BEVOR ich die geünschte Datei öffne bzw. das Fenster anzeige:
Code: Alles auswählen
*-----------------------------------------------------------------------------
Function IndexOK(cArt) // Funktion liefert immer True, wenn die Indexdateien
// entweder vorhanden sind oder erzeugt werden k”nnen.
// Ob Indexdateien fehlerfrei sind, wird nicht geprft.
local lFehler := .f.
DEFAULT cArt to "MAIN" // alle Hautindexe und Dateien prfen
cArt := upper(cArt)
do case
case cArt = "MAIN"
if ! file(DatenVerzeichnis()+"XYZ.DBF" )
ErrBox({"Die Datei XYZ.DBF im Verzeichnis",;
DatenVerzeichnis(),;
"wurde nach dem Programmstart gel”scht.",;
"Dieser Fehler muá beseitigt werden um",;
"weiterarbeiten zu k”nnen."} )
lFehler := .t.
else
if ! file(DatenVerzeichnis()+"XYZ1") .or. ;
! file(DatenVerzeichnis()+"XYZ2")
use (DatenVerzeichnis()+"XYZ.DBF") EXCLUSIVE NEW alias INDEXOKMAIN
if netErr()
ErrBox( NETZFEHLEREXCL, "Fehler beim ”ffnen: XYZ.DBF")
lFehler := .t.
else
WaitBox( "Index auf XYZ.DBF erstellen ...",;
{|| INDEXOKMAIN->(DbCreateIndex( (DatenVerzeichnis()+"XYZ.NTX") , ;
"XYZ" , ;
{|| field->XYZ } ) ) } )
* INDEX ON field->XYZ1 TO (DatenVerzeichnis()+"XYZ1")
* INDEX ON field->XYZ2 TO (DatenVerzeichnis()+"XYZ2")
close INDEXOKMAIN // schlieáen nicht vergessen !
endif
endif
endif
otherwise
ErrBox( {"IndexOK wurde eine falsche Art bergeben.!,",;
"Diesen Programmfehler bitte melden !",;
"cArt="+cArt } )
lFehler := .t.
endcase
return ! lFehler
Nach der Funktion ist entweder der Index vorhanden oder sie gibt .f. zurück, dann bleibt bei mir das Fenster zu.
Re: Error NTX Index öffnen OrdListAdd Fehler 8999
Verfasst: Do, 15. Jan 2015 11:46
von brandelh
Ach JA, man MUSS (oder SOLLTE ?) die DBF exclusive öffnen, bevor man indiziert !
Re: Error NTX Index öffnen OrdListAdd Fehler 8999
Verfasst: Do, 15. Jan 2015 13:53
von Koverhage
Echt ?
was mache ich hier ?
use (my_ziel) alias kdh exclusive new
Re: Error NTX Index öffnen OrdListAdd Fehler 8999
Verfasst: Do, 15. Jan 2015 14:19
von Koverhage
Hubert,
* INDEX ON field->XYZ1 TO (DatenVerzeichnis()+"XYZ1")
es wird doch in Deinem Code keine Index Datei erstellt, denn wenn Index on fehlschlägt verabschiedet sich die Anwendung mit einer Error.log, z.B.
die von mir zitierte.
Ich kann das mit begin sequence / end sequence abfangen, dann bekomme ich keine Log Datei, aber sonst nützt mir das nicht viel.
Re: Error NTX Index öffnen OrdListAdd Fehler 8999
Verfasst: Do, 15. Jan 2015 14:41
von brandelh
OK, ich hatte dein EXCLUSIVE am Ende übersehen ...
aber natürlich generiert meine Funktion einen Index, hier:
Code: Alles auswählen
WaitBox( "Index auf XYZ.DBF erstellen ...", {|| INDEXOKMAIN->(DbCreateIndex( (DatenVerzeichnis()+"XYZ.NTX"), "XYZ" , {|| field->XYZ } ) ) } )
WaitBox() zeigt eine Infobox an, bis dbCreateIndex() fertig ist ... aber ich habe ja auch kein Problem mit dem Virenscanner
das Abfangen mit einer Fehlerbehandlung könnte z.B. nach jedem Fehler 1 Sekunden warten und das insgesamt 5 mal, sodass dein Anwendungsprogramm OHNE Fehlermeldung 5 Versuche machen würde und erst danach z.B. eine MsgBox() vor QUIT anzeigt (falls ohne Daten nichts anzufangen ist).
Du hattest doch gefragt was du probieren kannst ... hoffen dass einer der 5 Versuche vom Virenscanner nicht erkannt wird
Re: Error NTX Index öffnen OrdListAdd Fehler 8999
Verfasst: Do, 15. Jan 2015 22:00
von AUGE_OHR
Koverhage hat geschrieben:
du versuchst zwar die DBF EXCLUSIVE zu öffnen ... aber es könnte auch eine "Verzögerung" dabei geben.
solange du nicht mit
NETERR() geprüft hast darfst du nicht mit dem INDEX ON anfangen weil nicht sicher ist das die DBF ( Alias ) überhaupt aktive ist.
p.s. es gibt einen Registry "Hotfix" wenn eine DBF "langsam" öffnet
http://support.microsoft.com/kb/150384/de
Re: Error NTX Index öffnen OrdListAdd Fehler 8999
Verfasst: Fr, 16. Jan 2015 7:22
von Koverhage
Das gilt doch nur für sehr alte Systeme
Re: Error NTX Index öffnen OrdListAdd Fehler 8999
Verfasst: Fr, 16. Jan 2015 8:40
von brandelh
Ein USE Fehler => NETERR() kann bei jedem System auftreten, wenn die Datei von einem anderen Programm geöffnet ist.
Der Name nennt zwar die Hauptursache (gesharte Nutzung im Netzwerk) aber auch das gleiche Programm auf dem gleichen Rechner muss das abfangen.
Das andere Programm kann auch ein Virenscanner sein