Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Axel am 08.11.04 - 16:20:58

Titel: Fehler bei SetFileAttr
Beitrag von: Axel am 08.11.04 - 16:20:58
Hi,

ich hab hier ein recht seltsames Phänomen, was jeglicher Logik entbehrt.  :-\ :-[


Ich habe einen Agenten, der Mails exportiert. D.h. er speichert die Mailinformationen als Worddokument und löst die Dateianhänge ins gleiche Verzeichnis. Die Dateien werden zusätzlich noch schreibgeschützt.

Codeauszug:

Code
...
	'Lösen der Anhänge ins gewählte Verzeichnis und einfügen eines Links in Dokument
	intTitel = 0
	If ( rtitem.Type = RICHTEXT ) Then
		If xHasDocAttachments(doc) Then
			Forall o In rtitem.EmbeddedObjects
				If ( o.Type = EMBED_ATTACHMENT ) Then
					If intTitel = 0 Then
						Call clsWord.Newline(2)
						Call clsWord.Insert("Es sind folgende Dateianhänge vorhanden:")
						Call clsWord.Newline(1)
						intTitel = 1
					End If  'If intTitel = 0 Then
					Call clsWord.InsertLink(Cstr(cFile.ExtractFilePath(cFile.Filename)) & o.Name, o.Name)
					Call clsWord.Newline(1)
					'Dateianhang lösen
					Call o.ExtractFile (Cstr(cFile.ExtractFilePath(cFile.Filename)) & o.Name)
					Setfileattr Cstr(cFile.ExtractFilePath(cFile.Filename)) & o.Name , ATTR_READONLY
				End If
			End Forall			
		End If  'If xHasDocAttachments(doc) Then
	End If  'If ( rtitem.Type = RICHTEXT ) Then
	
	Call clsWord.SaveDoc(Cstr(cFile.Filename))
	Setfileattr Cstr(cFile.Filename), ATTR_READONLY
	Call clsWord.CloseWord
	

Wenn ich die Dateien lokal oder auf einem Netware 6 - Server speichert funktioniert das Ganze wunderbar. Sowie ich die Dateien auf einem Netware 5 - Server ablege, krieg ich die Fehlermeldung "File not found". Obwohl die Datei existiert.

Call clsWord.SaveDoc(Cstr(cFile.Filename))
Setfileattr Cstr(cFile.Filename), ATTR_READONLY  <- Fehlermeldung
Call clsWord.CloseWord

Die Netware - Rechte habe ich geprüft und an langen Dateinamen liegt es auch nicht. Das Schreibschützen der Anhänge funktioniert seltsamerweise.

Hat jemand eine Idee? Ich bin ratlos.


Axel

Titel: Re: Fehler bei SetFileAttr
Beitrag von: Semeaphoros am 08.11.04 - 16:24:44
Um, Du setzest das Attribut und schliessest erst nachträglich Word, da würde ich als Server auch sauer reagieren, denn Word hat da möglicherweise noch einen Lock drauf. Also die beiden letzten Zeilen vertauschen.
Titel: Re: Fehler bei SetFileAttr
Beitrag von: Axel am 08.11.04 - 16:32:01
Hi,

das hatte ich bereits versucht. Das Resultat war das gleiche -> File not found. Sorry, den Hinweis hatte ich verschluckt.

Bei Netware 6 funktioniert der Code doch so wie er ist. Was ist bei Netware 5 anders als bei 6?


Axel


Titel: Re: Fehler bei SetFileAttr
Beitrag von: Semeaphoros am 08.11.04 - 16:39:51
Möglicherweise ein Timing-Problem. Veruch mal folgendes



Call clsWord.CloseWord
For i=0 to 10000
  ' ganz tief durchatmen ....
Next
Setfileattr Cstr(cFile.Filename), ATTR_READONLY

Was da am Server anders ist, kann ich auch nicht sagen, Netware ist nicht gerade mein Liebligsthema ;)
Titel: Re: Fehler bei SetFileAttr
Beitrag von: Axel am 08.11.04 - 18:50:30
Hi,

werde ich morgen früh mal testen.


Axel
Titel: Re: Fehler bei SetFileAttr
Beitrag von: Axel am 09.11.04 - 09:44:41
Möglicherweise ein Timing-Problem. Veruch mal folgendes



Call clsWord.CloseWord
For i=0 to 10000
  ' ganz tief durchatmen ....
Next
Setfileattr Cstr(cFile.Filename), ATTR_READONLY

Was da am Server anders ist, kann ich auch nicht sagen, Netware ist nicht gerade mein Liebligsthema ;)


Bringt leider auch nicht den gewünschten Erfolg. Hab die Zählschleife sogar noch verlängert. Es scheint kein Timingproblem zu sein.
Trotzdem vielen Dank für deine Bemühungen.


Axel

Titel: Re: Fehler bei SetFileAttr
Beitrag von: Semeaphoros am 09.11.04 - 09:52:38
Dann ist das definitiv in der Kategorie rätselhaft einzureihen. Hab auch keine Idee mehr :(
Titel: Re: Fehler bei SetFileAttr
Beitrag von: Axel am 09.11.04 - 11:13:41
Hi,

ich hab die Lösung. Es ist scheinbar doch ein Timingproblem. Allerdings lässt sich das nicht über eine Schleife regeln, da eine so lange Zeit nicht realisierbar und für den User auch eine Zumutung ist.

Vor dem Setzen der Attributes hatte ich eine Messagebox eingebaut und hab dann ca. 10 Minuten gewartet. Dann hat's funktioniert.

Nach langen Tests ist nun folgendes herausgekommen.

1. Das Script habe ich an der entsprechenden Stelle wie folgt angepasst:


...
   
   Call clsWord.SaveDoc(Cstr(cFile.Filename))
   Call clsWord.CloseWord   
   Delete clsWord
   
   Setfileattr Cstr(cFile.Filename), ATTR_READONLY
   
   Messagebox "Das Mail wurde erfolgreich exportiert.", 64, "Mail-Export"
...


2. Im Novell-Client habe ich das Dateicaching ausgeschaltet.

Mit diesen Anpassungen geht's auch unter Netware 5.


Axel

Titel: Re: Fehler bei SetFileAttr
Beitrag von: Semeaphoros am 09.11.04 - 11:39:52
Ah, das macht Sinn, danke für die Rückmeldung.