Domino 9 und frühere Versionen > ND7: Entwicklung

Feld über LS bearbeiten und Speicherstatus

(1/5) > >>

Jörg:
Hallo,

ich habe in meinen Template nun eine neue Funktion hinzugefügt,das Feld möchte
ich nun ein Script in allen meinen Dokumenten setzen.

Um das Feld handelt es sich um ein Optionfeld, das vorher nicht
im Dokument vorhanden war.

Hier der Code:


--- Code: ---Sub Initialize
Dim wert As String 
Dim s As New NotesSession
Dim db As NotesDatabase
Dim tmpdoc As NotesDocument

Set db = s.CurrentDatabase

Dim strTextArray(0) As String
strTextArray(0) = "0"
Dim item As NotesItem

Dim v As NotesView
Set v = db.GetView("German\Unread")
Dim doc As NotesDocument
Set doc = v.GetLastDocument()
Do While Not (doc Is Nothing)
Set item =  doc.GetFirstItem( "Doc_freigabe" )
item.IsAuthors = True
Call doc.ReplaceItemValue("Doc_Freigabe", strTextArray)
item.IsAuthors = False
Call doc.Save(True,True)
Set doc = v.GetLastDocument()
Loop
End Sub

--- Ende Code ---

In einer Ansicht schaue ich nun nach ob das Feld geändert wurde, aber dies
ist nicht der fall. Ich frage mich nun warum??


Ein weiters Problem ist....  :
Da ich in der Datenbank nun aber ca. 2.8gb an Dokumenten habe ,
suche ich nach eine Möglichkeit, das bei der nächsten Replikation nur dieses
Feld geändert wird und nicht gleich die komplette DB als neu angesehen wird.


Gruß Jörg

WernerMo:
Hallo


--- Zitat von: Jörg am 19.11.07 - 13:02:52 ---Da ich in der Datenbank nun aber ca. 2.8gb an Dokumenten habe ,
suche ich nach eine Möglichkeit, das bei der nächsten Replikation nur dieses
Feld geändert wird und nicht gleich die komplette DB als neu angesehen wird.

--- Ende Zitat ---

das macht doch die Replikation automatisch so, da sich nur das Feld (pro betroffenem Dokument) ändert, wird auch nur die Feldänderung repliziert. Also ist nur die Frage wie viele Dokument mit wieviel Feldinhalt betroffen sind.

Gruß Werner

klaussal:

--- Code: ---Set item =  doc.GetFirstItem( "Doc_freigabe" )
item.IsAuthors = True
Call doc.ReplaceItemValue("Doc_Freigabe", strTextArray)
item.IsAuthors = False
Call doc.Save(True,True)
Set doc = v.GetLastDocument()

--- Ende Code ---

Heisst das Feld jetzt Doc_freigabe oder Doc_Freigabe ?
Warum einmal IsAuthors = true und dann IsAuthors = False ?
Warum 2 x GetLastDocument ?

Jörg:
@Werner

nun ja dann bin ja mal beruhigt, da es so ca. 1500 Dokumente sind...  :)

@Klauss

ein Problem vorher war , das ich das Feld nicht bearbeiten konnte da bei
Author des items false zu lesen war. DAher dachte ich mir so dann setzen wir
die Rechte und nach setzen ich sie wieder so wie es war.

Wenn ich im Script das letzte GetLastDocument entferne , dann
läuft das ganze in einer Endlos-Schleife.
Den Code-Teil hatte ich hier im Forum gefunden und dort wurde
dies als Lösung kundgetan.

Auch mit diesen Code bekomme ich nicht die gewünschte
Änderungen in den Dokumenten. D.h. meine Abfrage beliebt
leer.


--- Code: ---Sub Initialize
Dim wert As String 
Dim s As New NotesSession
Dim db As NotesDatabase
Dim tmpdoc As NotesDocument

Set db = s.CurrentDatabase

Dim strTextArray(0) As String
strTextArray(0) = "0"
Dim item As NotesItem

Dim v As NotesView
Set v = db.GetView("German\Unread")
Dim doc As NotesDocument

Do While Not (doc Is Nothing)
Set item =  doc.GetFirstItem( "Doc_Freigabe" )
item.IsAuthors = True
Call doc.ReplaceItemValue("Doc_Freigabe", strTextArray)
Call doc.Save(True,True)
Set doc = v.GetLastDocument()
Loop

End Sub
--- Ende Code ---

GRuß Jörg

m3:
Wie wärs mit GetNextDocument anstelle von GetLastDocument ? ;)

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln