Windows 7

15/09/2009 - 09:06 von Kurt Bertel | Report spam
Liebe NG,

habe folgendes seltsame Problem. Eine Updateroutine fügt in Tabellen neue
Felder ein. Folgender Code wird verwendet. Diese Befehle gibt es für mehrere
Tabellen.

.
USE artikel IN 0 EXCLUSIVE
ALTER TABLE artikel ADD COLUMN produzent C(10)


Manchmal erhalte ich in der ALTER Zeile den Fehler 1705 (You have attempted
to write to a file that is write-protected or open exclusively by another.)
Die Tabelle hat aber niemand anderer offen. Interessant ist dass der Befehl
aber durchgeführt wurde das Feld produzent wurde angelegt. Wenn ich das
Programm nochmals über die selben Tabellen drüber lasse funktioniert es,
oder ich erhalte bei einer anderen ALTER Zeile die Fehlermeldung 1705. Bei
einem anderen Betriebssystem habe ich diese Fehlermeldung noch nie erhalten.

Woran kann es liegen. Verwende:
VFP 9 SP2 (09.00.0000.7423),
Windows 7 Ultimate 64 Bit Built 7100,
die Daten liegen auf der lokalen HD.

LG Kurt
 

Lesen sie die antworten

#1 Kurt Bertel
15/09/2009 - 11:45 | Warnen spam
Liebe NG,

habe folgendes Programm zum Testen geschrieben.
-
LOCAL lnJ, lcX, lcY

SET SAFETY OFF
CREATE TABLE testalter (a0 C(20))
SET SAFETY ON
SELECT testalter
APPEND BLANK
REPLACE a0 WITH "1233"
APPEND BLANK
REPLACE a0 WITH "1234"
APPEND BLANK
REPLACE a0 WITH "1235"
APPEND BLANK
REPLACE a0 WITH "1236"
APPEND BLANK
REPLACE a0 WITH "1237"
USE
FOR lnJ=1 TO 100
USE testalter IN 0 SHARE
USE IN testalter
USE testalter IN 0 EXCLUSIVE
lcY="a"+ALLTRIM(STR(lnJ))
SELECT testalter
IF TYPE(lcY)="U"
lcX="ALTER TABLE testalter ADD COLUMN a"+ALLTRIM(STR(lnJ))+" C(20)"
&lcX
REPLACE ALL &lcY WITH STR(lnJ)+lcY
ENDIF
USE IN testalter
ENDFOR
-
Wenn ich dieses im VFP mit DO ausführe funktioniert es. Erstelle ich daraus
eine exe. Erhalte ich einen Fehler. Der Wert der Variablen lnJ ist meistens
ein anderer.
Nach làngerem testen habe ich herausgefunden, dass ich den Fehler nur
erhalte, wenn ich die exe auf den Desktop kopiere. Kopiere ich die exe in
einen anderen Ordner (C.\test oder C:\users\kb\test) funktioniert alles.
Kann das jemand nachvollziehen.

LG Kurt

Ähnliche fragen