Domino 9 und frühere Versionen > Entwicklung
Queryclose bei kopierten/übernommenen Dokumenten
(1/1)
RalfK:
Hallo,
ich stelle mit folgender Formel neue Dokumente aus vorhandenen her:
--- Zitat ---Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim uidocNew As NotesUIDocument
Dim docCurrent As NotesDocument
Dim docNew As Notesdocument
Set uidoc = ws.CurrentDocument
Set docCurrent = uidoc.Document
Set db = session.CurrentDatabase
Set docNew = New NotesDocument(db)
docNew.Form = "Eingabe"
docNew.Vorname = docCurrent.Vorname
docNew.Nachname = docCurrent.Nachname
..........
Set uidocNew = ws.EditDocument(True, docNew)
Msgbox "Dokument erfolgreich erstellt" ,64,"Hinweis"
End Sub
--- Ende Zitat ---
Klappt auch ohne weiteres. Nun habe ich aber das Problem, dass das neue Dokument einfach per ESC abgebrochen werden kann, ohne gespeichert zu werden. Ich habe probiert des mit einem Queryclose zu verhindern:
--- Zitat --- Dim workspace As New NotesUIWorkspace
Dim doc As NotesUIDocument
Dim answer As Integer
Set doc = workspace.CurrentDocument
If doc.EditMode Then
answer = Messagebox ("Achtung speichern!!" , 4 + 16, "Hinweis")
If (answer = IDYES) Then
Call doc.Save
Else
Call doc.Close
End If
End If
--- Ende Zitat ---
Klappt auch klasse. Problematisch ist nur, dass nun sämtlich Dokumente im Edit Mode diese abfrage erhalten. Kann ich dies irgendwie abfangen? Die Abfrage soll explizit nur für die neu erstellten Dokumente gelten.
Wenn ich die untere Formel in die Formel zur Erstellung des Dokumentes einbette, habe ich das Problem, das es ja kein Query ist, sondern die Formel sofort ausgeführt wird.
Wo muss ich dort ansetzen? Könnt ihr mir einen Denkanstoss geben?
Grüße
Ralf
Axel:
Hi,
folgende Vorgehensweise wäre möglich. Beim Anlegen eines neuen Dokumentes legst du ein temporäres Feld an. Das braucht nicht in der Maskengestaltung enthalten sein.
Sub Click(Source As Button)
...
Set docNew = New NotesDocument(db)
docNew.Form = "Eingabe"
docNew.DocNeu = "1" 'Feld zur Kennzeichnung eines neuen Dokumentes
..........
Set uidocNew = ws.EditDocument(True, docNew)
Msgbox "Dokument erfolgreich erstellt" ,64,"Hinweis"
End Sub
Vorm ersten Speichern löscht du das Feld wieder. Somit erfolgt nur bei den Dokumenten, die im Edit -Modus sind und dieses Feld haben, die Speicherabfrage.
QueryClose-Event:
Dim workspace As New NotesUIWorkspace
Dim doc As NotesUIDocument
Dim answer As Integer
Set doc = workspace.CurrentDocument
If doc.EditMode And doc.HasItem("DocNeu") Then
answer = Messagebox ("Achtung speichern!!" , 4 + 16, "Hinweis")
If (answer = IDYES) Then
Call doc.RemoveItem("DocNeu") 'Feld löschen
Call doc.Save
Else
Call doc.Close
End If
End If
Axel
flaite:
Im übrigen sieht das
--- Code: ---Set docCurrent = uidoc.Document
Set db = session.CurrentDatabase
Set docNew = New NotesDocument(db)
docNew.Form = "Eingabe"
docNew.Vorname = docCurrent.Vorname
docNew.Nachname = docCurrent.Nachname
..........
--- Ende Code ---
für mich ein bischen problematisch aus. Versuch mal ein abgespeichertes vorhandenes Dokument zu öffnen. Das Feld Vorname zu ändern und dann den Button zu drücken, der diese Erstelle-neues-Dokument-aus-vorhandenen Funktionalität aufruft.
Ich wette der hat nicht den neuen Wert des Felds "Vorname".
Gruß Axel
RalfK:
--- Zitat ---für mich ein bischen problematisch aus. Versuch mal ein abgespeichertes vorhandenes Dokument zu öffnen. Das Feld Vorname zu ändern und dann den Button zu drücken, der diese Erstelle-neues-Dokument-aus-vorhandenen Funktionalität aufruft.
Ich wette der hat nicht den neuen Wert des Felds "Vorname".
Gruß Axel
--- Ende Zitat ---
Hmm habs mal so getestet. Also er übernimmt das Feld, auch wenn das otg. Dokument im bearbeiten Modus ist und ich den Vornamen geändert habe. :)
Danke für die Antworten. Ich werde es mal testen.
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln