Autor Thema: Fehler weil Dokument nicht gefunden wird.  (Gelesen 3890 mal)

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Fehler weil Dokument nicht gefunden wird.
« am: 08.10.07 - 12:02:53 »
Hallo Leute,

ich habe ein Problem und weiß mir keinen Rat mehr und würde es am liebsten.....!

Wir habe einen DB, die einige Masken enthält.
Alle Masken sind mit Lese und Autorenfelder belegt.
Aus einer Maske muß bei Bedarf eine neue Maske per Knopf in der Maske aufgerufen werden, die
Werte aus der alten Maske übernimmt und auch Userdaten aus einer DB zieht, die alle Userdaten enthält.
Der Schlüssel dafür ist die Personalnummer.
Ich schreibe den Wert per "@Environment" in die Notes.ini.
Beim öffnen der anderen Maske hole ich mir aus der notes.ini die Personalnummer wieder und befülle die neue Maske
mit den Werte aus der Userdatenbank.

Das läuft bei einigen super, bei anderen habe ich das Problem, dass es von 10 mal nur 5 mal klappt.
50% gehen mir also verloren.
Es kommt die Meldung "ungültiges oder nicht vorhandenes Dokument"

Ich weiß leider nicht mehr wo und nach was ich suchen muß.
Die User haben die Notes.ini in Ihren Home- Laufwerken liegen.
Die Laufwerke dürfen von allen bearbeitet werden.
Die Variable wurde auch in allen Notes.ini's angelegt.

Hier den Entwikcklungscode des Knopfes.

@Environment("doc_num";"XXX");
FIELD fi_vorhanden := "Ja";
@Environment("doc_num";persnum);
FIELD pfaction := "Versendet";
@Command([FileSave]);
FIELD SaveOptions := "0";
@Command([FileCloseWindow]);
REM {Schleife nur das für die User eine optische Verarbeitung läuft};
n := 1;
@DoWhile(n := n + 1; n <= 10);
@PostedCommand([Compose];"UB")

Hier das LS beim öffnen der Maske:

@If (@IsNewDoc ; @Success ; @Return(0));
FIELD ansprech := @Name([Abbreviate];@UserName);
@SetField("doc_num";@Environment("doc_num"));
REM {FIELD doc_num := Auswahl};
@Command([ToolsRunMacro];"UB Dokument befüllen");

Hier der Code vom Agent wo in der letzten Zeile der Fehler kommt.

Dim Session As New NotesSession   
Dim db As New NotesDatabase("segds004", "Schuladr")
Dim ws As New NotesUIWorkspace   
Dim view As Notesview   
Dim doc As NotesDocument
Dim olddoc As NotesUIDocument
'Setzten der KonfigDB Ansicht "PersNr" in der sich alle Dokumente befinden
Set view  = db.GetView( "Nach persnr" )   

'Ist Notwendig für die Front End Klassen die sich auf die geöffneten Dokumente beziehen
Set olddoc = ws.CurrentDocument   

'Setzen des Zeiger auf das Dokuemnte mit dem Schlüßel "key"
key = olddoc.FieldGetText("doc_num")

Ich weiß es ist viel Text, aber ich hoffe einer von Euch Profis kennt eine Lösung.

Danke schon mal. 
Gruß Gerry (Lancelot)

Glombi

  • Gast
Re: Fehler weil Dokument nicht gefunden wird.
« Antwort #1 am: 08.10.07 - 12:15:14 »
Kann es sein, dass der Agent nicht für alle sichtbar ist?

Die Meldung
"ungültiges oder nicht vorhandenes Dokument"
besagt bspw. dass ein nicht vorhandenes Designelement (Agent) aufgerufen wird.


Hast Du schon mal daran gedacht, den ganzen Button mit Formelsprache zu programmieren und auf das Script zu verzichten?
Seit Notes 6 gibts @UpdateFormulaContext, und damit kannst Du eine Menge machen. Bspw. ein neues Dokument erstellen und den Rest der Formel mit dem o.g. Befehl auf das neue Dokument anwenden.

Andreas

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Re: Fehler weil Dokument nicht gefunden wird.
« Antwort #2 am: 08.10.07 - 12:30:03 »
Hallo Glombi,

erst mal danke für die schnelle Antwort.

Wie mache ich den Agenten den öffentlich sichtbar?
Er ist als "Gemeinsam" angelegt. Alle dürfen lesen und hören.
Die Option "Benutzer mit öffentlichem Zugrif dürfen den Agent sehen und ausführen" ist deaktiviert.

Zum umprogrammieren sei gesagt, die DB gibt es seit Version 4.5 und
da diese DB voller Workflow steckt und so mächtig geworden ist, möchte ich an den sogenannten Grundmauern nicht mehr rütteln.
Aber vielen Dank für den Tip mit @UpdateFormulaContext werde ich mir für die Zukunft auf jedenfall merken.  ;-))
Gruß Gerry (Lancelot)

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Re: Fehler weil Dokument nicht gefunden wird.
« Antwort #3 am: 08.10.07 - 14:28:43 »
Das mit dem Sichtbar machen hatte in meinen Augenm damit nichts zu tun.

Habe den Agent auf "öffentlichen Zugriff" aber es kommt immer noch bei einigen die Meldung
"ungültiges oder nciht vorhandenes Dokument".

Bitte um Hilfe, denn ich weiß mir beim besten Willen nicht mehr zu helfen.

Bin echt für jede Idee dankbar!

Mit verzweifelndem Grusse Lancelot
Gruß Gerry (Lancelot)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Fehler weil Dokument nicht gefunden wird.
« Antwort #4 am: 08.10.07 - 14:33:46 »
Mir ist bisher nicht klar geworden, an welcher Stelle der Fehler nun tatsächlich kommt.

Daher schiesse ich einfach mal so in die Luft: Diese Fehlermeldung könnte genauso gut die Zeile
Set view  = db.GetView( "Nach persnr" )   
sein, wenn dort eine einschränkende View-ACL vorliegt.

Bernhard

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Re: Fehler weil Dokument nicht gefunden wird.
« Antwort #5 am: 08.10.07 - 14:40:18 »
Hallo Bernhard,

die View ist auf alle lesen und hören sowie für den öffentlichen Zugriff freigegeben.

Wenn ich die Anwendung bei dem User mit Debug laufen lasse, kommt die Fehlermeldung zwar, aber der Debugger springt nicht um auf den Code, somit weiß ich nciht wo und was den fehler verursacht.

bei mir und vielen Kollegen klappt das Spielchen immer ohne Fehlermeldung.

Was würde Euch helfen um eine Lösung für das Problem zu finden?
Gruß Gerry (Lancelot)

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Re: Fehler weil Dokument nicht gefunden wird.
« Antwort #6 am: 08.10.07 - 14:54:41 »
Hi,

bau mal eine "Protokollierung" mit
Code
@Statusbar("ich mach jetzt das....")
oder
Code
print {im script mach ich jetzt das....}

oder noch besser im script gleich einen einfachen "Errorhandler" mit
Code
on error goto ErrorHandler
...
ErrorHandler:
 print {error #} & cstr(err()) & { } & error() & { in line } &cstr(erl())
ein.

Dann finden wir eventuell die Stelle.
Wobei das mit compose und toolsrunmacro und uidoc.fieldgettext() in reihen immer eine kritische
 Komponente hat.

Gruss, Pete(r)

ps:
schonmal dem Agenten/der Aktion einen anderen Namen gegeben: (ev.Alias)
@Command([ToolsRunMacro];"UB Dokument befüllen")

pete(r)

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Re: Fehler weil Dokument nicht gefunden wird.
« Antwort #7 am: 08.10.07 - 16:29:52 »
Ich lasse mir jetzt vor und nach zeile einen MSGbox ausgeben.

Ich habe nun etwas rausgefunden, ich shcikce einen email mit Doclink zum Vorgesetzten.
Wenn der Vorgesetzte übe rden Link in das Dokuemnt geht, es dann in Bearbeitungsmodus setzte kommt gleich der Beschriebene Fehler, obwohl als erstes im Code ein @Prompt kommen müßte.

Gehjt er aner ganz normal in die Anwendung und öffnet das Dokument in der Ansicht dann klappt es immer.

Was kann das sein, das Dokument ist in der Ansicht vorhanden?
Berechtigungen sind ebenfalls so wie sie eingestellt sind.

Vielleicht hilft diese neue Erkenntnis ja.

Danke Euch!
Gruß Gerry (Lancelot)

Offline WernerMo

  • @Notes Preisträger
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.050
  • Geschlecht: Männlich
Re: Fehler weil Dokument nicht gefunden wird.
« Antwort #8 am: 08.10.07 - 17:14:26 »
hallo,

kann es sein, dass in der Datenbank die Defaultansicht nicht gesetzt ist?

Gruß Werner
Gruß Werner
  o                                                  o   
 /@\  Nächster @Notes-Stammtisch  /@\  online Sept. 2020?
_/_\__________________________/_\_ Details folgen.

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Re: Fehler weil Dokument nicht gefunden wird.
« Antwort #9 am: 08.10.07 - 17:36:07 »
Hallo werner,

die Defaultview war nicht gesetzt, dass habe ich aber jetzt nachgeholt.
Habe danach auch die  Cache.ndk und das Symbol vom Arbeitsbereich gelöscht.
Den Bereich auch komprimiert.

Der Fehler ist aber immer noch da.
Woran kann es liegen, dass der Fehler kommt, sobald ich in einem Dokument auf die
Hotspotschaltfläsche geklickt habe?
Hier ist noch kein Query- oder Postopen gelaufen.
Habe in beiden Ereignissen (Queryopen udn Postopen) einen Prompt eingebaut, der wird aber erst garnicht erst angezeigt. Notes bricht schon vorher ab.

Mache ich das ganze nicht über den Doclink, klappt alles, sogar die Prompts werden verarbeitet.

Wo muß ich den jetzt suchen?
Was kann das jetzt noch sein?
Meine Verzweifliung steigt immer mehr.  :-((
Gruß Gerry (Lancelot)

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Re: Fehler weil Dokument nicht gefunden wird.
« Antwort #10 am: 08.10.07 - 18:37:49 »
Hi,

tja so genau kann ichs Dir auch nicht sagen, aber mal ein paar Ansätze:
Hier den Entwikcklungscode des Knopfes.
...
@PostedCommand([Compose];"UB")
Woran kann es liegen, dass der Fehler kommt, sobald ich in einem Dokument auf die
Hotspotschaltfläsche geklickt habe?
...
Mache ich das ganze nicht über den Doclink, klappt alles, sogar die Prompts werden verarbeitet.
sehe ich das richtig:
ist der Knopf = Hotspot  in der Mail und
"UB" die Makse für das Dokument mit dem Agenten:
Hier das LS beim öffnen der Maske:
...
@Command([ToolsRunMacro];"UB Dokument befüllen");

dann würde ich mal behaupten:
1. der @PostedCommand([Compose];"UB") bekommt die Maske (noch) nicht, weil in zu öffnender DB
2. der @Command([ToolsRunMacro];"UB Dokument befüllen") findet den Agenten (noch) nicht, weil in zu öffnender DB.
oder
3. im Agenten:
'Ist Notwendig für die Front End Klassen die sich auf die geöffneten Dokumente beziehen
Set olddoc = ws.CurrentDocument   
Set olddoc = ws.CurrentDocument   bekommt nicht wirklich das "Alte Dokument" weil das ws.CurrentDocument "noch nicht sauber da ist".

Und noch ein anderer Ansatz (da ich mich selbst gerade mit Framesets/Preview und mehreren DBs rumärgere)
Hat der User der auf dem Button in der Mail drückt zufällig die Mail in der Vorschau/Preview auf? (Läuft auch nicht immer so wie man erwarten könnte.)

Gruss, Pete(r)
pete(r)

Offline HarryB

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 521
  • Geschlecht: Männlich
Re: Fehler weil Dokument nicht gefunden wird.
« Antwort #11 am: 10.10.07 - 09:40:49 »
Hi Lancelot,

auch wenn du an den Grundfesten nicht rütteln willst, kommen mir ein paar Dinge etwas seltsam vor.

Hier den Entwikcklungscode des Knopfes.

@Environment("doc_num";"XXX");
FIELD fi_vorhanden := "Ja";
@Environment("doc_num";persnum);
FIELD pfaction := "Versendet";
@Command([FileSave]);
FIELD SaveOptions := "0";
@Command([FileCloseWindow]);
REM {Schleife nur das für die User eine optische Verarbeitung läuft};
n := 1;
@DoWhile(n := n + 1; n <= 10);
@PostedCommand([Compose];"UB")
Wenn Werte aus einer anderen Maske übernommen werden sollen, ist es immer sinnvoll für die entsprechende Maske die Option "Formeln übernehmen Werte aus gewähltem Dokument" zu aktivieren. Damit kannst du den Umweg über die Notes.ini komplett streichen.


Hier das LS beim öffnen der Maske:

@If (@IsNewDoc ; @Success ; @Return(0));
FIELD ansprech := @Name([Abbreviate];@UserName);
@SetField("doc_num";@Environment("doc_num"));
REM {FIELD doc_num := Auswahl};
@Command([ToolsRunMacro];"UB Dokument befüllen");
Mach aus "ansprech" ein Feld "Berechnet beim Anlegen" und befülle es mit der Formel "@Name([Abbreviate];@UserName);".
Mache aus "doc_num" ein Feld "Berechnet beim Anlegen" und befülle es mit der Formel "persnum" (ohne Anführungszeichen, hier muss der Feldname stehen, kein String).

Hier der Code vom Agent wo in der letzten Zeile der Fehler kommt.

Dim Session As New NotesSession   
Dim db As New NotesDatabase("segds004", "Schuladr")
Dim ws As New NotesUIWorkspace   
Dim view As Notesview   
Dim doc As NotesDocument
Dim olddoc As NotesUIDocument
'Setzten der KonfigDB Ansicht "PersNr" in der sich alle Dokumente befinden
Set view  = db.GetView( "Nach persnr" )   

'Ist Notwendig für die Front End Klassen die sich auf die geöffneten Dokumente beziehen
Set olddoc = ws.CurrentDocument   

'Setzen des Zeiger auf das Dokuemnte mit dem Schlüßel "key"
key = olddoc.FieldGetText("doc_num")
Den Aufruf des Agenten würde ich - unabhängig von den o.g. Änderungsvorschlägen - in den PostOpen Event verschieben, sofern er sich nicht ohnehin dort befindet.

An welcher Stelle wird die Formel, die den Agenten aufruft denn bisher ausgeführt?

Viele Grüße
Harry
Harald "HarryB" Börger

2 x 7.0.2FP1 auf AIX (Cluster)
1 x 7.0.2FP2 auf AIX
1 x 6.5.5 auf AIX
4 x 7.02.FP2 auf WIN

Clients: 7.0.2

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Re: Fehler weil Dokument nicht gefunden wird.
« Antwort #12 am: 11.10.07 - 15:40:25 »
Hallo Harry ich habe den Fehler gefunden.

Es ist das "@Command([FilecloseWindows]) aus dem Code des Knopfes.

@Environment("doc_num";"XXX");
FIELD fi_vorhanden := "Ja";
@Environment("doc_num";persnum);
FIELD pfaction := "Versendet";
@Command([FileSave]);
FIELD SaveOptions := "0";
@Command([FileCloseWindow]);
REM {Schleife nur das für die User eine optische Verarbeitung läuft};
n := 1;
@DoWhile(n := n + 1; n <= 10);
@PostedCommand([Compose];"UB")

Ich wollte damit die alte Maske zumachen und die Neue auf, dass mag er nicht.

Wenn die neue Maske bearbeitet und verschickt ist, wo und wann muß ich dann die alte Maske schließen?

Ich möchte das nach dem Senden alle Masken wieder geschloßen werden, ist das möglich?

Danke!
Gruß Gerry (Lancelot)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz