Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: tabama am 15.01.04 - 09:55:50

Titel: Variable als Ausdruck verwenden
Beitrag von: tabama am 15.01.04 - 09:55:50
Hallo, vieleicht ist es ja nur ein kleines Problem, aber ich komme nicht dahinter:

Ich habe eine variable (oder ein Feld) in der eine Formel als String gespeichert ist. Diese Variable bzw. das Feld will ich nun zur Berrechnung verwenden. Beispiel:

dim wert1 as long
dim wert2 as long
dim formel as string
wert1 = 250
wert2 = 13
formel = "wert1 + wert2"

messagebox(formel)
Titel: Re:Variable als Ausdruck verwenden
Beitrag von: Driri am 15.01.04 - 09:57:37
So sollte es funktionieren :

dim wert1 as long
dim wert2 as long
dim formel as Long
wert1 = 250
wert2 = 13
formel = wert1 + wert2

Messagebox (CStr(formel))
Titel: Re:Variable als Ausdruck verwenden
Beitrag von: Glombi am 15.01.04 - 10:07:54
Sieh Dir mal die Script-Funktion Execute an. Damit sollte das gehen.
Titel: Re:Variable als Ausdruck verwenden
Beitrag von: tabama am 15.01.04 - 10:10:07
Danke,

manchmal ist man schon ganz schön blöd.
Titel: Re:Variable als Ausdruck verwenden
Beitrag von: tabama am 15.01.04 - 12:00:17
ich nochmal,
bin doch noch nicht fertig.
Mein Problem: die Formel steht in einem Feld und dann funkt das ganze nicht wie es Driri gepostet hat.

Ich habe dann den Tipp mit dem "execute" ausprobiert, kapiere den Syntax aber nicht so ganz.

Kann mir doch noch jemand helfen?
Titel: Re:Variable als Ausdruck verwenden
Beitrag von: ata am 15.01.04 - 13:13:16
... in einer Feldberechnung kannst du kein LS verwenden, sondern nur Formeln...

... mit LS sieht das dann so aus
Dim ws As New NotesUIWorkspace
Dim doc As NotesDocument
Dim wert1 as long
dim wert2 as long
dim formel as string
Dim vVResult as Variant

Set doc = ws.CurrentDocument.Document
wert1 = 250
wert2 = 13
doc.Wert1 = wert1
doc.wert2 = wert2
formel = "wert1 + wert2"
vResult = Evaluate( formel , doc )


ata

Titel: Re:Variable als Ausdruck verwenden
Beitrag von: tabama am 15.01.04 - 13:23:30
ist ja egal, ich kann ja den Feldinhalt mit "varialbe = doc.feld(0)" übernehmen aber:

Notes bringt bei " formel = "wert1 + wert2" den Fehler: "vResult = Evaluate( formel , doc )"

und genau das ist mein Problem. Die Formel ist nicht immer gleich (sprich konstant). Sonst könnte ich sie ja fest ins script übernehmen.

Vieleicht klappts ja doch irgendwie.
Titel: Re:Variable als Ausdruck verwenden
Beitrag von: ata am 15.01.04 - 13:44:15
... ich verwende daß bei parametrisierten Excel-Exporten. Dabei werden in einem Feld Formeln hinterlegt und mit Evaluate auf das Dokument angewendet. Bei der einfachen Formel von dir dürfte das kein Problem sein. Allerdings hat der Evaluate auch seine Grenzen - keine UI-Befehle zum Beispiel -

... vielleicht brauch ich mehr Details. Wenn du mir eine abgespeckte Versiondeines Codes zur Verfügung stellst, dann kann ich dir vielleicht weiter helfen - auch was deine Fehlermeldung betrifft - wie heißt die denn im Wortlaut?

ata
Titel: Re:Variable als Ausdruck verwenden
Beitrag von: tabama am 15.01.04 - 13:53:35
Hier meine Aufgabe:

Code
Sub Click(Source As Button)
     Dim workspace As New NotesUIWorkspace
     Dim uidoc As NotesUIDocument
     Dim doc As NotesDocument     
     Set uidoc = workspace.CurrentDocument
     Set doc = uidoc.document
     
     'das Document hat Felder mit vorhandenen Werten
     'die ich der Einfachheithalber hier setze:
     doc.wert1 = 200
     doc.wert2 = 300
     doc.formel = "doc.wert1(0) + doc.wert2(0)"
     
     Dim ergebnis As Variant
     ergebnis = doc.formel(0)
     Messagebox(ergebnis)  
     
End Sub



Das Probelm:
ergebnis ist nicht 500, sondern der String "doc.wert1(0) + doc.wert2(0)"
Titel: Re:Variable als Ausdruck verwenden
Beitrag von: koehlerbv am 15.01.04 - 13:57:17
Na, da macht doch Notes genau das, was Du von ihm verlangt hast.
Die Lösung wurde gleich zu Beginn von Driri gepostet:

doc.formel = Cstr (doc.Wert1 (0) + doc.Wert2(0))

Bernhard
Titel: Re:Variable als Ausdruck verwenden
Beitrag von: tabama am 15.01.04 - 14:01:16
eben nicht, da das "+" auch mal ein "/" oder ein "*" sein kann und die Formel durchaus mehrere Operationen enthält.
Titel: Re:Variable als Ausdruck verwenden
Beitrag von: ata am 15.01.04 - 14:40:21
... jetzt wird das klarer...

... du musst den kompletten Code in einem Feld generieren und dann mit Execute ausführen. Unter dem kompletten Code verstehe ich die Deklaration der Variablen und Initialisierungen. Dann liest du den Feldinhalt mit dem kompletten Code aus und übergibst dies der Funktion Execute...

ata
Titel: Re:Variable als Ausdruck verwenden
Beitrag von: tabama am 15.01.04 - 15:02:07
leider kapiere ich aber den Syntax von execute nicht so ganz (trotz Buch mit deutscher Beschreibung)

Wenn möglich, bitte den Code für mein Beispiel mal liefern.

Danke
Titel: Re:Variable als Ausdruck verwenden
Beitrag von: tabama am 26.01.04 - 13:50:45
Hallo,

ich nochmal. Hab's immer noch nicht.
Vielleicht kann mir doch noch jemand helfen.
Titel: Re:Variable als Ausdruck verwenden
Beitrag von: Glombi am 26.01.04 - 13:59:40
Execute verlangt einen String als Parameter. Wenn Du Deine Formel in einem Feld hast, dann musst Du den Feldwert übergeben.

Bsp.:
Formel ist im Feld "Formel"

Dann

   Dim ws As New NotesUIWorkspace
     Dim uidoc As NotesUIDocument
     Dim doc As NotesDocument
     
     Dim ret As Integer
     
     Set uidoc = ws.CurrentDocument
     Set doc = uidoc.Document
     
     ret = Execute( doc.Formel(0) )


Andreas
Titel: Re:Variable als Ausdruck verwenden
Beitrag von: tabama am 26.01.04 - 14:17:02
funkts leider nicht.
liegt wahrscheinlich daran, daß innerhalb des execute die doc-items nicht verfügbar sind.

Titel: Re:Variable als Ausdruck verwenden
Beitrag von: Glombi am 26.01.04 - 14:27:19
Du musst natürlich in dem Feld alles deklarieren, als muss in dem Feld folgendes stehen:

Dim workspace As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument    
    Dim ergebnis As Variant

    Set uidoc = workspace.CurrentDocument
    Set doc = uidoc.document
   
    'das Document hat Felder mit vorhandenen Werten
    'die ich der Einfachheithalber hier setze:
    doc.wert1 = 200
    doc.wert2 = 300    
   
   ergebnis = doc.wert1(0) + doc.wert2(0)
    Messagebox(ergebnis)  


Andreas
Titel: Re:Variable als Ausdruck verwenden
Beitrag von: tabama am 27.01.04 - 08:41:37
Danke!

jetzt hat's endlick Klick gemacht.