Autor Thema: Haupt- und Antwort-Dokumente auf Basis einer Maske  (Gelesen 1366 mal)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Hi,

gewöhnlich erwartet Notes, dass für Antwort-Dokumente eine eigene Maske verwendet wird. Dort setzt man unter Type "Response" oder "Response 2 Response".

Ich habe aber hier das Ziel, für Haupt- und Antwortdokumente nur 1 Maske zu verwenden.

Nun kann man ja über die MakeResponse Methode der NotesDocument-Klasse ein Dokument zum Response-Dokument machen. Klappt auch wunderbar. Erstellt man allerdings ein neues NotesDocument, setzt das "Du bist eine Response"-Flag und holt sich ohne zu Speichern das Dokument dann ins Frontend, so wird daraus keine Response. Man muss wohl das Backend-Doc zuerst speichern  ???

Code
Sub Click(Source As Button)
	
	'Constants for this procedure
	Const FORMNAME_RESPONSE$ = "frmTest"
	Const ERR_NODOCSEL_TITLE$ = "Error: No document selected"
	Const ERR_NODOCSEL_MSG$ = "You need to select a document to create a response document of it."
	
	On Error Goto ErrorHandler									'Of course we trap errors
	
	'The dim section
	Dim uiws As New NotesUIWorkspace
	Dim uidocNew As NotesUIDocument
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim docSel As NotesDocument
	Dim docNew As NotesDocument
	
	'We need the current database
	Set db = session.CurrentDatabase
	
	'Get current document as NotesDocument object
	If Not uiws.CurrentDocument Is Nothing Then
		Set docSel = uiws.CurrentDocument.Document	'Document opened in form
	Elseif Not session.DocumentContext Is Nothing Then
		Set docSel = session.DocumentContext				'Document selected in view
	End If
	If docSel Is Nothing Then										'User did not select a document
		Msgbox ERR_NODOCSEL_MSG, 48, ERR_NODOCSEL_TITLE
		Goto GoOut
	End If
	
	'Create new backend response document
	Set docNew = db.CreateDocument
	Call docNew.ReplaceItemValue("Form", FORMNAME_RESPONSE)
	Call docNew.MakeResponse(docSel)
	Call docNew.Save(True, False)						'XXXXXXXXXX Das hier wollen wir eigentlich nicht ! XXXXXXXXXXX
	'Finally, open new document in the frontend
	Call uiws.EditDocument(True, docNew)
	
	
GoOut:
	Exit Sub
ErrorHandler:
	ErrorMsg
	Resume GoOut
End Sub

Problem hier: Ich will das neue Dokument *nicht* speichern. Ohne zu speichern wird aber kein Response-Document daraus  :(

Hab ich da vielleicht was übersehen? Oder ist auch aus anderen Gründen davon abzuraten,  eine Maske sowohl für Main- und Response-Dokumente zu verwenden. IBM macht das ja wohl auch nicht, wenn man sich die Templates ansieht.
Ich möchte das eigentlich vermeiden und lieber mit Hide/When arbeiten, um redundante Masken zu vermeiden.

Matthias
« Letzte Änderung: 24.06.05 - 21:54:29 von TMC »
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Glombi

  • Gast
Re: Haupt- und Antwort-Dokumente auf Basis einer Maske
« Antwort #1 am: 24.06.05 - 21:40:34 »
Ich denke, das geht wenn Du in den Maskeneigenschaften die Versionierung aktivierst (hoffe ich zumindest). Du solltest es dann auf "manuell" stellen.
Dann spricht meiner Meinung nach nichts dagegen, dass es auch eine Antwort sein kann, obwohl es die Hauptmaske ist.

Es gibt wohl auch ein $VersionOpt Feld (oder so ähnlich). Wenn Du willst, kann ich mal in der KBASE kramen (eine meiner Lieblingsbeschäftsigungen  ;) )

Andreas

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Haupt- und Antwort-Dokumente auf Basis einer Maske
« Antwort #2 am: 24.06.05 - 21:46:46 »
Ich denke, das geht wenn Du in den Maskeneigenschaften die Versionierung aktivierst (hoffe ich zumindest). Du solltest es dann auf "manuell" stellen.

Habe auf "New versions become responses" und auf "Manual - file, new version" gestellt. Und siehe da: es klappt  8)
Prima, vielen Dank für den Tipp. Verstehen muss ich das jetzt nicht, oder?

Wenn Du willst, kann ich mal in der KBASE kramen
Sehr gerne, wäre sicherlich sehr hilfreich  ;)

Danke nochmal,
Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Glombi

  • Gast
Re: Haupt- und Antwort-Dokumente auf Basis einer Maske
« Antwort #3 am: 25.06.05 - 10:02:04 »
Ok, also ich denke dass es in der Tat eleganter und flexibler mit $VersionOpt geht. Es seht zwar nichts in der KBASE aber in der Designer Hilfe unter "Felder zur Versionskontrolle"  :

Das Hinzufügen eines $VersionOpt-Feldes zu einer Maske ermöglicht Benutzern, neue Versionen von bearbeiteten Dokumenten auf der Basis einzelner, bearbeiteter Dokumente zu erstellen.
So erstellen Sie ein berechnetes Feld "$VersionOpt"
Verwenden Sie ein berechnetes Textfeld, wenn Sie möchten, dass alle Dokumente, die aus einer Maske erstellt wurden, dieselben Methoden zur Versionskontrolle enthalten.
  1.   Erstellen Sie ein Feld namens $VersionOpt und definieren Sie es als berechnetes Textfeld.
"Berechnet zur Anzeige" und "Berechnet beim Anlegen" funktionieren in dieser Situation nicht.
  2.   Wählen Sie "Wert" im Register "Objekte" der Infoliste im Programmierfenster.
  3.   Geben Sie einen der folgenden Werte im Scriptbereich ein:
Wert   Art der Kontrolle
0   Keine Versionskontrolle
1   Neue Versionen werden zu Antworten, wenn die Benutzer beim Speichern eines Dokuments "Datei - Als neue Version speichern" wählen.
2   Neue Versionen werden beim Speichern automatisch zu Antworten.
3   Vorherige Versionen werden zu Antworten, wenn die Benutzer beim Speichern eines Dokuments "Datei - Als neue Version speichern" wählen.
4   Vorherige Versionen werden beim Speichern zu Antworten
5   Neue Versionen werden zu Geschwisterdokumenten, wenn die Benutzer beim Speichern eines Dokuments "Datei - Als neue Version" speichern wählen.
6   Neue Versionen werden beim Speichern automatisch zu Geschwisterdokumenten.


Das Script müsste dann so aussehen:

Sub Click(Source As Button)

'Constants for this procedure
Const FORMNAME_RESPONSE$ = "frmTest"
Const ERR_NODOCSEL_TITLE$ = "Error: No document selected"
Const ERR_NODOCSEL_MSG$ = "You need to select a document to create a response document of it."

On Error Goto ErrorHandler 'Of course we trap errors

'The dim section
Dim uiws As New NotesUIWorkspace
Dim uidocNew As NotesUIDocument
Dim session As New NotesSession
Dim db As NotesDatabase
Dim docSel As NotesDocument
Dim docNew As NotesDocument

'We need the current database
Set db = session.CurrentDatabase

'Get current document as NotesDocument object
If Not uiws.CurrentDocument Is Nothing Then
Set docSel = uiws.CurrentDocument.Document 'Document opened in form
Elseif Not session.DocumentContext Is Nothing Then
Set docSel = session.DocumentContext 'Document selected in view
End If
If docSel Is Nothing Then 'User did not select a document
Msgbox ERR_NODOCSEL_MSG, 48, ERR_NODOCSEL_TITLE
Goto GoOut
End If

'Create new backend response document
Set docNew = db.CreateDocument
Call docNew.ReplaceItemValue("Form", FORMNAME_RESPONSE)
Call docNew.MakeResponse(docSel)
Call docNew.ReplaceItemValue("$VersionOpt","1")   ' NEU !!!!!!!!!!!!!!!!!
Call docNew.Save(True, False) 'XXXXXXXXXX Das hier wollen wir eigentlich nicht ! XXXXXXXXXXX
'Finally, open new document in the frontend
Call uiws.EditDocument(True, docNew)


GoOut:
Exit Sub
ErrorHandler:
ErrorMsg
Resume GoOut
End Sub


Das hat den immensen Vorteil, dass die Maskeneigenschaften nicht geändert werden müssen.


Andreas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz