Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: yaka999 am 09.06.08 - 14:53:09
-
Hallo,
Das ist mir total unangenehm. Da hat man monatelang seine Ruhe und innerhalb von ein paar Tagen gleich mehrere Problemchen.
Ich habe ein Script für einen Button geschrieben (siehe unten). Damit möchte ich ein Dokument bis auf zwei Werte haargenau kopieren. Funktioniert auch wunderbar.
Nur ist jetzt die Funktion futsch, bei der man durch drücken von [ESC] oder schließen des Dokuments zum speichern aufgefordert wird. Ich weiß, hier sollte bei saveoptions eine "1" drin stehen. Aber ich habe ja gar kein Feld namens saveoptions. Ich möchte auch eigentlich keines dafür anlegen. Könnte mir vielleicht jemand helfen. Ich habe bereits sämtliche Varianten des Forums hier probiert.
Sub Click(Source As Button)
Dim db As NotesDatabase
Dim session As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim newdoc As NotesDocument
'Angebotnummer berechnen
Dim session2 As New NotesSession
Dim temp As String
Dim temp2 As String
Dim temp3 As String
temp = session2.GetEnvironmentString("Bestellnummer")
If temp = "" Then
temp = "0"
End If
temp3 = temp + 1
'neue Felder setzen
Set db = session.CurrentDatabase
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
Set newdoc = New NotesDocument(db)
newdoc.form = doc.form
'Feldwerte kopieren
newdoc.menge1 = doc.menge1
newdoc.modell1 = doc.modell1
newdoc.eh1 = doc.eh1
newdoc.lpreis1 = doc.lpreis1
newdoc.preis1 = doc.preis1
newdoc.rabatt1 = doc.rabatt1
newdoc.rabatt1_2 = doc.rabatt1_2
newdoc.summe1 = doc.summe1
...
'Datum ermitteln
Dim item As NotesItem
Set item= New NotesItem( doc, "tmpAngDat", uidoc.FieldGetText("AngDat"))
item.SaveToDisk = False
'neues Dok öffnen und anzeigen
Call newdoc.ComputeWithForm(True, False)
Call workspace.EditDocument(True, newdoc, False, ,,True)
End Sub
-
Ein Dokument kann auch Felder beinhalten, welche über keine (visuelle) Entsprechung in einer Form/Maske verfügen.
-
Ich weiß,
ich habe ja auch schon probiert mittels
newdoc.saveoptions = "1"
dieses Feld zu belegen.
Wenn ich das Dokument anschließend händisch speichere ist es auch da und mit der 1 belegt. Aber beim schließen wird es nicht berücksichtigt.
Ich würde das ja gerne mal demonstrieren. Der Debugger macht das ja auch richtig. Es greift nur nicht beim schließen.
Das wirkt vielmehr so, als hätte ich einen Fehler in meinem Script und der Kasten denkt, ich hätte nichts geändert, obwohl das Dokument ja neu ist, und er deswegen nichts speichern will.
-
Da Du sämtliche Items im Backend belegst, wird aus dem Frontend heraus auch nicht gespeichert - wozu auch (fragt sich das Frontend).
Weiters: SaveOptions = "1" würde auch nur bewirken, dass prinzipiell aus dem Frontend(-QuerySave) heraus gespeichert würde - die Nachfrage entfällt.
Bernhard
-
Hallo Bernhard,
und mit welchem Trick kann ich Notes dann dazu bewegen wieder nach dem speichern zu fragen ?
Und die Antwort, das Script völlig neu zu schreiben will ich nicht hören; Ich bin eh schon stolz genug, dass ich das so weit allein hinbekommen habe. ;)
-
Belege mindestens ein Item im Frontend (NotesUIDocument.FieldSetText).
Bernhard
-
Saveoptions rausnehmen, und dann im Frontend was machen.
Wenn du die SaveOptions vorbelegst mit einer "1", wird Notes nicht fragen, sondern speichern.
-
also bei mir wird nachgefragt, wenn im Feld Saveoptions "1" drin steht und ich verwende diese Funktionalität ab 4.x.
Wichtig ist, dass das Frontenddokument etwas von dem Feld SaveOptions mitbekommt und das ein anderes Feld im Frontend (nicht im Backend) geändert wurde.
-
hallo,
also mit so vielen Antworten habe ich gar nicht gerechnet. Muss schon eine sehr blöde Frage von mir sein !!!
Welches Frontend muss ich denn belegen? Ich habe ja ein Notesuidocument (hier uidoc) laut Debugger. Meines Wissens ist das uidoc in diesem Fall das Frontend von dem Ursprungsdokument. Um ihn zum Speichern zum Bewegen muss ich doch, wenn ich das richtig verstanden habe, das Frontend vom neuen Dokument (newdoc) ändern. Aber wie komme ich denn da dran?
-
Set newUIDocument = workspace.EditDocument(True, newdoc, False, ,,True)
und siehe auch: http://atnotes.de/index.php?topic=37220.0
-
Ich hatte das Notwendige doch bereits in #5 geschrieben ...
Bernhard
-
Hallo,
sensationell. jetzt klappt es. :D
Vielen, vielen Dank für die Hilfe.
Viele Grüße