Schönen guten Abend,ich stehe seit geraumer Zeit vor einem großem Problem, dieses stellt sich wie folgt dar:
1) Ich öffne ein bestehendes Dokument (beim erstellen neuer Dokumente in der DB tritt kein Speicherkonflikt auf).
2) Dann soll der Anwender das Dokument im Frontend bearbeiten dürfen und durch Drücken einer Schaltfläche einen Dateianhang in einen RTF erstellen dürfen.
3) Diesen Anhang soll er selbstverständlich auch gleich im Frontend sehen. Das ist auch kein Problem mit der ReOpenFunktion von ata.
4) Aber nun stellt sich folgende Problematik! Nachdem der Anwender den Anhang erstellt hat soll es ihm auch wieder möglich sein das Frontend zu verändern! Und hier bekomme ich (aber immer nur bei bestehenden Dokumenten, also nicht bei neu erstellten) den Fehler "Eine weitere Kopie dieses Dokumentes wurde gespeichert, während Sie das Dokument bearbeiteten..."!
Das Häkchen bei den Maskeneigenschaften "Konfliktbehandlung" hat keine Auswirkungen auf Speicherkonflikte wohl nur Replizierkonflikte, um das schon mal vorab zu nehmen?!?!
Kann mir jemand einen Tipp geben? Bin für jede Hilfe dankbar!
Aber hier noch ein bißchen Sript:
In der Schaltfläche im Declarations-Bereich'Deklarationen von Konstanten
Const cVorlage="Stellungnahme zur Gremienvorlage"
Const cOleView="(Vorlagen)"
Dim db As NotesDatabase
Dim unid As String
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument
Im Ereignis Click:Sub Click(Source As Button)
'Deklarationen Allgemein
Dim session As New NotesSession
Dim uiw As New NotesUIWorkspace
Dim oleView As NotesView
Dim oleDoc, profildoc As NotesDocument
Dim Attach As NotesEmbeddedObject
Dim wd As Variant
Dim ritem As Variant
Dim wddoc As Variant
Dim Path As Variant
Dim Word As Variant
Dim cDefPath
Dim Continue
'Zuweisungen
Set db=session.CurrentDatabase
Set uidoc=uiw.CurrentDocument
Set profildoc=db.GetProfileDocument("Profil")
Set doc=uidoc.Document
'On Error Goto Ende
'Eingabeüberprüfung für bestimmte Pflichtfelder,
'bevor und /oder ob das Dokument gespeichert werden darf!
Dim gremium As Variant
gremium = uidoc.fieldgettext ("Gremium")
Dim sitzung As Variant
sitzung = uidoc.fieldgettext ("SitzungNr")
Dim jahr As Variant
jahr = uidoc.fieldgettext ("Jahr")
Dim datum As Variant
datum = uidoc.fieldgettext ("Datum")
Dim top As Variant
top = uidoc.fieldgettext ("TOP")
Dim betreff As Variant
betreff = uidoc.fieldgettext ("Betreff")
If gremium="" Or sitzung="" Or jahr="" Or datum="" Or top="" Or betreff ="" Then
Msgbox "Bitte füllen sie alle Pflichtfelder aus!"
Continue=False
Exit Sub
End If
'Dieses Script erstellt Stellungnahmen zu Gremienvorlagen
cDefPath=profildoc.GetItemValue("Speichern")
'Word-Vorlage einbinden
Set oleview=db.GetView(cOleView)
Set oledoc=OleView.GetDocumentByKey("Stellungnahme zur Gremienvorlage",True)
Set Attach=oleDoc.GetAttachment(cVorlage+".doc")
Call Attach.ExtractFile(cDefPath(0) & "Stellungnahme zur Gremienvorlage" & ".doc")
Set wd=CreateObject("Word.Application")
Set wddoc=wd.Documents.Open(cDefPath(0) & "Stellungnahme zur Gremienvorlage.doc")
wd.Visible=False
'wd.Visible=True
' 'Worddokument mit Daten füllen
wddoc.Bookmarks("Gremium").Range.Text=uidoc.FieldGetText("Gremium")
wddoc.Bookmarks("SitzungNr").Range.Text= sitzung & jahr 'uidoc.FieldGetText("SitzungNr")'&"Jahr")
wddoc.Bookmarks("Datum").Range.Text=uidoc.FieldGetText("Datum")
wddoc.Bookmarks("TOP").Range.Text=uidoc.FieldGetText("TOP")
Const wdAllowOnlyFormFields = 2
wd.ActiveDocument.Protect wdAllowOnlyFormFields, True, ""
wd.DisplayAlerts = False
wddoc.close
wd.Quit
Set doc = uiw.CurrentDocument.Document
Dim object As NotesRichTextItem
Set object = New NotesRichTextItem(doc, "Anhang")
Path=cDefPath(0) & "Stellungnahme zur Gremienvorlage.doc"
If Isempty(Path) Then
Exit Sub
End If
If object.type = 1 Then
Call object.EmbedObject( EMBED_ATTACHMENT, "", Path,)
Call object.Update
Call doc.Save(True , True)
Call ReOpen(doc)
End If
Exit Sub
Ende:
wddoc.close
wd.Quit
End Sub
In der Function ReOpen:Function ReOpen(doc As NotesDocument) As Integer
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim dbThis As NotesDatabase
Dim unid As String
ReOpen = 0
Set dbThis = doc.ParentDatabase
Call doc.Save(True , True)
unid = doc.UniversalID
doc.SaveOptions = "0" ' # ... Speicherabfrage vermeiden
Set uidoc = ws.CurrentDocument
Call uidoc.Close
Set doc = dbThis.GetDocumentByUNID(unid)
Set uidoc = ws.EditDocument(True , doc)
Set doc = uidoc.Document
If doc.HasItem("SaveOptions") Then
' # ... das Feld SaveOptions wieder entfernen...
doc.RemoveItem("SaveOptions")
Call doc.Save( True , True )
End If
ReOpen = 1
Print "Das Dokument wurde erneut geöffnet"
End Function
Zur Ergänzung in der Maske habe ich ein Feld "SaveOptions" - brechnet - auf SaveOptions
Gruß Sabine