Autor Thema: Lotusscript über VBA  (Gelesen 5546 mal)

Offline etofi

  • Frischling
  • *
  • Beiträge: 47
Lotusscript über VBA
« am: 09.10.18 - 14:09:15 »
Hallo zusammen,

nachdem ich nun nach über einer Stunde Suche nichts gefunden habe,
wollte ich mal fragen ob des was ich vor habe überhaupt möglich ist.

Anbei mein aktuelles Beispiel:

Code
'Holen einer aktiven Notessession
Set objNotes = GetObject("", "Notes.NotesSession")

'Verweisen auf die gewünschte Datenbank
Set LNdb = objNotes.GETDATABASE(strServerName, strDbName)

If Not (LNdb Is Nothing) Then

    Set LNView = LNdb.GETVIEW("($All)")
    
    strFilter = "Form = ""Maske"" & Standard = ""ja"""
    Set LNView = LNdb.SEARCH(strFilter, Nothing, 0)

    If LNView Is Nothing = False Then
            
        'Einlesen des ersten Dokuments
        Set LNDoc = LNView.GETFIRSTDOCUMENT
            
        Do While Not LNDoc Is Nothing
                
                Set LNItem = LNDoc.GETFIRSTITEM("DokID")
                If LNItem Is Nothing = False Then
                    Debug.Print LNItem.Text
                End If
                
                Set LNDoc = LNView.GETNEXTDOCUMENT(LNDoc)
           
        Loop
            
    End If

End If

Damit kann ich problemlos alle Felder eines Dokuments auslesen.
Die Frage ist nun ob ich auch das Ergebnis eines Lotusscriptes auslesen kann.

So was in der Art:

Code
Set LNItem = LNDoc.GETFIRSTITEM("@DbLookup("""":""NoCache";"""";""LUMA"";ZLangName;""OES"";[FAILSILENT])")

Geht so etwas überhaupt?
Und wenn ja wäre ich für ein kurzes Besipiel sehr dankbar.

Grüße
Eric

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.696
  • Geschlecht: Männlich
Re: Lotusscript über VBA
« Antwort #1 am: 09.10.18 - 14:14:36 »
Hallo,

Da du "Set LNItem = ..." verwendest, kannst du das Ergebnis ebenso abfragen, wie du das bei der View bereits tust.

Hier fragst du n deinem Code doch auch "If LNView Is Nothing"

Was mich an dem Code aber ein wenig verwundert ist, wie du diese Abfragen gestaltest.

Auch in VBA sollte eine Abfrage, ob ein Objekt gesetzt ist mit "If Not LNView Is Nothing" möglich sein.


Andreas

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline etofi

  • Frischling
  • *
  • Beiträge: 47
Re: Lotusscript über VBA
« Antwort #3 am: 09.10.18 - 16:01:19 »
Hier fragst du n deinem Code doch auch "If LNView Is Nothing"
Was mich an dem Code aber ein wenig verwundert ist, wie du diese Abfragen gestaltest.
Auch in VBA sollte eine Abfrage, ob ein Objekt gesetzt ist mit "If Not LNView Is Nothing" möglich sein.

Du hast recht der Code ist etwas umständlich.
Entschlackt sähe das so aus:

Code
'Holen einer aktiven Notessession
Set objNotes = GetObject("", "Notes.NotesSession")

'Verweisen auf die gewünschte Datenbank
Set LNdb = objNotes.GETDATABASE(strServerName, strDbName)

If Not (LNdb Is Nothing) Then
    
    strFilter = "Form = ""Maske"" & Standard = ""ja"""
    Set LNGefiltert = LNdb.SEARCH(strFilter, Nothing, 0)

    If Not LNGefiltert Is Nothing Then
            
        'Einlesen des ersten Dokuments
        Set LNDoc = LNGefiltert.GETFIRSTDOCUMENT
            
        While Not LNDoc Is Nothing
                
               Set LNItem = LNDoc.GETFIRSTITEM("DokID")
                If LNItem Is Nothing = False Then
                    Debug.Print LNItem.Text
                End If
                
                Set LNDoc = LNGefiltert.GETNEXTDOCUMENT(LNDoc)

        Wend
            
    End If

End If

Da du "Set LNItem = ..." verwendest, kannst du das Ergebnis ebenso abfragen, wie du das bei der View bereits tust.

Das habe ich nicht verstanden. Meinst Du so.
Code
Set LNItem = LNDoc.GETFIRSTITEM("@DbLookup("""":""NoCache";"""";""LUMA"";ZLangName;""OES"";[FAILSILENT])")

Das liefert nämlich kein Ergebnis.

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Lotusscript über VBA
« Antwort #4 am: 09.10.18 - 16:06:48 »
beschreibe mal mit Worten was Du damit erreichen möchtest:
Code
Set LNItem = LNDoc.GETFIRSTITEM("@DbLookup("""":""NoCache";"""";""LUMA"";ZLangName;""OES"";[FAILSILENT])")
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline etofi

  • Frischling
  • *
  • Beiträge: 47
Re: Lotusscript über VBA
« Antwort #5 am: 09.10.18 - 16:13:59 »
schau Dir mal diese Funktion an:
https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.1/basic/H_EVALUATE_METHOD_SESSION_COM.html


Leider funktioniert das nicht.
Code
test = objNotes.Evaluate("@DbLookup("""":""NoCache";"""";""LUMA"";ZLangName;""OES"";[FAILSILENT])", LNDoc)
Debug.Print test

Spuckt mir die Fehlermeldung "Laufzeitfehler '438': Objekt unterstützt diese Eigenschaft oder Methode nicht"

Offline etofi

  • Frischling
  • *
  • Beiträge: 47
Re: Lotusscript über VBA
« Antwort #6 am: 09.10.18 - 16:27:29 »
beschreibe mal mit Worten was Du damit erreichen möchtest:
Code
Set LNItem = LNDoc.GETFIRSTITEM("@DbLookup("""":""NoCache";"""";""LUMA"";ZLangName;""OES"";[FAILSILENT])")

Also innerhalb von Notes spuckt mir das LotusScript
@DbLookup("":"NoCache";"";"LUMA";ZLangName;"OES";[FAILSILENT])
die OE Nummer zum ZLangnamen aus.
Wenn ich das richtig verstehe sucht er dazu in der View "OES" nach dem "ZLangName" und gibt den Wert von "LUMA" aus.

Ich möchte nun alle Dokumente per VBA auszulesen und beim Auslesen des aktuellen Dokumentes gleich das Ergebnis dieses LotusScript in ein Feld schreiben.



Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Lotusscript über VBA
« Antwort #7 am: 09.10.18 - 17:08:11 »
OK - dann gibt es für dich 2 Möglichkeiten:
1. du steigst von der OLE-Anbindung auf COM um
2. du schreibst in Excel die @DBLookup-Funktion nach
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline etofi

  • Frischling
  • *
  • Beiträge: 47
Re: Lotusscript über VBA
« Antwort #8 am: 09.10.18 - 17:19:35 »
OK - dann gibt es für dich 2 Möglichkeiten:
1. du steigst von der OLE-Anbindung auf COM um
2. du schreibst in Excel die @DBLookup-Funktion nach

Da ich nicht nur die @DBLookup Funktion brauchen würde ist Variante 1 interessanter.
Gibt es da ne gutes Beispiel für VBA?

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Lotusscript über VBA
« Antwort #9 am: 09.10.18 - 17:28:21 »
in Excel unter Extras/Verweise musst Du "Lotus.Domino Objects" auswählen. Eine NotesSession wird dann so erstellt:
Code
Dim se As New NotesSession
se.Initialize
Rest ist dann fast so als wenn man in Notes programmiert.
« Letzte Änderung: 09.10.18 - 17:29:59 von jBubbleBoy »
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline etofi

  • Frischling
  • *
  • Beiträge: 47
Re: Lotusscript über VBA
« Antwort #10 am: 10.10.18 - 09:09:01 »
in Excel unter Extras/Verweise musst Du "Lotus.Domino Objects" auswählen. Eine NotesSession wird dann so erstellt:

Cool vielen Dank. Dann funktioniert Evaluate auch  :D

Ist damit gelöst  :) ;D
« Letzte Änderung: 10.10.18 - 09:11:08 von etofi »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz