Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Barbara am 24.10.07 - 10:28:47
-
Hallo zusammen,
meine Aufgabenstellung:
- user scannt Dokumente, legt sie auf ein definiertes Verzeichnis
- in einer NotesDB wurden Angaben zu den einzelnen Dokumenten gemacht (Mehrfachfelder in einem Dokument)
- per Knopfdruck werden einzelnen Notesdokumente erstellt, die umbenannten Dateien jeweils passend in die neu erstellten Dokumente als Attachment eingefügt.
Funktioniert dank Filesystem Class auch super. Jetzt bin ich bei der Fehlerabfrage. Sind keine Dateien im Verzeichnis abgelegt, soll eine Klartextmeldung kommen. mein script:
Function renamefile(strpath, ort As String)
Dim datum As notesdatetime
Dim fso As Variant
Dim folder As Variant
Dim newfile As Variant
Dim oldfile As Variant
Dim files() As String
Dim newname() As String
Dim ymd As String
Dim endung As String
Dim i As Integer
'Dateien im Ordner auslesen"
Set fso = CreateObject( "Scripting.FileSystemObject" )
If Not Isempty(fso) Then
Set folder=fso.getfolder(strpath)
Forall file In folder.Files
Redim Preserve files(i)
files(i) = file.Name
i= i+ 1
End Forall
'neuen Namen zusammensetzen
If Isarray(files) Then
Set datum= New notesdatetime (Today) 'Aktuelles Datum
ymd=Format(Year(datum.Dateonly),"0000")+Format(Month(datum.Dateonly),"00")+Format(Day(datum.Dateonly),"00")
For n=0 To Ubound(files)
endung=Strrightback(files(n),".")
Redim Preserve newname(n)
newname(n)= strpath + ort + ymd + Cstr(n+1)+ "." + endung
Next
Else
Msgbox "Es sind keine Dateien im Ordner!"
Exit Function
End If
Mein Problem: Isarray(files) ist immer true, daraus resultiert obige Fehlermeldung bei "For n=0 To Ubound(files)"
habe auch mit "Not isempty(files)" probiert, das funktioniert auch nicht.
Wie frage ich ab, ob es dieses array gibt?
Ich weiß, diese Frage gab es hier schon öfter, aber mit den Lösungsansätzen komme ich jetzt nicht weiter.
Hat jemand eine Idee?
Gruß
Barbara
-
Das ist Richtig, das Du ein True bekommst.
Aus der Hilfe:
Dim arrayFixed(1 To 5)
Dim arrayDynam()
Print IsArray(arrayFixed) ' Output: True
Print IsArray(arrayDynam) ' Output: True
Wenn Du auf UBound(files) > 0 fragst dann kommst Du weiter.
-
Hallo André,
auch das bringt mir die Fehlermeldung.
Ich werde jetzt die brutale Methode anwenden und die Datenbank ganz neu erstellen. Mal gucken was dann passiert.
Barbara
-
Das wird auch nichts bringen...
Ist zwar aus R4 Zeiten aber ich glaube da hat sich nichts geändert. :P
http://atnotes.de/index.php?topic=3167.0
Wenn ich falsch Liege korrigiert mich.
-
Richtig hat nichts gebracht.
"if not(files is nothing)" wird beim Speichern schon als Fehler im script erkannt => Type mismatch
Das kann es doch nicht sein, dass man bei so einer "Popelabfrage" 'ne neue Klasse braucht?
das zeigt mir der Debugger: siehe Anhang
Barbara
-
Mal so auf die Schnelle: wenn keine Dateien da sind, müsste dann nicht der Zähler i auf 0 stehen (wenn du den vorher irgendwannn initialisierst) ?
-
Da files schon als Array deklariert wurde, ist Isarray immer True. Nothing ist auf Arrays nicht anwendbar.
"Leer" ist files unter folgender Bedingung:
Ubound (files) = 0 And files (0) = "".
Bernhard
-
@Bernhard: Ubound (files) = 0 And files (0) = "" bringt diesselbe Fehlermeldung
Ich stehe wieder mal wie ein Ochs vor dem Berg. Ich muss jetzt erstmal meinen Kindern was kochen, da komme ich auf ganz andere Gedanken (hoffentlich) und probiere es heut mittag auf ein Neues (mit neuen Ideen ? ;))
Barbara
-
Hast Du #5 gelesen ?
-
Was ich geschrieben habe, war Blödsinn - das Array ist ja uninitialisiert, damit gibt es kein 0. Element.
Was Andre geschrieben hat, ist auf jeden Fall richtig und in diesem Fall wohl der gangbarste Weg.
Umständlicher (und hier unnötig) wäre
Dim bEmpty As Integer
bEmpty = True
Forall f In files
bEmpty = False
End Forall
bEmpty ist dann True, wenn files noch nicht belegt wurde.
Bernhard
-
@Bernhard,
das ist doch fast das Gleiche, wie wenn ich i=0 abfragen würde.
-
Genau das habe ich doch geschrieben, Klaus.
Bernhard
-
Das hatte ich ja schon in #5 vorgeschlagen, scheint aber nicht beachtet worden zu sein :'(
-
Ah - noch ein Bug von mir - das warst ja Du und nicht Andre ... Sorry.
Bernhard
-
Macht nix ;)
-
@Klaus: Entschuldige, dass ich nicht schon vor der Mittagspause auf Deine Antwort eingegangen bin. Ich habe es auf die Schnelle nicht hingekriegt.
Bernhard's "unnötiger" Weg war für mein Verständnis nötig.
Also
i =0 wenn keine Files im Ordner sind. Abfrage auf i funktioniert, wie von Dir und Bernhard auch erwartet.
Bin immer wieder froh, in diesem Forum gelandet zu sein. "da werden Sie geholfen" :)
Danke Euch Allen
Barbara