Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: LordDestiny am 06.01.03 - 13:19:56
-
Hi,
ist es euch schon mal passiert, dass auf bestimmten Clients oder unter bestimmten Voraussetzungen ein ReplaceItemValue nicht funktioniert?
Ich nutze in mehreren DBs einen Agent für die Nummernvergabe, welcher bei Erfolg das jeweilige Nummernkonstrukt via ReplaceItemValue (da Feld in Konfiguration frei konfigurierbar) setzt ... bzw. setzen sollte.
Auf den Entwicklungs-Clients läuft alles wunderbar (R5.0.9 + R5.0.10, sowie R6). Auf manch anderen Clients taucht allerdings o.g. Phänomen auf.
Ich hoffe, ihr könnt mir helfen, da ich mir mittlerweile keinen Rat mehr weiss ???.
Gruss,
LD
-
eine sehr genaue Fehlerbeschreibung ;D
Schon mal hier gesucht?
http://www-1.ibm.com/support/search.wss?q=replaceitemvalue&tc=SSKTWP&rs=475&apar=include
-
Ich schau' mir mal den Link an ... danke :)
Merkwürdig ist nur, dass ich keine Fehlermeldung bekomme, sondern schlicht und ergreifend das Feld nicht gesetzt wird. Auch in der Feldliste wird der Inhalt noch als leer zurückgegeben.
-
und im Notes Log, was steht da?
Wenn nix, protokollier mal bitte, so daß Du Einträge ins Notes Log bekommst. Wie? Per Print oder Messagebox (jaaa, letztere geht auch im Backend LS)
-
Habe mir auch schon Messageboxen ausgeben lassen, bzw. ins Log schreiben lassen (Schrittmeldungen). Fehlermeldungen seitens des Logfiles habe ich aber nicht entnehmen können (bis auf die von mir eingetragenen Meldungen natürlich).
Anbei erstmal ein Auszug aus dem Sourcecode:
:
:
If Numtype = "3" Then
If doc.fdknumsearch(0) = "2" Then
Num = Getlfdnumber(doc, Idoc.fdestablishment(0))
Else
Num = GetNumber(doc, Idoc.fdestablishment(0))
End If
If num <> "" Then
buff = Getdetail(doc,1) + Num + Getdetail(doc,2)
' dbsearch auf Nummer
SearchFormula$ = "DocType ="""+idoc.DocType(0)+""" & fdbilno=""" + buff + """"
Set col = db.Search(SearchFormula$,Nothing,0)
' Wenn Nummer vorhanden, dann Fehler
If col.Count>0 Then
Goto nEnde
End If
Call Idoc.ReplaceItemValue(FieldToSet,buff)
Idoc.fdNoflag = "1"
Call Idoc.save(True, True)
Else
Goto nEnde
End If
End If
:
:
- idoc ist das Dokument, in dem die Nummer gesetzt werden soll.
- FieldToSet enthält den Feldnamen des zu setzenden Feldes.
- NumType und fdknumsearch sind nur für den Aufbau wichtig.
Setzte ich bei den Zeilen
Call Idoc.ReplaceItemValue(FieldToSet,buff)
Idoc.fdNoflag = "1"
Call Idoc.save(True, True)
jeweils Schrittmeldungen ein, werden diese ausgegeben (oder geloggt). Das Script läuft also ohne Fehler durch (kein 'On Error Resume Next').
Bin mittlerweile ziemlich ratlos ???
-
ist dein fieldtoset als string variable explizit deklariert ?
was ist die bestimmte Voraussetzung unter derer es nicht funktioniert?
cu
-
Ja, FieldToSet ist als String deklariert (Dim FieldToSet$). Der Fehler taucht nur bei vereinzelten Clients auf, kann mir aber keinen Reim daraus machen, was die Gründe dafür zu sein scheinen.
Zuerst dachte ich, es läge an der Client-Version 5.0.10, da diese ja ziemlich buggy war/ist. Allerdings ist er nun auch auf einem 5.0.11er Client aufgetreten.
Da ein alleiniger uidoc.Refresh nicht ausreichte, habe ich vorher ein uidoc.Reload eingetragen ... könnte ein evtl. deaktivierter autoreload schuld für das 'Nichtsetzen' des Feldes sein?
-
Hi,
bei solchen Dingen hat es sich bei uns bewährt das ganze über die Itemklasse abzuwickeln.
z. B.
Set item = New NotesItem( idoc, FieldToSet, buff )
-
Hi,
bei solchen Dingen hat es sich bei uns bewährt das ganze über die Itemklasse abzuwickeln.
z. B.
Set item = New NotesItem( idoc, FieldToSet, buff )
....man sollte dann aber nicht vergessen dem Item auch noch das summary zu verpassen, vielleicht ist genau das sein Problem
item.IsSummary = true
-
... item.IsSummary = True spielt nur für Ansichten und Ordner eine Rolle, damit das Feld dort angezeigt werden kann...
... das hört sich mysteriös an, ich hatte noch keinen vergleichbaren Fall, bei mir funktioniert der bisher einwandfrei - hast du schon im LDD eine Anfrage gestartet?...
ata