Domino 9 und frühere Versionen > ND6: Entwicklung

"no document in that direction"

(1/2) > >>

Tode:
Folgendes Szenario:

ich habe eine Maske, wo der Benutzer per Button bestimmte Informationen "optional" einblenden kann, und das auch im Lesemodus.

Da im Lesemodus weder "RefreshHideFormulas" noch ViewRefreshfields bzw. deren Script- Pendants funktionieren, habe ich folgenden hochkomplizierten Code verwendet:

@Environment( "SHOW_HEADER" ; "1" );
@Command([ViewSwitchForm] ; "Doc" )

Das funktioniert einwandfrei:
Ich öffne das Dokument aus der Ansicht, die Daten sind "versteckt".
Ich klicke den Button - Die Daten werden angezeigt (nur zur Info: die Umgebungsvariable wird von einem berechnet zur Anzeige- Feld sofort wieder zurückgesetzt, damit habe ich abgefangen, dass mehrere Dokumente in verschiedenen Stati geöffnet sein können).
Ich klicke einen anderen Button (setzt SHOW_HEADER auf "") und die Daten werden verborgen.

ABER: Öffne ich das Dokument nicht aus einer Ansicht, sondern über einen Hyperlink auf einer Seite (die als Einstiegsseite für die Datenbank angezeigt wird), dann erhalte ich den Fehler

"No Document in that direction"
oder
"Kein Dokument in dieser Richtung"

Die Datenbank hat eine Vorgabe- Ansicht und eine Vorgabe- Datenbankmaske.

Ansonsten wüsste ich nicht, wo ich noch suchen soll.

KB habe ich durchsucht, aber nix gefunden.

Hat jemand ne Idee ?

Tode

Glombi:
Arbeitest Du mit einem Frameset und Frames?

Falls ja, könnte es daran liegen, dass die Frames nicht die richtigen namen haben: NotesNavigation (für die Outline Page) und NotesView (für die Ansichten).

Damit hatte ich schon diverse komische Effekte.

Andreas

Tode:
Danke erstmal für den Tipp.
Habs gleich ausprobiert. Das wars leider nicht.

Es ist aber halt auch keine typische Aufteilung:
Ich starte mit 2 Frames: Links die Navigation, über die die Ansichten rechts geöffnet werden können, und rechts (so lange keine Ansicht geöffnet ist) die "QuickAccess"- Seite für den direkten Zugriff auf bestimmte Dokumente.

in dieser Konstellation ist also gar keine View geöffnet, vielleicht ist das mein Problem...

Die QuickAccess- Seite lädt die Doks dann in einem neuen Fenster (nicht innerhalb der Rahmengruppe, das macht mir zu viele Scherereien...)

Ich werde mal versuchen. eine Ansicht in diese Konstellation mit aufzunehmen, vielleicht klappt es ja dann...

Für weitere Tipps wäre ich dankbar.

Tode

Tode:
So, Dein Tipp hat mich doch zu einer -zumindest temporären- Lösung gebracht:

Es ist tatsächlich so, dass der Befehl "SwitchForm" nur funktioniert, wenn eine Ansicht geöffnet ist. Dabei reicht es nicht, dass die Ansicht in einem X-Beliebigen Frame offen ist, sondern der Frame muss auch noch "NotesView" heissen.

Ich habe also (um nicht alles komplett über den Haufen schmeissen zu müssen) einen neuen Frame hinzugefügt, und diesen "NotesView" genannt, ihn aber nur 1 Pixel hoch gemacht. Damit klappt's erstmal.

Mal wieder eines dieser tollen "Features".

FAZIT:

SWITCHFORM funktioniert nur dann, wenn:

1. Das Dokument aus einer Ansicht heraus geöffnet wurde

oder

2. Wenn das Dokument aus einer Rahmengruppe heraus aufgerufen wurde nur dann,
wenn diese Rahmengruppe einen Rahmen Namens "NotesView" besitzt, und dieser eine Ansicht enthält (egal ob die Ansicht das Dokument, in dem man arbeitet anzeigt oder nicht.

Tode

Tode:
die von mir genannte Lösung hatte an anderer Stelle negative Nebenwirkungen, deshalb musste ich jetzt noch was anderes finden.

Ich habe aber jetzt eine bessere Lösung gefunden: Öffnet man VOR dem Öffnen des Dokumentes eine Ansicht, dann kommt der Fehler nicht.

Deshalb jetzt dieser Würgaround:

Öffnen des Dokuments:

   Dim blablablub und set blabla

   Set doc = viw.GetDocumentByKey( chapter , True )
   
   If doc Is Nothing Then
      Messagebox "Das Dokument für das Kapitel " & chapter & " konnte nicht gefunden werden" , 16 , "ABBRUCH"
   Else
      Call ses.SetEnvironmentVar( "CLOSE_IMMED" , "1" )
      Call uidb.OpenView( "VwByChapter" )         
      Call ws.EditDocument( False, doc )
   End If

und im PostOpen der VwByChapter:
   Dim ses As New NotesSession
   Dim x As String
   x = ses.GetEnvironmentString( "CLOSE_IMMED" )
   Call ses.SetEnvironmentVar( "CLOSE_IMMED" , "" )
   If x = "1" Then   
      Call Source.Close
   End If

ist zwar auch nicht schön, aber offensichtlich reicht es, dass das aufgerufene Dokument eine "referenz" zu einer Ansicht hat und damit das Switchform den beschriebenen Fehler nicht mehr bringt

vielleicht hilft das ja irgendwann mal jemandem was...

Tode

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln