Autor Thema: Benötige Hilfe bei Script  (Gelesen 15357 mal)

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Benötige Hilfe bei Script
« Antwort #20 am: 31.10.03 - 11:03:26 »
Nein, im Bereich Entwicklung 6 ist bereits ein Thread zur Fehlerbehandlung entstanden, wo das Thema ergreifend diskutiert wird. Das hat ja wirklich mit einem Problem begonnen hier.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

MOD

  • Gast
Re:Benötige Hilfe bei Script
« Antwort #21 am: 31.10.03 - 11:08:15 »
Möchte hier nicht offtopic werden.
Verstehe zwar deinen Ansatz, doch habe ich eine andere Auffassung von diesem Problem.
Alleine der Betreff (Benötige Hilfe bei Script) verweist auf einen anderen Bereich dieses Forums. Nehme ich dann noch die Ansätze zur Problemlösung wird diese Vermutung bestätigt.

 ;D MOD

@Semeaphorus
Ich kann mich natürlich auch total irren.  ;D

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Benötige Hilfe bei Script
« Antwort #22 am: 31.10.03 - 11:11:45 »
Neinnein, das ist eindeutig Grauzone und solche Fälle werden wir immer mal wieder haben. Jetzt noch verschieben macht in meinen Augen keinen Sinn, und beim Start des Thread war das ja eigentlich nicht azusehen. Hätte er im Title geschrieben "Problem mit Script", dann wäre Dein Argument etwas schwieriger .... aber lass uns nicht Haare spalten, ich bin einfach dagegen, das jetzt noch zu verschieben.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
@all und natürlich auch an bificypdog
« Antwort #23 am: 02.11.03 - 09:34:59 »
Der ganze Thread liest sich echt lustig. Dummerweise ist dem Manne/Fraue mit der ganzen Diskussion nicht geholfen.
Im Prinzip habt ihr recht, wenn man es nicht kann soll man es sein lassen, speziell dann wenn man "nur Scripte zusammenbaut". hut ab übrigens vor deinem Mut bificydog. Das habe ich mich in noch keiner Sprache die ich kann undich kann einige getraut. Sourcecode den ich nicht verstehe in einer Sprache die ich nicht beherrsche umzubauen. Aber das ist ein anderes Thema und dafür hast du hier ja jetzt Prügel genug bezogen.

Dein Problem ist allerdings damit nicht gelöst und dabei ist es eigentlich soooo einfach.

Deine For Next Schleife soll bis 25 Zählen. Wenn man es genau nimmt bis 24.
Die Abbruch Bedingung ist dann gegeben wenn I = Ubound(Array). Jetzt zählst du dummerweise mit i= i+1 immer noch eins dazu. Noch eins deswegen, weil eine For next Schleife in Script selbstständig zählt. Deine Addition ist also überflüssig. Deine Fehler kommt deswegen zustande, weil die Abbruchbedingung nie erfüllt wird. Der Zählt halt nicht 1,2,3,.....24,25 Abbruch sondern
2,4,6,....24,26,28.... Error.
Also hast du geloost.
Die Art wie Abbruchbedingungen in For next Schleifen zu setzen sind ist allerdings nicht nur ein Basic bei der Lotus Script Programmierung, sondern auch der Programmierung allgemein.
Das macht man nämlich nie so for i=0 to i=x sondern immer so for i=0 to i>x.

So Ende des Kommentars. Immerhin ist Sonntag Morgen.

Thomas
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Benötige Hilfe bei Script
« Antwort #24 am: 02.11.03 - 21:12:12 »
Thomas, das ist leider Unsinn.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re:Benötige Hilfe bei Script
« Antwort #25 am: 03.11.03 - 10:19:48 »
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  
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

bificypdog

  • Gast
Re:Benötige Hilfe bei Script
« Antwort #26 am: 03.11.03 - 12:46:23 »
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


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

  • Gast
Re:Benötige Hilfe bei Script
« Antwort #27 am: 03.11.03 - 12:50:57 »
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

  • Gast
Re:Benötige Hilfe bei Script
« Antwort #28 am: 03.11.03 - 12:51:08 »
Probier doch mal meinen Vorschlag aus...

Andreas
« Letzte Änderung: 03.11.03 - 12:51:40 von Glombi »

bificypdog

  • Gast
Re:Benötige Hilfe bei Script
« Antwort #29 am: 03.11.03 - 14:25:46 »
@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

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.

Glombi

  • Gast
Re:Benötige Hilfe bei Script
« Antwort #30 am: 03.11.03 - 14:30:10 »
Stimmt, dass Error Handling ist falsch platziert.

Das iCount = iCount +1    wird benötigt

So wäre es richtig:

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      
     
     
NextDB:
      iCount = iCount +1    
     
   Next

exit sub

     
ErrorHandling:          
      Print ("Eine Datenbank konnte nicht Ihrer Arbeitsoberfläche hinzugefügt werden.")    
      Resume NextDB

   
End Sub
« Letzte Änderung: 03.11.03 - 14:30:47 von Glombi »

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Benötige Hilfe bei Script
« Antwort #31 am: 03.11.03 - 14:35:18 »
Das si t noch falsch:
Zitat
' Wieviel Elemente hat der Array - 1 (da ein Array immer mit 0 beginnt muss hier 1 subtrahiert werden)
  iArray = Ubound(sDb())-1

UBound (sDB) = 2

HTH,
Bernhard

bificypdog

  • Gast
Re:Benötige Hilfe bei Script
« Antwort #32 am: 03.11.03 - 14:40:44 »
Das si t noch falsch:
Zitat
' Wieviel Elemente hat der Array - 1 (da ein Array immer mit 0 beginnt muss hier 1 subtrahiert werden)
  iArray = Ubound(sDb())-1

UBound (sDB) = 2

HTH,
Bernhard

Das verstehe ich jetzt nicht.
Soll ich "UBound(sDB)=2" im Script einfügen? Das dürfte doch nicht funktionieren?
Oder willst du mich auf irgend etwas aufmerksam machen?

Offline koehlerbv

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Benötige Hilfe bei Script
« Antwort #33 am: 03.11.03 - 14:42:41 »
In Deinem Array ergibt LBound 0 und UBound 2.

Bernhard

bificypdog

  • Gast
Re:Benötige Hilfe bei Script
« Antwort #34 am: 03.11.03 - 14:43:00 »
Stimmt, dass Error Handling ist falsch platziert.

Das iCount = iCount +1    wird benötigt

So wäre es richtig:

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      
     
     
NextDB:
      iCount = iCount +1    
     
   Next

exit sub

     
ErrorHandling:          
      Print ("Eine Datenbank konnte nicht Ihrer Arbeitsoberfläche hinzugefügt werden.")    
      Resume NextDB

   
End Sub


JUCHU.
Ich bin jetzt wirklich ganz nah dran.
Jedoch läuft die Schleife wg. dem "iCount=iCount+1" jetzt in 2er Schritten.
Bist du sicher, dass ich das benutzen soll?
Oder geht es nur darum, dass hinter der Sprungmarke noch etwas steht?

bificypdog

  • Gast
Re:Benötige Hilfe bei Script
« Antwort #35 am: 03.11.03 - 14:44:27 »
In Deinem Array ergibt LBound 0 und UBound 2.

Bernhard

Also weg mit dem "-1" beim UBound in meinem Script? Gelle?

Glombi

  • Gast
Re:Benötige Hilfe bei Script
« Antwort #36 am: 03.11.03 - 14:50:08 »
Ubound(sDb())-1
ist natürlich Schrott, also
iArray = Ubound(sDb())

Andreas
« Letzte Änderung: 03.11.03 - 14:50:28 von Glombi »

Glombi

  • Gast
Re:Benötige Hilfe bei Script
« Antwort #37 am: 03.11.03 - 14:52:55 »
Hier was ohne counter:

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"      
 
 
  Forall d in sDb
     
      Set oDb = oSession.getDatabase(sMailServer,cstr(d))
     
     
      If Not oDb Is Nothing Then
        Call oUiWs.addDatabase(sMailServer,cstr(d))
        Print (oDb.title+" wurde Ihrer Arbeitsoberfläche hinzugefügt.")    
       
      End If      
   
     
NextDB:
     
end forall

exit sub

     
ErrorHandling:          
      Print ("Eine Datenbank konnte nicht Ihrer Arbeitsoberfläche hinzugefügt werden.")    
      Resume NextDB

 
End Sub
« Letzte Änderung: 03.11.03 - 14:53:27 von Glombi »

bificypdog

  • Gast
Re:Benötige Hilfe bei Script
« Antwort #38 am: 03.11.03 - 14:59:51 »
ICH BIN AM ZIEL


ICH LIEBE EUCH ALLE
« Letzte Änderung: 03.11.03 - 15:04:12 von bificypdog »

bificypdog

  • Gast
Re:Benötige Hilfe bei Script
« Antwort #39 am: 03.11.03 - 15:22:43 »
SNÜFF. Ich hab noch was. Aber zur Abwechslung mal etwas ganz anderes.
Schaut doch bitte mal in den Anhang.

Beim "Call oReg.getUserInfo" stürzt Notes mit einem RedScreenOfDeath ab.

Bisher habe ich das Script unter OS/2 Notes 4.6.7 getestet.
Ich habe es jetzt unter Windows XP und 2000 in Notes 5 Private Ed. und Notes 5.0.10 (deutsch) getestet und sehe nur den RedScreen.

So langsam verzweifel ich.

- Der Fehler taucht auch im "Nicht-Debugging-Modus" auf.
- Die Schaltfläche (in einem Mail-Dok) wurde auf verschiedenen Rechnern getestet.
- Unterschiedliche Mail-DBs
- Fix-Up gemacht
- Script auch schon in anderen Button hinterlegt (Copy&Paste)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz