Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: ZaLudtske am 18.07.06 - 07:46:10

Titel: Fehler 151 - Cannot find external name
Beitrag von: ZaLudtske am 18.07.06 - 07:46:10
Hallo,

ich hab mal wieder in einer meiner Anwendungen ein Phänomen, das ich mir nicht erklären kann.

Der Fehler tritt in einen periodischen Agenten auf, der einmal am Tag gestartet wird. Wird der Agent vom Server aufgerufen so bleibt er beim Aufrufer einer Unterfunktion hängen gibt die Fehlermeldung  'Cannot find external name: FKTISTARBEITSTAG' (Nummer 151) aus. Wird aber der Agent von mir zum Testen gestartet, so läuft er ohne Fehlermeldung durch und tut was er soll.

Die nicht aufrufbare Unterfunktion befindet sich in einer Script-Bibliothek die ich auch schon neu compiliert habe.

Hat jemand eine Idee, was der Grund für das Problem sein könnte?

Rainer
Titel: Re: Fehler 151 - Cannot find external name
Beitrag von: ata am 18.07.06 - 08:33:16
Auszug aus der Notes-Hilfe:

Zitat
The currently executing module contains a Use statement whose target module contains a Public name to which the currently executing module refers. That name has been changed in the target module since the currently executing module was compiled.
Restore the original name in the target module, or change the name in the currently executing module to the new name.

hast du was am Namen der Funktion geändert, bzw. ist der Aufruf korrekt geschrieben?

Toni
Titel: Re: Fehler 151 - Cannot find external name
Beitrag von: ZaLudtske am 18.07.06 - 08:52:30
Hallo,

ich habe den Aufruf nochmals kontrolliert und den Namen der aufgerufenen Funktion aus der Bibliothek rüber kopier. Keine Besserung der Lage.

Ich habe ebenso den Parameter von call by value auf call by trference um gestellt. Auch keine Besserung der Lage.

Was mich halt irritiert ist, dass der Agent korrekt ausgeführt wird, wenn ich Ihn als Benutzer starte.

Rainer
Titel: Re: Fehler 151 - Cannot find external name
Beitrag von: koehlerbv am 18.07.06 - 10:10:55
Dass er bei Dir lokal läuft, kann auch damit zusammenhängen, dass in Deiner CACHE.NDK, Bookmark oder ... noch etwas gespeichert ist, was diesmal die Anwendung korrekt erscheinen lässt.
Die Fehlermeldung besagt auf jeden Fall, dass ein übergeordnetes Modul "unten" Code erwartet, der so nicht gegeben ist.

Bernhard
Titel: Re: Fehler 151 - Cannot find external name
Beitrag von: Glombi am 18.07.06 - 10:16:16
In der Script Library befinden sich irgendwelche UI Klassen wie NotesUIWorkspace oder NotesUIDocument, die den Fehler verursachen. Das funktioniert in Serveragenten nicht.

Andreas
Titel: Re: Fehler 151 - Cannot find external name
Beitrag von: koehlerbv am 18.07.06 - 10:41:44
Dann passt die Fehlermeldung aber gar nicht, Andreas ...

Bernhard
Titel: Re: Fehler 151 - Cannot find external name
Beitrag von: ZaLudtske am 18.07.06 - 10:50:28
Hallo,

@Andreas
ich habe die benötigten Klassen in eine andere Bibliothek verschoben und diese in den Agenten eingebunden. Jetzt klappt 's auch mit dem Agenten.

Es ist für mich logisch, dass man in Server-Agenten keine UI-Klassen benutzen kann, aber ich sehe den Grund nicht, wieso in Bibliotheken, die von Server-Agenten genutzt werden, keine UI-Klassen vorhanden sein dürfen.

@Bernhard
Ich sehe leider auch keinen Zusammenhang zwischen der Fehlermeldung und den UI-Klassen aber die Auslagerung der Routinen hat den Fehler behoben. Kann es vielleicht sein, dass die Bibliothek vielleicht einen Fehler hat ohne dass der Compiler einen Fehler anzeigt.

Rainer
Titel: Re: Fehler 151 - Cannot find external name
Beitrag von: Glombi am 18.07.06 - 11:06:28
In Notes 5 kommt leider diese Fehlermeldung.

Es gibt einen Workaround, wie man dennoch UI Klassen verwenden kann. Diese müssen als Variant deklariert sein.
Sauber ist das nicht.

Ich verwende immer eigene Backend- und Frontend Script-Bibliotheken. Nur die Backend-SB. dürfen in Agenten verwendet werden.

Andreas
Titel: Re: Fehler 151 - Cannot find external name
Beitrag von: ZaLudtske am 18.07.06 - 11:11:14
Danke für den Tip.

Ich werde auch gesonderte Bibliotheken für Front- und Back-End einführen.

Die Lösung mit 'Variant' als Datentyp sagt mir nämlich überhaupt nicht zu.

Rainer
Titel: Re: Fehler 151 - Cannot find external name
Beitrag von: Glombi am 18.07.06 - 11:13:24
Wegen Variant: Das habe ich entdeckt, als ich die R5 Mailschablone von Lotus/IBM durchforstet habe. Ab und zu sieht man dort solche Stunts.  ;D

Andreas
Titel: Re: Fehler 151 - Cannot find external name
Beitrag von: koehlerbv am 18.07.06 - 11:15:51
Ich habe so ein paar Routinen, die sowohl im FrontEnd (mit UI-Methoden!) als auch im Backend (ohne UI) laufen müssen und wegen des grossen Coding-Aufwandes nur einmal existieren sollen.
Das UI-Geraffel lasse ich dort erst zur Ausführung mit Execute in den Code 'rein, so dass das im Backend vollkommen "unsichtbar" ist.

Bernhard