Autor Thema: Execute - Script-Code an Sub übergeben  (Gelesen 2984 mal)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Execute - Script-Code an Sub übergeben
« am: 05.09.04 - 17:48:46 »
Ich möchte ein spezielles String einer Sub übergeben.

Aktuell sieht das so aus:

A) Agent von dem aus ich die Sub aufrufe:
Code
Sub Initialize
   Dim strExecuteCode As String
   strExecuteCode = |"Some text: " + doc.Title(0)|
   Call MySub(strExecuteCode)
End Sub

B) In der Sub steht dann an entsprechender Stelle:
Code
   strExecuteCode = |strSubject = | + strExecuteCode
   'Msgbox strExecuteCode
   Execute strExecuteCode

Was mir hier noch nicht gefällt:
In der Sub müssen die Variablen "doc" und "strSubject" global definiert sein (damit hier Execute funktioniert) - die hätte ich aber gerne in der Sub selber.

Ist das überhaupt so der gängige Weg, um einer Sub/Function die Zusammensetzung eines Strings vorzugeben, oder gibt es da einen einfacheren Weg - ohne Execute zu verwenden?

Prinzipiell geht es hier darum, einer Sub/Function mitzugeben, wie sich ein String in der Sub/Function zusammensetzen soll (also aus Text und 1-x verschiedenen Feldinhalten eines Dokumentes). Dabei möchte ich möglichst variabel sein.
« Letzte Änderung: 05.09.04 - 17:50:41 von TMC »
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


elajen

  • Gast
Re:Execute - Script-Code an Sub übergeben
« Antwort #1 am: 06.09.04 - 09:07:08 »
Hallo,

die Frage ist ja eigentlich in welchem Kontext läuft die Funtion, die man mit excute ausführt. Nach dem, wie Du's beschreibst, denke ich, daß die Funktion genauso behandelt wird, wie die anderen Funktionen in dem Kontext woraus sie aufgerufen wird (also z.B. zum Global einer Maske ).
Das würde auch den Zugriff nur auf globale Variablen erklären.


Gruß von Ekki

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Execute - Script-Code an Sub übergeben
« Antwort #2 am: 06.09.04 - 09:34:30 »
Variable, die nicht nur innerhalb eines via Execute erst zur Laufzeit zu kompilierenden und auszuführenden Codes gültig sein sollen, müssen (logischerweise) global deklariert sein. Daran führt kein Weg vorbei.

Matthias, wenn es Dir "nur" um das Verketten von Strings aus n Feldern geht, dann kannst Du doch auch eine Funktion bauen, die in einem Array die Feldnamen, die zu berücksichtigen sind, enthalten.

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Execute - Script-Code an Sub übergeben
« Antwort #3 am: 06.09.04 - 21:24:24 »
Matthias, wenn es Dir "nur" um das Verketten von Strings aus n Feldern geht, dann kannst Du doch auch eine Funktion bauen, die in einem Array die Feldnamen, die zu berücksichtigen sind, enthalten.

Hab auch schon daran gedacht, aber das ist mir zu wenig flexibel.


Beispiel:
Ich möchte z.B. in den Strings haben:
"Text 1 " + doc.Status(0) + " ...." + doc.Subject(0)
oder
"Text"
oder
doc.Feld3(0) + " ...." + doc.Feld7(0) + doc.Feld9(0)

Also eine beliebige Kombination von Text und Feldinhalten.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Execute - Script-Code an Sub übergeben
« Antwort #4 am: 06.09.04 - 21:30:29 »
Naja, das meinte ich doch.
Dim aMyFields (0 to 3) As String
Dim strResult As String

aMyField (0) = "Status"
aMyField (1) = "Subject"
aMyField (2) = "Hints"

strResult = RetrieveFields (docMyDocument, aMyField)

Die Function garrabelt sich dann aus docMyDocument via GetItemValue (oder wie auch immer) das Zeugs dynamisch zusammen.
Ich kann da keinen Nachteil zu Execute erkennen.

Ciao,
Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Execute - Script-Code an Sub übergeben
« Antwort #5 am: 06.09.04 - 21:50:06 »
Kapier ich jetzt noch nicht ganz, Bernhard.

Ich hab hier also meinen Agenten:
Sub Initialize
   'hier irgend ein Code, um der Function zu übergeben, wie sich
   'das Zielstring zusammensetzen soll ...
   Call MyFunction( ??? )
End Sub

Die Function sieht z.B. so aus:
Function MyFunction( ??? as .....) as Variant
    Dim strResult as String
    strResult = ???
End Function


Wie kann ich der Function nun genau sagen, wie sich das String zusammensetzen soll (nach den o.g. Beispielen, die vorkommen könnten) ?

Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Execute - Script-Code an Sub übergeben
« Antwort #6 am: 06.09.04 - 22:00:21 »
Na, genau, wie ich es geschrieben habe:

Function RetrieveFields (docMyDocument as NotesDocument, aMyField as Variant)

Dim strResult As String
Dim iLoop as Integer

For iLoop = 0 to Ubound (aMyField)
   strResult = strResult = docMyDocument.GetItemValue (aMyField (0)) (0)
Next

Das nur ganz fix hingepinselt als Beispiel, was ich meine.

Hilft Dir das ?

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Execute - Script-Code an Sub übergeben
« Antwort #7 am: 06.09.04 - 22:11:20 »
Langsam komm ich drauf was Du meinst, danke  :D

Kleines Problem ist noch, dass ich ja auch Text noch übergeben will (vor / zwischen / nach den Feldern).

Kann ich aber evtl. über Präfixe lösen.

Dim aStringbestandteil (0 to 2) As String
aStringbestandteil(0) = "FieldValue.Subject"
aStringbestandteil(1) = " a bisserl Text dazwischen "
aStringbestandteil(2) = "FieldValue.Status"

If Left$(aStringbestandteil(i),11) = "FieldValue." Then
   Massagebox "You, Du bist ein Feldname"
Elde
   Massagebox "Du bist nur Text"
End if

Danke nochmal,
Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Execute - Script-Code an Sub übergeben
« Antwort #8 am: 06.09.04 - 22:31:35 »
Jo, das bietet viel Spielraum für Ausgestaltungen. Wobei aber natürlich auch die Execute-Variante locker klappen würde. Flexibler ist wahrscheinlich der Weg, auf dem dieser Thread momentan ist.

Du könntest ja auch "Lückenfüller" mit anführenden Sonderzeichen kennzeichenen: "~~" (die im realen Leben unwahrscheinliche "Doppel-Mathilde" (JEEEEEEEEEEEENS !) oder Chr$ (255) oder ...

Good luck, Matthias - und poste mal, wofür Du Dich entschieden hast  ;)

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Execute - Script-Code an Sub übergeben
« Antwort #9 am: 06.09.04 - 23:10:22 »
und poste mal, wofür Du Dich entschieden hast

Hab mich dann doch für die aktuelle Variante entschieden  ;)
Klar, klappt auch mit Execute, aber jetzt diese Lösung erscheint mir sauberer. Execute hat für mich auch hier einen faden Beigeschmack, weil z.B. Errorhandling nicht sauber möglich. Und der "User" der Function muss wissen, wie man das Execute-String aufbaut.
Aber so ist das ganz einfach: Willste Feldinhalt, dann setze den Lückenfüller (z.B. die Multiple-Mathilde ;D) ein, ansonsten schreib einfach den Text.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Execute - Script-Code an Sub übergeben
« Antwort #10 am: 08.09.04 - 19:08:05 »
 :)

Also die Doppel-Mathilde und der Lückenfüller sind schon ein hübsches Paar, jedenfalls gibt es sie jetzt auch im Wörterbuch .....

 :)
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 koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Execute - Script-Code an Sub übergeben
« Antwort #11 am: 08.09.04 - 20:04:47 »
Merci, Jens !

Bernhard

PS: Fand ich heute zufällig auf einer Website, die Namen deutet:
Bernhard = brutaler Schweizer  ;D

Für meinen Sohn gab es
Stefan = Fussballanhänger auf billigem Platz

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Execute - Script-Code an Sub übergeben
« Antwort #12 am: 08.09.04 - 20:18:54 »
Ach .... haben die denn bei Dir den erweiterten Namen mit -iner noch am Schluss gemeint? Versteh ich eigentlich nicht wirklich ....
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 koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Execute - Script-Code an Sub übergeben
« Antwort #13 am: 08.09.04 - 20:35:06 »
Na, die meinen wohl "Bern" und "hart".
Egal.

Bernhard

PS: Aber Bern ist eine wunderschöne Stadt !!!

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re:Execute - Script-Code an Sub übergeben
« Antwort #14 am: 08.09.04 - 21:12:39 »
Das will ich doch meinen! Auch wenns für mich bald nicht mehr ganz Bern sein wird .... sondern mehr auf dem Lande .. :)
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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz