Autor Thema: Fehler 151 - Cannot find external name  (Gelesen 7349 mal)

Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
Fehler 151 - Cannot find external name
« 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
Rainer Zaske

MCSD - C#

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Fehler 151 - Cannot find external name
« Antwort #1 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
Grüßle Toni :)

Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
Re: Fehler 151 - Cannot find external name
« Antwort #2 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
Rainer Zaske

MCSD - C#

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Fehler 151 - Cannot find external name
« Antwort #3 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

Glombi

  • Gast
Re: Fehler 151 - Cannot find external name
« Antwort #4 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

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Fehler 151 - Cannot find external name
« Antwort #5 am: 18.07.06 - 10:41:44 »
Dann passt die Fehlermeldung aber gar nicht, Andreas ...

Bernhard

Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
Re: Fehler 151 - Cannot find external name
« Antwort #6 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
Rainer Zaske

MCSD - C#

Glombi

  • Gast
Re: Fehler 151 - Cannot find external name
« Antwort #7 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

Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
Re: Fehler 151 - Cannot find external name
« Antwort #8 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
Rainer Zaske

MCSD - C#

Glombi

  • Gast
Re: Fehler 151 - Cannot find external name
« Antwort #9 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

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Fehler 151 - Cannot find external name
« Antwort #10 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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz