Autor Thema: FM "DialogBox kann nicht in diesem Kontext verwendet werden. ..."  (Gelesen 10054 mal)

Offline Bille

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Weiblich
  • Ich kam, sah und ... staunte!
Hallo!

Ich habe in der Maske "Kalendereintrag" der Mailschablone den Button "Bewirtung" eingefügt, hinter dem sich folgender Code verbirgt:

Code
Sub Click(Source As Button)
	Dim s As New NotesSession     
	Dim ws As New NotesUIWorkspace
	Dim doc As NotesDocument
	
	Set doc = ws.CurrentDocument.Document
	
	If Not ws.DialogBox( "DialogBewirtung" , False , False, False, False, False, False, "Ort der Besprechung", doc ) Then
		Exit Sub
	End If
	Call doc.Save(False,False)
End Sub

Wenn ich im eigenen Kalender mittels "Besprechung planen" ein Dokument öffne und den Button klicke, funktioniert alles wie gewünscht.
Erstelle ich aber den Eintrag in einem fremden Kalender kommt die Fehlermeldung:
"DialogBox kann nicht in diesem Kontext verwendet werden. Es muss ein Dokument ausgewählt werden."

Ich hab mir die Variablen im Debugger angesehen, das doc ist gesetzt.

Wo liegt hier mein Fehler?

Bille

EDIT: Auf erledigt gesetzt!
« Letzte Änderung: 22.01.08 - 15:32:26 von Bille »
Experience is the name
everyone gives to his mistakes.
                                             (Oscar Wilde)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Hallo Bille,

... laut Fehlermeldung hat er keinen ZUgriff auf das Dokument - vielleicht wurde der neue Eintrag noch nicht gespeichert, und du hast in deiner Box auf ein existierendes Dokument zugegriffen?

Toni
Grüßle Toni :)

Offline Bille

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Weiblich
  • Ich kam, sah und ... staunte!
Hallo Toni,

ja, das Dokument wurde noch nicht gespeichert, aber das ist auch der Fall, wenn ich die Besprechung in meinem eigenen Kalender öffne.
Es muss also irgendwas damit zu tun haben, dass ich das Dokument im fremden Kalender öffne. Nur wo ist hier der Unterschied? Das Recht im anderen Kalender Einträge zu erstellen liegt vor.

Bille

Experience is the name
everyone gives to his mistakes.
                                             (Oscar Wilde)

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
... in deinem Code sind ist keine Validierung auf das aktuelle Dokument:
Zitat
Set doc = ws.CurrentDocument.Document

Das würde ich validieren mit

If not doc Is Nothing Then...

... denn du verwendest es für die Dialogbox. Und da könnten weitere Zugriffe benötigt werden, die eventuell nicht funktionieren. Da dürfte es sich um eine eigene Dialogmaske handeln. Wann genau kommt die Fehlermeldung hoch - vor der Dialogbox, beim Laden der Dialogbox...?

Toni
Grüßle Toni :)

Offline Bille

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Weiblich
  • Ich kam, sah und ... staunte!
Ja, die Dialogbox ist als eigene Maske in der Mailschablone vorhanden.

Ich hab die Validierung im Code eingefügt. Es erscheint aber immer noch der gleiche Fehler.
Der Fehler tritt beim Öffnen der Dialogbox auf, also in der Zeile
Code
If Not ws.DialogBox( "DialogBewirtung" , False , False, False, False, False, False, "Ort der Besprechung", doc ) Then

An dem nicht vorhandenen doc dürfte es nicht liegen, zum einen wird es nun ja vorher abgefragt und zum anderen kann ich im Debugger das doc (samt Items usw.) auch sehen.
Auch sonst kann ich keinen Unterschied entdecken.

Kann es evtl. doch noch mit irgendwelchen Rechten zu tun haben?

Bille
Experience is the name
everyone gives to his mistakes.
                                             (Oscar Wilde)

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Hat Du mal versucht das als neues Dokument und nicht als Dialogbox auszuführen?

Mich grabelt da was mit UIWorkspace und Backend Dokument in einer fremden Datenbank.
Bin mir aber nicht mehr sicher.
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline Bille

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Weiblich
  • Ich kam, sah und ... staunte!
Nein, das hab ich noch nicht probiert.
Weiß ehrlich gesagt aber auch gar nicht genau, wie Du das meinst.

Bille

PS: Falls das mit UIWorkspace und Backendokument in einer fremden DB grundsätzlich nicht funktioniert, wäre das schon mal eine Erklärung für den Fehler ...
Experience is the name
everyone gives to his mistakes.
                                             (Oscar Wilde)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Naja, das kann es nicht sein, denn was ist eine "fremde DB" in diesem Zusammenhang? Bille macht DB A auf - funktioniert, dann DB B - und es funktioniert nicht. Aus Notes-Sicht sind beides ganz normale DBs, es gibt keine Unterschiede ... bis auf die Rechte.

Bille, bau mal spassenshalber in Deine Dialogbox-Maske ein berechnetes Feld $PublicAccess mot dem Wert "1" ein.

Bernhard

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Oh. falscher Gedankengang.
Man ist ja immer noch 'am Ort' sozusagen...

André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Hast Du übrigens schon so Sachen wie:

desktop komprimiert
cache gelöscht
usw. usf?

Gleiche Meldung, anderes Problem ( dominoforum )
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline Bille

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Weiblich
  • Ich kam, sah und ... staunte!
Anhand Eurer Hinweise habe ich nun folgendes probiert.

1) Berechnetes Feld $PublicAccess mit Wert "1" in DialogMaske erstellt
2) Cache.ndk auf meinem Rechner gelöscht
3) compact, fixup, updall auf der anderen Datenbank ausgeführt
4) meinen Notes-Client neu gestartet

Der Fehler bleibt leider der Gleiche.
Das Problem trat schon vor einiger Zeit bei der Sekretärin auf, die für den Chef eine Besprechung samt Bewirtung eintragen wollte.
Ich kann das Problem hier an meinem Rechner mit der Mail-DB eines anderen Kollegen nachstellen. Drum dachte ich auch, dass es an dem Code (bzw. den Rechten) liegen muss.

Habt Ihr noch Ideen?

Bille

PS: André, kannst Du mir nochmals mit Deinem Hinweis (nicht als Dialogbox sondern als Dokument) weiterhelfen, oder hat sich das mit dem Hinweis von Bernhard erledigt?
Experience is the name
everyone gives to his mistakes.
                                             (Oscar Wilde)

Glombi

  • Gast
Lass mal den letzten Parameter "doc" beim Aufruf der Dialogbox weg, da ja das aktuelle Dokument verwendet wird:

If Not ws.DialogBox( "DialogBewirtung" , False , False, False, False, False, False, "Ort der Besprechung") Then


Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Naja, Andreas - der Parameter "doc" greift in jeder Maildatenbank, ob es nun die eigene ist oder eine andere.

Bille: Einen Versuch war es wert mit $PublicAccess, auch wenn ich es mir nicht so richtig vorstellen konnte. Leider reichte die Zeit nicht aus, das nachzubauen - ein interessantes Problem ist es aber schon!

Du schreibst eines noch nicht eindeutig: Passiert das immer (in fremden DBs), oder sind Dir nur zwei Fälle bekannt? Welche Rechte haben die User im jeweils anderen Mailfile?

Bernhard

PS: Wir kriegen alle gemeinsam die Sau schon noch zum Fliegen  ;)

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Ich habe auch noch was.

Leg mal ein Dummydoc an und versuch die Dialogbox damit zu öffnen.

Das mit dem nicht als Dialogbox parken wir erstmal...  :)

« Letzte Änderung: 22.01.08 - 15:13:17 von DerAndre »
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline Bille

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Weiblich
  • Ich kam, sah und ... staunte!
Hallo nochmal,

also, es liegt definitiv an den Rechten.
Ich hab mich in der anderen Mail-DB als Manager eingetragen und schon geht's!
Bisher habe ich nur die Rechte Kalendereinträge zu erstellen und zu löschen.
ACL: No Access,
Haken bei "read public documents" gesetzt
Haken bei "write public documents" gesetzt
Haken bei "replicate or copy documents" gesetzt

Ich hab bei dem Feld $PublicAccess sowohl die Variante "1" als auch 1 probiert.
Irgendwo dort muss doch der Hund begraben sein ...

Schon mal ein herzliches Dankeschön an alle Beteiligten für die zahlreichen Hinweise und Ratschläge.

Bille

PS: Andreas, das Weglassen des Parameters "doc" hat keine Veränderung ergeben.

PPS: Ich sehe gerade, dass ich eine Frage von Bernhard nicht beantwortet habe. Bisher sind mir nur die zwei beschriebenen Fälle bekannt, aber die Funktion verwendet außer der Sekretärin m.E. sonst keiner.
« Letzte Änderung: 22.01.08 - 15:14:53 von Bille »
Experience is the name
everyone gives to his mistakes.
                                             (Oscar Wilde)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Nehmen wir damit mal das naheliegende an, Bille: Es betrifft alle (solange die Rechte identisch sind wie zu diesen beiden Fällen).

Ich versuche heut' auf Nacht, dass mal nachzubauen. Kannst Du bitte noch einen Schirmschuss aus der Dialogbox-Maske (Designer-Sicht) posten?

Bernhard

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Wenn es alle Betrifft, ist die Wahrscheinlichkeit sehr groß, das die Bezeichnung der Form falsch geschrieben ist.
Such mal im Notes.net nach

DialogBox and Context
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Glombi

  • Gast
Ist in der Maske "DialogBewirtung" auch die Option "Verfügbar für Benutzer mit öffentlichem Zugriff gesetzt" ?

Zitat
$PublicAccess
Das reicht vermutlich nicht. Es muss die o.g. Option aktiv sein.

Offline Bille

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Weiblich
  • Ich kam, sah und ... staunte!
André, dass mit der falschen Form kann doch eigentlich nicht sein, da es in meinem Kalender ja funktioniert. Nur wenn ich über eine andere DB zugreife, kommt dieser Fehler.

Ich hab zwei Bilder angehängt.
Zum einen die DialogMaske und zum anderen noch einen Teil der Maske "Kalendereintrag", da ich nicht weiß, ob es relevant ist, dass ich hier noch das Feld "$CSCopyItems" hinzugefügt habe.
Experience is the name
everyone gives to his mistakes.
                                             (Oscar Wilde)

Glombi

  • Gast
Hast Du meinen Vorschlag in #17 schon gesehen?

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz