Habe wieder einen seltsamen Fehler:
An einer bestimmten Stelle fange ich seit längerer Zeit einen "unklaren Zustand" ab, protokolliere das und starte mein Programm neu.
Bei dem "unklaren Zustand" geht es darum, dass das Programm den OrdSetFocus( nI )auf eine Index-Nr. stellen soll welcher nicht vorhanden ist. OrdCount() ist also kleiner als der gewünschte Index ( nI ).
Jetzt erst ist mir aufgefallen, das bei dem "unklaren Zustand" den ich abfange immer eine ADS Fehlermeldung mitprotokolliert wird welche ich bisher übersehen habe:
- oADS:GetLastError() Nr: 5004
oADS:GetMessage: Error 5004: Either ACE could not find the specified file, or you do not have sufficient rights to access the file.
Zusammengefasst sieht der Ablauf wie folgt aus:
- 1) prüfen ob der ALIAS schon existiert.
2) existiert der ALIAS wird DbUseArea() übersprungen, sonst wird die DBF in einer leeren WorkArea geöffnet.
3) Fehlerprüfung unter anderem mit NetErr().
4) prüfen ob alle zur DBF gehörigen Index geöffnet sind.
5) sind alle Index geöffnet wird OrdListAdd() übersprungen, sonst werden alle Index mit OrdListAdd() geöffnet.
6) Fehlerprüfung unter anderem mit NetErr().
7) prüfen ob der gewünschte Index im möglichen Bereich liegt( >0 .and. <= OrdCount() ). Hier abgefangen.
8 ) Schlussendlich wird mit OrdSetFocus() der gewünschte führende Index gewählt.
Somit würde sich auch der "unklare Fehler" erklären: die DB und alle Index müssten geladen worden sein - das Ist aber nicht der Fall - es ist keint Fehler aufgetreten. Der Alias existiert jedoch nicht und somit auch nicht die notwendigen Indexes.
Hat jemand so etwas auch schon beobachtet - oder fangt Ihr ADS-Fehler mit ADS-Funktionen ab und nicht nur mit Standard Xbase++-Möglichkeiten ?