AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
17.10.21 - 11:18:18
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Domino 9 und frühere Versionen
| |-+  ND9: Entwicklung (Moderatoren: Axel, eknori, Thomas Schulte, koehlerbv, m3)
| | |-+  Lotusscript über VBA
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Lotusscript über VBA  (Gelesen 3395 mal)
etofi
Frischling
*
Offline Offline

Beiträge: 47



« 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
Gespeichert
ascabg
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 3696


« Antworten #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
Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1224



« Antworten #2 am: 09.10.18 - 15:11:57 »

schau Dir mal diese Funktion an:
https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.1/basic/H_EVALUATE_METHOD_SESSION_COM.html
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.11
--
Nur ein toter Bug, ist ein guter Bug!
etofi
Frischling
*
Offline Offline

Beiträge: 47



« Antworten #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.
Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1224



« Antworten #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])")
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.11
--
Nur ein toter Bug, ist ein guter Bug!
etofi
Frischling
*
Offline Offline

Beiträge: 47



« Antworten #5 am: 09.10.18 - 16:13:59 »


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"
Gespeichert
etofi
Frischling
*
Offline Offline

Beiträge: 47



« Antworten #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.


Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1224



« Antworten #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
Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.11
--
Nur ein toter Bug, ist ein guter Bug!
etofi
Frischling
*
Offline Offline

Beiträge: 47



« Antworten #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?
Gespeichert
jBubbleBoy
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1224



« Antworten #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 » Gespeichert

Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.11
--
Nur ein toter Bug, ist ein guter Bug!
etofi
Frischling
*
Offline Offline

Beiträge: 47



« Antworten #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  Cheesy

Ist damit gelöst  Smiley Grin
« Letzte Änderung: 10.10.18 - 09:11:08 von etofi » Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: