Domino 9 und frühere Versionen > Administration & Userprobleme

Benötige Hilfe bei Script

<< < (2/9) > >>

Glombi:
Hi Jens,
in diesem Fall würde ich das programmierte Error Handling mal tolerieren. Es macht Sinn, denn es gibt wohl sonst keine Möglichkeit zu prüfen, ob der User das Recht hat, auf die Datenbank zuzugreifen.
Falls der User nicht das Recht hat, erzeugt

oDb = oSession.getDatabase(sMailServer,sDb(iCount))

oder spätestens

          ' Wenn die DB noch nicht offen ist => Öffnen
      If oDb.isopen=False Then
         Call oDb.open("","")

einen Fehler.

Sauberer wäre es allerdings, nicht On Error Goto... zu verwenden, sondern explizit die Fehlernummer abzufragen
Also
On Error 4000 goto...
(wobei ich nicht weiß ob tatsächlich die 4000 kommt, das müsste man ausprobieren).

Andreas

Semeaphoros:
Das war ja nicht, was ich angekreidet habe. Die Position innerhalb eines Loop und das fehlende (bzw. auskommentierte) Resume stellen das Problem dar. Mit dem "nackten" on Error könnte man zur Not noch leben, ist ja eigentlich egal, warum man die DB nicht erreicht, sauberer ist Deine Variante in jedem Fall.

koehlerbv:
Oh Mann, Jens, Du hast vollkommen recht. Soweit hatte ich noch gar nicht geschaut (keine Zeit).
Jedenfalls ist das ein ErrorHandling, dass bestimmt noch Kopfzerbrechen bereiten wird.
Beweis: Es gibt keinen Grund, daß die Limits von Integer erreoicht werden - es gibt ja nur 26 hinzuzufügende DBs.
Long hilft also gar nicht weiter - es dauert nur erheblich länger bis zur Fehlermeldung.

Bye,
Bernhard



PS: By the way - es heisst auch "Filiale" und nicht "Fililale" ;-)

Glombi:
Ich glaube, uns liegt nicht der Originalcode vor sondern eine abgespeckte Version. Oder bificypdog?

Ausserdem wird es selbst nicht mit Long gehen, da ein Array folgende Limitierungen hat:

Bounds of a dimension: -32,768 to 32,767 (the range of values of the Integer data type)

Und dann ist das On Error... natürlich fatal, da der Fehler nicht wegen des fehlenden Zugriffs auftritt sondern wegen des Overflows.

Andreas

bificypdog:
Ich muss etwas hinzufügen:
Der ursprüngliche Ersteller des Scripts hat seine Arbeit sehr gut gemacht.
Jedoch war ich anschließend noch mal dran und habe drei Scripts zusammengefasst.

Was wichtiges:
Das Resume habe ich nur zum Debuggen auskommentiert.
Beim Posten des Beitrags habe ich vergessen den "REM" zu entfernen.

Das Script zählt so hoch (hier "nur" bis 32767), weil Notes in folgender Schleife nach dem ersten Durchlauf festsitzt:


--- Code: ---ErrorHandling:          
          ' Der Trick ist die Nutzung der Sprungmarke. Wenn die DB nicht geöffnet werden darf, dann wird hierhin verzweigt.
          ' Somit wird die Schleife nicht verlassen und der Array hochgecountet.
      iCount = iCount + 1
'          Resume
   Next  

--- Ende Code ---

Ihr seid doch Profis. Könntet ihr das Script mal ausprobieren? Bitte?

Ich habe übrigens nichts weggelassen. Ich habe nur die DB-Namen und den Namen der Konstante verändert. Man muss ja nicht gleich wissen, worum es hier geht.

Danke.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln