Autor Thema: Aufruf Dokument mit Maskenwechsel  (Gelesen 6570 mal)

Offline Wiesel

  • Aktives Mitglied
  • ***
  • Beiträge: 188
  • Geschlecht: Weiblich
Aufruf Dokument mit Maskenwechsel
« am: 04.06.09 - 09:07:35 »
Hallo!
Ich möchte aus einer Ansicht heraus ein gewähltes Dokument mittels einer anderen Form öffnen.

Dazu habe ich in der Ansicht eine Schaltfläche mit diesem Script:

Sub Click(Source As Button)
   Dim workspace As New NotesUIWorkspace     
   Dim session As New NotesSession
   Dim doc As NotesDocument
   Dim uidoc As NotesUIDocument
   
   Set doc = session.DocumentContext
   
   If doc.form(0) = "Vorlage" Then
      doc.form = "(DruckVorlage)"
      
      Set uidoc = workspace.EditDocument( False , doc)   
      
   End If
   
End Sub

Aber bei der Zeile "Set uidoc = Workspace..." steigt mir Notes immer aus.

Was fehlt mir denn da?

Danke für Eure Hilfe im Voraus!

s_Old

  • Gast
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #1 am: 04.06.09 - 09:12:27 »
Guten Morgen!

Wenn du nicht noch großartig was anderes vorhast würde ich das mit einem simplen
Code
@Command( [SwitchForm] ; Maskenname )
machen.

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #2 am: 04.06.09 - 09:31:33 »
Hallo,

Das was auch noch funktioniert ist eine "Maskenformel".


Andreas

Offline Wiesel

  • Aktives Mitglied
  • ***
  • Beiträge: 188
  • Geschlecht: Weiblich
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #3 am: 04.06.09 - 09:33:20 »
Das kannte ich noch gar nicht.
Hab das jetzt in die Aktion eingebaut. Leider verweigert mir Notes aber den Befehl. Kriege die Fehlermeldung "Angegebener Befehl kann nicht ausgeführt werden".
Habe jetzt einfach

@Command( [ViewSwitchForm]  )

in die Aktion gepackt.
Und ich möchte das auf jeden Fall in eine Aktion packen und nicht in eine Maskenformel.

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #4 am: 04.06.09 - 09:39:26 »
@Wiesel,

Kleine Frage.
Was spricht denn gegen eine Maskenformel?


Andreas

Offline Wiesel

  • Aktives Mitglied
  • ***
  • Beiträge: 188
  • Geschlecht: Weiblich
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #5 am: 04.06.09 - 09:42:11 »
Ich möchte nicht generell oder abhängig von Usern die Maske ändern, sondern nur bei Aufruf über eine bestimmte Schaltfläche, da somit quasi eine Druckmaske geöffnet wird. Der Druck soll auch nicht automatisch stattfinden, sondern so soll die Möglichkeit der manuellen Druckereinstellung gegeben werden.

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #6 am: 04.06.09 - 10:42:38 »
   
Aber bei der Zeile "Set uidoc = Workspace..." steigt mir Notes immer aus.
Was heisst das "steigt aus"? Gibt es da eine Fehlermeldung?

Wenn Du mit dem uidoc-Object nix weiter machen möchtes in dem Programm, dann versuch es mal mit

call notesUIWorkspace.EditDocument( False, doc, True,, False )

( der letzte False-Parameter bedeutet [returnNotesUIDocument] )


Thomas

Offline Wiesel

  • Aktives Mitglied
  • ***
  • Beiträge: 188
  • Geschlecht: Weiblich
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #7 am: 04.06.09 - 10:58:54 »
Auchmit der Zeile steigt Notes aus. D.h. es stürzt komplett ab.

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #8 am: 04.06.09 - 11:15:47 »
sehe ich jetzt erst:

   Set doc = session.DocumentContext


Session.DocumentContext ist bei einem Button in einer Ansicht der vollkommen falsche Ansatz (DocumentContext arbeitet (siehe Hilfe) NUR in Agenten).

Richtig wäre:

set cdb = session.CurrentDatabase
set coll = cdb.UnprocessedDocuments
set doc = coll.GetFirstDocument



Thomas

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #9 am: 04.06.09 - 11:25:02 »
@Thomas,

Dann kann man doch auch gleich auf die UIView-Klasse losgehen.

Code
Dim ses As New NotesSession

Dim uiws As New NotesUIWorkspace
Dim uivw As NotesUIView
Dim doc As NotesDocument

Set uivw = uiws.CurrentView
Set doc = ses.CurrentDatabase.GetDocumentByID(uivw.CaretNoteID)

Andreas

BigWim

  • Gast
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #10 am: 04.06.09 - 11:33:32 »
Das kannte ich noch gar nicht.
Hab das jetzt in die Aktion eingebaut. Leider verweigert mir Notes aber den Befehl. Kriege die Fehlermeldung "Angegebener Befehl kann nicht ausgeführt werden".
Habe jetzt einfach

@Command( [ViewSwitchForm]  )

in die Aktion gepackt.
Und ich möchte das auf jeden Fall in eine Aktion packen und nicht in eine Maskenformel.

Da fall ich auch immer wieder drauf rein!

Der Wechsel funktioniert nur im Bearbeitungsmodus des Dokuments. Versuch es so:

Code
@Command([EditDocument];1);
@Command( [ViewSwitchForm];"(DruckVorlage)")

Markus


Offline Wiesel

  • Aktives Mitglied
  • ***
  • Beiträge: 188
  • Geschlecht: Weiblich
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #11 am: 04.06.09 - 11:56:58 »
Zu Andreas: Notes stürzt mir trotzdem ab.

Zu Markus: Da bekomme ich die Fehlermeldung: Angegebene Rahmengruppe nicht vorhanden, oder so ähnlich)

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #12 am: 04.06.09 - 12:32:19 »
@Andreas

@Thomas,

Dann kann man doch auch gleich auf die UIView-Klasse losgehen.

Code
Set doc = ses.CurrentDatabase.GetDocumentByID(uivw.CaretNoteID)

Andreas


Da kann man sich streiten, was sinnvoller ist.

CaretNoteID wirkt ja nur auf das Dok die Zeile, auf der ich im Moment stehe. Sind da auch Häkchen in der Ansicht führt das m.E. nur zur Verwirrung der User.

UnprocessedDocuments wirkt auf alle ausgewählten, also entweder auf alle "Häkchen-Doc" oder wenn keine Häkchen vorhanden, auf das, auf dem ich aktuell stehe. (das wäre dann in diesem Fall = Caret).

Mit UnprocessedDocuments kann dann auch schön alle Häkchen-Doc in einer Schleife abarbeiten.
Wie gesagt, alles Geschmackssache bzw. vom konkreten Einsatzfall abhängig.


@Wiesel:
Zu Andreas: Notes stürzt mir trotzdem ab.


Dann poste mal den kompletten, jetzt aktuellen Code.


Thomas

Offline Wiesel

  • Aktives Mitglied
  • ***
  • Beiträge: 188
  • Geschlecht: Weiblich
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #13 am: 04.06.09 - 12:50:32 »
Letzter Versuch war der hier:

Sub Click(Source As Button)
   Dim workspace As New NotesUIWorkspace     
   Dim session As New NotesSession
   Dim doc As NotesDocument
   Dim uidoc As NotesUIDocument
   
   Set doc = session.DocumentContext
   
   If doc.form(0) = "Vorlage" Then
      doc.form = "(DruckVorlage)"
      
      Call notesUIWorkspace.EditDocument( False, doc, True,, False )
      
   End If
   
End Sub

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #14 am: 04.06.09 - 13:02:23 »
Dann versuch doch mal

Code
Set uidoc = workspace.EditDocument(False, doc)

anstatt von

Code
Call notesUIWorkspace.EditDocument( False, doc, True,, False )

wobei ich mich hier frage, woher kommt notesUIWorkspace.


Andreas

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #15 am: 04.06.09 - 13:12:18 »
grummel, bitte lies mein Posting #8 zum Thema "Session.DocumentContext", dann können wir über Deinen Code weiter sprechen.


Thomas

Offline Wiesel

  • Aktives Mitglied
  • ***
  • Beiträge: 188
  • Geschlecht: Weiblich
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #16 am: 04.06.09 - 13:21:52 »
Also, diesen Code habe ich gerade ausprobiert:

Sub Click(Source As Button)
   Dim workspace As New NotesUIWorkspace     
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim coll As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim uidoc As NotesUIDocument
   
   Set db = session.CurrentDatabase
   Set coll = db.UnprocessedDocuments
   Set doc = coll.GetFirstDocument
   
   If doc.form(0) = "Vorlage" Then
      doc.form = "(DruckVorlage)"
      
      Set uidoc = workspace.EditDocument(False, doc)
      
   End If
   
End Sub


Notes-Absturz!

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #17 am: 04.06.09 - 13:32:07 »
Auch schon den Debugger angeworfen?


Andreas

Offline Wiesel

  • Aktives Mitglied
  • ***
  • Beiträge: 188
  • Geschlecht: Weiblich
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #18 am: 04.06.09 - 13:36:11 »
ja klar. Immer die Zeile

Set uidoc = workspace.EditDocument(False, doc)

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Aufruf Dokument mit Maskenwechsel
« Antwort #19 am: 04.06.09 - 13:57:54 »
Also dieser Code funktionier bei mir problemlos.

Code
Sub Click(Source As Button)
	Dim ses As New NotesSession
	
	Dim uiws As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument
	
	Dim col As NotesDocumentCollection
	Dim doc As NotesDocument
	
	Set col = ses.CurrentDatabase.UnprocessedDocuments
	If col Is Nothing Then Exit Sub
	If col.Count <= 0 Then Exit Sub
	
	Set doc = col.GetFirstDocument
	If Not (doc Is Nothing) Then
		doc.Form = "Test_Neu"
		
		Set uidoc = uiws.EditDocument(False, doc)
	End If
	
End Sub

Kann es sein, dass in Deiner Druckmaske irgendwelche Feldberechnungen/Feldbelegungen nicht sauber laufen?


Andreas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz