Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: iworks am 13.10.08 - 12:47:28
-
Hi zusammen,
beim beiliegenden LS Code speichert das Dokument nicht nach dem Öffnen, einer eine Idee warum nicht?
Ziel ist es einige Docs in einer View zu markieren und per Agent zu Öffnen, Speichern und wieder schliessen. Momentan versuche ich zunächst nur zu speichern, aber wie erwähnt das klappt nicht ganz, statt dessen bleiben alle Docs geöffnet.
Hier der LS dazu:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim item As NotesItem
Dim projektbez As String
Set db = session.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument
zaehler=1
While Not ( doc Is Nothing )
Set item=doc.GetFirstItem( "Projektbez" )
projektbez=item.Text
If projektbez="" Then
doc.ID = doc.UniversalID
Else
doc.ID = doc.UniversalID
End If
Call doc.Save ( True, False )
If doc.Save( False, False ) Then
Messagebox "Document " & doc.UniversalID & _
" successfully saved"
Else
Messagebox "Document " & doc.UniversalID & _
" was not saved"
End If
If zaehler=1 Then
Print zaehler & " Dokument bearbeitet"
Else
Print zaehler & " Dokumente bearbeitet"
End If
Set doc = dc.GetNextDocument(doc)
zaehler=zaehler+1
Wend
End Sub
-
aber wie erwähnt das klappt nicht ganz,
.... und was heißt das jetzt ?
-
Bitte nimm mir das nicht übel, aber weißt Du eigentlich, was Du da tust ? Ich würde ganz dringend eine Schulung empfehlen oder zumindest den verstärkten Einsatz der Designer-Hilfe.
In dem Code aus dem anderen Thread waren schon einige offensichtliche Fehler drin und bei diesem Code gibt es eine klar Abweichung zwischen deiner Beschreibung der Funktionalität und dem, was der Code tatsächlich tut.
Wie gesagt, das ist nicht böse gemeint. Ich habe nur den Eindruck, daß Du da nicht strukturiert genug herangehst und Dir wild Code zusammenstrickst.
-
Warum speicherst Du 2x hintereinander?
-
Um meinen Beitrag ein wenig deutlicher zu machen, mal einige Zeilen aus deinem Code kommentiert :
...
Set item=doc.GetFirstItem( "Projektbez" )
projektbez=item.Text
If projektbez="" Then
doc.ID = doc.UniversalID
Else
doc.ID = doc.UniversalID
End If
Wozu die If-Schleife ? Du setzt das Feld ja sowieso.
Call doc.Save ( True, False )
If doc.Save( False, False ) Then
...
Das hat Martin schon angemerkt. Du speicherst so gleich zweimal.
Momentan schießt Dir der Code lediglich die UniversalID in ein Feld. Das bekommt man in Formelsprache auch mit einem Einzeiler hin.
-
Speichern ist nicht dasselbe wie ein Dokument schliessen.
Und woran erkennst du, dass die Dokumente nicht gespeichert wurden?
An der Messagebox, die aufploppt?
Grüsse
Dau-in
-
danke für die schnellen antworten.
also die schleife ist just for fun, die 2x speichern aktion hab ich übersehen, hatte eig. ganz unten den call.save, später da es nich geklappt hat weiter oben mit einer Abfrage. Ist alles soweit nicht schlimm...
Die Anmerkung zu Help.nsf ist ok, das mach ich auch....gehöre nich zu denen die einfach Beiträge erstellen, aber irgendwann hatte ich den Code fertig und da das Abspeichern nicht tut, war es doch an der Zeit euch zu fragen. Wegen Schulung, naja ich versuche momentan von der Formel Sprache weg zu kommen, denn die gibt die Developer Schulung her, LS habe ich in der 7 Schulung jedoch nicht mitbekommen.
Ihr sagt der Code speichert richtig? Doch dann müsste ja das ID Feld die UNID bekommen und das ist nicht der Fall. Oder habe ich euch hier falsch verstanden?
Gruß.
-
was steht denn in dem Item ID drin?
Und wie ermittelst du das?
-
naja im Felf ID steht zunächst nichts drin, da soll nach dem Speichern die UNID stehen.
-
wie ermittelst du den Wert des Items?
und was sagt der Debugger zu deinem Code?
wird die Collection befüllt?
wird das doc gesetzt?
wenn ja, welcher wert ist laut debugger im item ID an der stelle set doc = dc.getnextdocuem ......
-
wie ermittelst du den Wert des Items?
und was sagt der Debugger zu deinem Code?
wird die Collection befüllt?
wird das doc gesetzt?
wenn ja, welcher wert ist laut debugger im item ID an der stelle set doc = dc.getnextdocuem ......
also der debugger läuft ganz normal durch, d.h. die collection wird befüllt, das doc wird gesetzt und im item ID steht eine schöne lange UNID Nr.! Also is alles sauber.......aber die View zeigt mir die DocumentID nicht an in der Spalte....! hmmm, also der Wert is da auf jeden Fall.
-
was steht denn in dem Item ID drin?
Und wie ermittelst du das?
wie ich hier schon fragte: wie ermittelst du den Wert des Items?
über die Spalte einer Ansicht?
und wenn ja, was steht dort in der Spaltenformel?
und hast du die Ansicht refreshed?
denn wie du selbst schreibst, im Dokument ist der Wert gesetzt.
-
richtig eine ansicht mit der spalte ermittelt den wert des id feldes.
aber ich muss an dieser stelle einen fehler eingestehen, nämlich der "select form = maske" zeigte auf die falsche maske, somit konnte das nicht funktionieren! das kommt daher weil ich 30.000 ansichten usw. im designer gleichzeitig bearbeite.....irgendwann verliert man den überblick.
also ist dieser thread völlig sinnlos...., naja nicht ganz. !!!! sorry bitte !!!!!! :-X
-
iworks, hast du #3 von Driri gelesen (und verstanden) ::)
jo