Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: 0xse am 05.08.05 - 09:16:45
-
Set doc = docs.GetFirstDocument()
Do While Not doc Is Nothing
Set doc2 = doc
If doc.HasItem("TimeExtract") Then
zeiten = doc.TimeExtract(0)
Beim Zuweisen dieses Feldes an zeiten tritt der Fehler (s.T.) auf. Woran liegt das? Zeiten hat den Datentyp String. TimeExtract ist ein Feld vom Typ Text.
Ich wüßte nicht was ich da sonst noch prüfen soll. Wenn der Fehler auftritt, haben alle Variablen laut Debugger, genau die Werte die sie haben sollen. Das ist skuril :|
-
evtl. könnte mehr code helfen.
gruss
umi
-
Immer die gleichen Anmerkungen :P Nein, könnte es nicht.
Das Document wurde ohne Fehler der Variable doc zugewiesen.
Der Fehler tritt in der Zeile auf:
zeiten = doc.TimeExtract(0)
Der Rest ist unwichtig. Was vorher in zeiten stand ist uninteressant. Doc wurde erfolgreich zugewiesen, im Debugger sieht man, dass es ein Document ist und auch entsprechende Daten enthällt. Es enthällt auch das Feld TimeExtract. Einmal laut Debugger und das andere mal ist aus dem Quelllcode weiter oben ersichtlich. Ansonsten wäre das Script sicher nicht bis zu der Zeile mit dem Fehler vorgedrungen.
Ich habe es alternativ mal mit doc.GetItemValue() probiert, hat aber den gleichen Fehler ausgeworfen. Deswegen versteh ich das ganze auch nicht.
-
schon mal ein Recompile versucht?
-
müsste zeiten nicht ein Variant sein ??
Text or text list (includes Names, Authors, and Readers item types) returns Array of strings
-
Nope, er greift ja auf das erste Element des Arrays zu, bekommt also den gewünschten Skalar. Ausserdem ist die Fehlermeldung eine, die rechts von der Zuweisung auftritt, nicht links. Wenn Variant hilft, was nicht auszuschliessen ist, dann hätte sich Notes hier in der Fehlermeldung vergriffen, was auch nicht auszuschliessen ist.
-
Hast Du es schon mit
zeiten = doc.GetItemValue("TimeExtract")(0)
versucht?
TimeExtract ist vielleicht ein Keyword und dann geht die Extended Syntax nicht.
Andreas
-
"Ich habe es alternativ mal mit doc.GetItemValue() probiert, hat aber den gleichen Fehler ausgeworfen. Deswegen versteh ich das ganze auch nicht."
In den restlichen 4500 Dokumenten davor klappt es ja auch, nur in dem nicht -.-
http://nopaste.php-q.net/151613
Ich glaube kaum das du damit mehr anfangen können wirst, außer das es dich vermutlich eher verwirrt ;)
-
Hier mal ein Screenie vom Debugger:
(http://www.neokortex.de/notes1.jpg)
-
Set notesItem = doc.GetFirstItem("TimeExtract")
Print "TimeExtract: " & notesItem.text
Könnte das klappen? Kann es grad nicht ausprobieren, Notes rattert wieder ^^
-
Also laut dem Screenshot ist das nie und nimmer ein Textfeld !
Type = 1
und dann gibt es noch EmbeddedObjects
Ein Textfeld hat den type 1280.
Du solltest Dir mal das Dokument genauer anschauen.
Andreas
-
Type 1 ist Richttext und damit dürfte der Fehler da liegen. RT kannst du so nicht ansprechen.
-
das ist aber definitiv ein text feld in der maske OO
mal angenommen es wäre keins, warum geht das dann bei allen anderen dokumenten?
-
Maske != Dokument
Evtl. hat da mal einer dran rumgespielt und in dem einen Dokument ist das Feld jetzt Richtext ?
-
das ist aber definitiv ein text feld in der maske OO
mal angenommen es wäre keins, warum geht das dann bei allen anderen dokumenten?
Was in der Maske steht ist irrelevant. In dem einen Dokument ist es ein Rich Text Feld. Weiss der Geier wie es da hereinkommt.
Du kannst ja mal einen Blick in die Dokumenteigenschaften werden.
Andreas
-
das ist aber definitiv ein text feld in der maske OO
mal angenommen es wäre keins, warum geht das dann bei allen anderen dokumenten?
Du kannst dich eben bei Notes im Gegensatz zu anderen, wie auch immer, Datenbank Systemen nicht darauf verlassen das in einem Feld wirklich das drin ist was auf der Verpackung (Maske) draufsteht.
Das ist so ähnlich wie bei manchen Seifen. Die Verpackung zeigt eine grüne Seife, drin ist aber eine weisse.
Du musst wenn so was vorkommen kann hergehen und erst einmal ein
Notesitem = doc.getfirstitem("TimeExtract") machen. Dann kannst du (und das funktioniert immer, auch bei Richtext) mit
Zeiten = Notesitem.text direkt auf den Textwert des Items zugreifen.
du könntest auch mit
if notesitem.type = 1280 then
Zeiten = doc.TimeExtract(0) arbeiten
Else
Fehlermeldung
End if
-
Mir ist schon klar, dass die Maske nur der Anzeige des Dokumentes dient. Aber die ganzen Dokumente wurden über ein LS erstellt mit dieser Maske. Also müsste doch dieser Datentyp dadrin sein.
Laut DB Log war niemand außer mir in der DB... Notes spricht mal wieder Sumpfantilopisch. Ich lasse einen Design Refresh über alle Dokumente laufen. Mal gucken ob das Problem danach immer noch besteht.
Der Datentyp von dem doc.TimeExtract(0) ist übrigens 8192 ^^
-
Immer die gleichen Anmerkungen :P Nein, könnte es nicht.
Du siehst also das immer die gleichen Anmerkungen durchaus einen Sinn haben können. In diesem Fall wäre das Ganze schon vor drei Stunden einer Lösung deutlich näher gekommen wenn du den Auszug aus deinem Debug mit gepostet hättest.
-
Der Datentyp von dem doc.TimeExtract(0) ist übrigens 8192 ^^
Das ist ein Fixed Array des Datentyps EMPTY?
-
Die Hilfe fand ich an dieser Stelle nicht eindeutig formuliert, deswegen habe ich mir nicht "angemaßt" diese Zahl zuzuordnen.
Nach einem Designrefresh und Einbau des NotesItem funktioniert es. Aber warum vorher nicht? Oo