Und zwar habe ich ein Programm geschrieben das folgendes macht:
Es erstellt eine Datenbank nach diesem Code:
Code: Alles auswählen
PROCEDURE proc_create_dbf(cFileName,aFelder)
LOCAL i
LOCAL memlen
LOCAL memdec
LOCAL memdbname
LOCAL memdbname_2
LOCAL memdbname_3
LOCAL memdbname_4
CREATE Struct
i := 1
DO WHILE i <= len (aFelder)
APPEND BLANK
REPLACE FIELD_NAME WITH aFelder[i,1] , ;
FIELD_TYPE WITH aFelder[i,2] , ;
FIELD_LEN WITH aFelder[i,3] , ;
FIELD_DEC WITH aFelder[i,4]
i := i + 1
ENDDO
CLOSE Struct
CREATE &cFileName FROM Struct
ERASE Struct.dbf
USE &cFileName
memdbname := func_memdbname(cFileName)
memdbname_2 := memdbname + "2"
memdbname_3 := memdbname + "3"
memdbname_4 := memdbname + "4"
INDEX ON dtos(datum)+alltrim(zeit) TO &memdbname
INDEX ON UPPER(labparam) TO &memdbname_2
INDEX ON dtos(datum)+alltrim(zeit)+UPPER(labparam) TO &memdbname_3
INDEX ON UPPER(labparam)+dtos(datum)+alltrim(zeit) TO &memdbname_4
*Select(memdbname)
&memdbname->(DbCloseArea())
RETURN
FUNCTION func_memdbname(cFileName)
LOCAL memdbname
LOCAL i
LOCAL memanzahl
cFileName := func_pfade_vorne_weg(cFileName)
i := 1
DO WHILE i <= len (cFileName)
if i + 3 <= len(cFileName)
if (cFileName[i] + cFileName[i+1] + cFileName[i+2] + cFileName[i+3]) == ".dbf"
memanzahl := i
endif
endif
i := i + 1
ENDDO
memdbname := substr(cFileName,1,memanzahl-1)
RETURN memdbname
FUNCTION func_pfade_vorne_weg(cFileName)
LOCAL i
LOCAL memanzahl
i := 1
DO WHILE i <= len (cFileName)
if cFilename[i] == "\"
memanzahl := i
endif
i := i +1
ENDDO
cFileName := substr(cFileName,memanzahl+1)
RETURN cFileName
Code: Alles auswählen
USE oberbegr NEW SHARED INDEX oberbeg1.ntx, oberbeg2.ntx
USE parazuor NEW SHARED INDEX parazuo1.ntx, parazuo2.ntx
USE reihendb NEW SHARED INDEX reihend1.ntx,reihend2.ntx,reihend3.ntx
USE labpara NEW SHARED INDEX labpara1,labpara2,labpara3,labpara4
USE schemata NEW SHARED INDEX schema1,schema2
USE einstell NEW SHARED INDEX einstell
USE reihenob NEW SHARED INDEX reiheno1,reiheno2,reiheno3
Dann rufe ich die Procedure ein zweites mal auf, aber noch bevor er überhaupt damit anfängt die neue Datenbank zu erstellen benötigt er die anderen Datenbanken und genau dann kommt dieser Fehler:
(fehler1.png)
Ich habe überprüft, welche Datenbank Schuld ist, und zwar ist das die "reihenob".
Wenn ich msgbox(var2char(Select("reihenob"))) ausgeben lasse bekomme ich 0 zurück.
Demnach müsste die Datenbank ja geschlossen sein oder nicht?
Wenn ich jetzt aber an der Stelle, wo die Fehlermeldung entstanden ist (proc_db_abruf_excel_export(1655)) noch einmal
Code: Alles auswählen
USE reihenob NEW SHARED INDEX reiheno1,reiheno2,reiheno3
kommt "File cannot be opened"(fehler2.png). Also dachte ich mir ja gut ist vielleicht doch noch nicht zu.
Deshalb habe ich vor das
Code: Alles auswählen
USE reihenob NEW SHARED INDEX reiheno1,reiheno2,reiheno3
Code: Alles auswählen
CLOSE reihenob
(fehler3.png)
Kann mir jemand helfen?
Ich verzweifle