Autor Thema: Variable als Ausdruck verwenden  (Gelesen 4486 mal)

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Variable als Ausdruck verwenden
« 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)

Driri

  • Gast
Re:Variable als Ausdruck verwenden
« Antwort #1 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))

Glombi

  • Gast
Re:Variable als Ausdruck verwenden
« Antwort #2 am: 15.01.04 - 10:07:54 »
Sieh Dir mal die Script-Funktion Execute an. Damit sollte das gehen.

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Re:Variable als Ausdruck verwenden
« Antwort #3 am: 15.01.04 - 10:10:07 »
Danke,

manchmal ist man schon ganz schön blöd.

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Re:Variable als Ausdruck verwenden
« Antwort #4 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?

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Variable als Ausdruck verwenden
« Antwort #5 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

Grüßle Toni :)

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Re:Variable als Ausdruck verwenden
« Antwort #6 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.

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Variable als Ausdruck verwenden
« Antwort #7 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
Grüßle Toni :)

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Re:Variable als Ausdruck verwenden
« Antwort #8 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)"

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Variable als Ausdruck verwenden
« Antwort #9 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

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Re:Variable als Ausdruck verwenden
« Antwort #10 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.

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Variable als Ausdruck verwenden
« Antwort #11 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
Grüßle Toni :)

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Re:Variable als Ausdruck verwenden
« Antwort #12 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

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Re:Variable als Ausdruck verwenden
« Antwort #13 am: 26.01.04 - 13:50:45 »
Hallo,

ich nochmal. Hab's immer noch nicht.
Vielleicht kann mir doch noch jemand helfen.

Glombi

  • Gast
Re:Variable als Ausdruck verwenden
« Antwort #14 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

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Re:Variable als Ausdruck verwenden
« Antwort #15 am: 26.01.04 - 14:17:02 »
funkts leider nicht.
liegt wahrscheinlich daran, daß innerhalb des execute die doc-items nicht verfügbar sind.


Glombi

  • Gast
Re:Variable als Ausdruck verwenden
« Antwort #16 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

Offline tabama

  • Aktives Mitglied
  • ***
  • Beiträge: 233
  • Geschlecht: Männlich
  • hier werden Sie geholfen
Re:Variable als Ausdruck verwenden
« Antwort #17 am: 27.01.04 - 08:41:37 »
Danke!

jetzt hat's endlick Klick gemacht.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz