Domino 9 und frühere Versionen > Administration & Userprobleme
Benötige Hilfe bei Script
Thomas Schulte:
Semaphorus hat leider recht, das ist Blödsinn, zumindest was die Bedingungen des Zählers der For Schleife in Script betrifft. Da war ich wohl geistig gerade bei einer anderen Sprache.
Was aber die Zählerei an sich betrifft habe ich recht. Die zusätzliche Addition ist an dieser Stelle vollkommen fehl am Platz. Also ist seine Aussage auch nur teilweise richtig.
Und eine Lösung gibt es auch. Ohne das Error Handling zu vergewaltigen.
DB auf nothing prüfen. Schaut im Prinzip so aus. ohne gewähr, nicht getested.
For iCount = 0 To iArray
Set oDb = oSession.getDatabase(sMailServer,sDb(iCount))
if not odb is nothing then
Call oUiWs.addDatabase(sMailServer,sDb(iCount))
Print (oDb.title+" wurde Ihrer Arbeitsoberfläche hinzugefügt.")
end if
Next
bificypdog:
Danke für die rege Anteilnahme und für die Unterstützung.
Ich denke, dass ich mich langsam dem Ziel nähere.
Ihr müsst mir aber nicht für meine Mut danken:
Ich kenn' mich schon ein wenig mit Lotus Script aus.
Bzw. ich weiss was die Befehle in dem Script bedeuten und wie es funktioniert.
Ich denke ihr kennt das: Quellcode lesen und verstehen ist etwas anderes, als Quellcode schreiben.
Ich benötige jedoch noch einmal eure Hilfe. Ich habe das Script nach Thomas' Vorschlag modifiziert.
--- Code: ---On Error Goto ErrorHandling
Redim sDb(2)
sDb(0) = "db1.nsf"
sDb(1) = "db2.nsf"
sDb(2) = "db3.nsf"
iArray = Ubound(sDb())-1
For iCount = 0 To iArray
Set oDb = oSession.getDatabase(sMailServer,sDb(iCount))
If Not oDb Is Nothing Then
Call oUiWs.addDatabase(sMailServer,sDb(iCount))
Print (oDb.title+" wurde Ihrer Arbeitsoberfläche hinzugefügt.")
End If
Next
ErrorHandling:
Print ("Eine Datenbank konnte nicht Ihrer Arbeitsoberfläche hinzugefügt werden.")
Resume
--- Ende Code ---
In meinem Praxisbeispiel war eine Datenbank für mich ohne Zugriff.
Beim "Set oDb" springt Notes direkt ins ErrorHandling.
Arbeit ich im ErrorHandling mit "Resume" bleibt der Ablauf im Errorhandling stecken. --> Endlosschleife.
Arbeite ich mit "Resume Next" springt Notes nach dem Set-Befehl in die IF-Abfrage und ich erhalte die Notes-typische Fehlermeldung, dass die Datenbank nicht geöffnet werden kann.
Also hänge ich am "Set oDB" fest. Würde ich ohne ErrorHandling arbeiten bzw. das ErrorHandling nach dem Set-Befehl abarbeiten, dann ensteht dort (beim Set) der Zugrifffehler.
Ich komme nicht zu IF-Abfage.
Ich weiss nicht mehr weiter.
bificypdog:
Zusammenfassung:
Ich habe das ErrorHandling nach Thomas' Vorschlag mal komplett weggelassen. Jedoch erhalte ich beim "Set oDb" direkt einen Zugriffsfehler.
Lass ich die Zeile weg, dann ich nicht mit "If Not oDb Is Nothing " arbeiten, weil die Datenbank ja noch nicht "gesetzt" wurde.
Wie mache ich das, dass ich keinen Fehler bei "Set oDB" erhalten?
Glombi:
Probier doch mal meinen Vorschlag aus...
Andreas
bificypdog:
@Glombi:
Ich habe deine Vorschläge mal ausprobiert.
--- Code: --- On Error Goto ErrorHandling
' Und hier beginnen die Array-assignments für die Datenbanken
Redim sDb(2) ' Hier wird die Größe des Array fest definiert (Anzahl der DB - 1)
sDb(0) = "db1.nsf"
sDb(1) = "db2.nsf"
sDb(2) = "db3.nsf"
' Wieviel Elemente hat der Array - 1 (da ein Array immer mit 0 beginnt muss hier 1 subtrahiert werden)
iArray = Ubound(sDb())-1
For iCount = 0 To iArray
Set oDb = oSession.getDatabase(sMailServer,sDb(iCount))
If Not oDb Is Nothing Then
Call oUiWs.addDatabase(sMailServer,sDb(iCount))
Print (oDb.title+" wurde Ihrer Arbeitsoberfläche hinzugefügt.")
End If
ErrorHandling:
Print ("Eine Datenbank konnte nicht Ihrer Arbeitsoberfläche hinzugefügt werden.")
Resume NextDB
NextDB:
iCount = iCount +1
Next
End Sub
--- Ende Code ---
Jedoch wird bei einer Datenbank MIT Zugriff auch das Errorhandling linear durchgeführt.
Ausserdem wird das ErrorHandling zweimal durchlaufen?
Und kann das sein, dass "iCount = iCount +1" überflüssig ist?
Soll ich vor dem Errorhandling ein zusätzliches "Next" setzen?
---
Wie lager ich das ErrorHandling denn programmiertechnisch 100%ig aus, so wie ein guter Programmierer es machen würde?
Irgendwie kommt mir das alles ein wenig provisorisch vor.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln