Autor Thema: Formel in Lotus Script ausführen  (Gelesen 7561 mal)

Offline dani_blues

  • Frischling
  • *
  • Beiträge: 42
Formel in Lotus Script ausführen
« am: 10.07.08 - 13:22:49 »
Hallo zusammen, ich habe bereits in diesem Thread http://atnotes.de/index.php?topic=41643.0 nach einer Lösung für mein Problem gefragt.

Nachdem dort keine Antwort kam, probier ich es jetzt einfach über einen neuen Thread, da es sich ja eigentlich um ein neues Problem handelt.

Meine Frage: Wie bekomme ich diese Formel in das Exiting eines Feldes? Da geht nur Lotus Script.

@SetField("alter";@DbLookup("":"NoCache"; ""; "Ansicht"; konvert1_2; "Alterandersdok"));
@If(@IsError(alter);@Prompt([Ok];"Hinweis";"Keine Übereinstimmung gefunden");"")

Gruss und Danke
Dani

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Formel in Lotus Script ausführen
« Antwort #1 am: 10.07.08 - 13:27:41 »
Im anderen Thread ist Dir aber auch schon gesagt worden, dass Dein Konstrukt im Exiting Event nichts taugt. Kein Benutzer ist verpflichtet, das Feld auch zu verlassen.

Bau das in LS (NotesView.GetDocumentByKey) ins PostRecalc rein, dann wird das auch im QuerySave ausgeführt und bei F9. Und ins Exiting packst Du ein NotesUIWorkspace.ViewRefresh ein - das triggert dann das PostRecalc beim Verlassen des Feldes.

Bernhard

Offline dani_blues

  • Frischling
  • *
  • Beiträge: 42
Re: Formel in Lotus Script ausführen
« Antwort #2 am: 10.07.08 - 14:24:04 »
Dankeschön!

Wenn ich nun diesen Code hinter eine Schaltfläche zum testen lege, erscheint erst der Fehler: Object variable not set
danach: Invalid key value type.

Hängt es wohl mit key = konvert_z1    zusammen?
konvert_z1 ist ein Feld.



Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim doc As NotesDocument
   key =  konvert_z1
   Set db = session.CurrentDatabase
   Set view = db.GetView ("VorbelegteAlterView" )
   Set doc = view.GetDocumentByKey (key )
   If Not (doc Is Nothing) Then
      Messagebox "$" & doc.GetItemValue ("Alter")(0),, _
      "Alter"
   Else
      Messagebox "VorbelegteAlterView " + key,, "Not found"
   End If
End Sub

W

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim doc As NotesDocument
   key =  konvert_z1
   Set db = session.CurrentDatabase
   Set view = db.GetView ("VorbelegteAlterView" )
   Set doc = view.GetDocumentByKey (key )
   If Not (doc Is Nothing) Then
      Messagebox "$" & doc.GetItemValue ("Alter")(0),, _
      "Alter"
   Else
      Messagebox "VorbelegteAlterView " + key,, "Not found"
   End If
End Sub

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Formel in Lotus Script ausführen
« Antwort #3 am: 10.07.08 - 14:28:40 »
Na dann würde ich das Feld "konvert_z1" auch als solches verwenden NotesDocument.GetItemValue(...).

Im Gegensatz zur @-Formelsprache stehen einem die Felder in Lotusscript nicht automatisch als Variablen zur Verfügung.

« Letzte Änderung: 10.07.08 - 14:30:19 von m3 »
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Formel in Lotus Script ausführen
« Antwort #4 am: 10.07.08 - 14:29:01 »
Zitat
Object variable not set

Benutze Option Declare und den debugger. Dann lösen sich solche Fehler sofort in Wohlgefallen auf.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline dani_blues

  • Frischling
  • *
  • Beiträge: 42
Re: Formel in Lotus Script ausführen
« Antwort #5 am: 10.07.08 - 14:41:54 »
Bei dem NotesItem.... kommt lt Debugger ein Variant does not contain an object

Das Script sieht so aus:

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim doc As NotesDocument
   NotesDocument.GetItemValue(konvert_z1)
   key =  konvert_z1
   Set db = session.CurrentDatabase
   Set view = db.GetView ("VorbelegtealterView" )
   Set doc = view.GetDocumentByKey (key )
   If Not (doc Is Nothing) Then
      Messagebox "$" & doc.GetItemValue ("alter")(0),, _
      "alter"
   Else
      Messagebox "VorbelegtealterView " + key,, "Not found"
   End If
End Sub

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Formel in Lotus Script ausführen
« Antwort #6 am: 10.07.08 - 14:42:58 »
Warum sieht das immer noch so aus? Martin hat doch den Fehler schon genannt samt Lösung.

Bernhard

Offline dani_blues

  • Frischling
  • *
  • Beiträge: 42
Re: Formel in Lotus Script ausführen
« Antwort #7 am: 10.07.08 - 14:49:21 »
Ja aber ich hab doch das Feld konvert_z1 als Variable NotesItem.... angesprochen?!?

Hatte ich vorher nicht.  :-:

Generell: Wenn ich mir aus der Notes-Hilfe den Code rauskopiere in meine Schaltfläche und es exitstieren genau die Ansichten und Felder -> funktioniert das dann oder muss man diesem Code noch etwas hinzufügen?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Formel in Lotus Script ausführen
« Antwort #8 am: 10.07.08 - 14:53:20 »
Bevor Du Code kopierst, solltest Du Dir die Dokumentation dazu durchlesen. Dein NotesDocument.GetItemValue ist vollkommener Nonsens.

Bernhard

Offline jokky

  • Frischling
  • *
  • Beiträge: 20
Re: Formel in Lotus Script ausführen
« Antwort #9 am: 12.12.08 - 12:35:58 »
Na dann würde ich das Feld "konvert_z1" auch als solches verwenden NotesDocument.GetItemValue(...).

Im Gegensatz zur @-Formelsprache stehen einem die Felder in Lotusscript nicht automatisch als Variablen zur Verfügung.



Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Formel in Lotus Script ausführen
« Antwort #10 am: 12.12.08 - 12:45:21 »
Ja, aber Du solltest schon den Unterschied zwischen einem Klassennamen wie "NotesDocument" und einer Instanzvariablen wie "doc", über die dann die Methode einer Klasse aufgerufen werden kennen/verstehen.
Ansonsten würde ich mal mit einem Programmier-Grundkurs beginnen.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline SlyFox

  • Senior Mitglied
  • ****
  • Beiträge: 256
  • Geschlecht: Männlich
Re: Formel in Lotus Script ausführen
« Antwort #11 am: 12.12.08 - 15:39:37 »
Versuch's doch mal mit

Code
key = doc.GetItemValue(konvert_z1)

Christoph
10 x Domino 8.5 EN
2 x Domino 9.0.1 EN
30 x Notes 8.5 DE / EN / FR / IT
220 x Notes 9.0.1 DE / EN / FR / IT

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Formel in Lotus Script ausführen
« Antwort #12 am: 12.12.08 - 20:13:23 »
Christoph, das ist auch falsch. Und wir sollten uns hier auch keine Mühe mehr geben: Daniel war hier vor genau einem Monat das letzte Mal angemeldet.

Jetzt aber: Warum ist Dein Hinweis falsch? Er würde zu einem type mismatch führen, da
NotesDocument.GetItemValue
ein Array zurückliefert, der "Einsatzort" NotesView.GetDocumentByKey jedoch einen skalaren Wert erwartet.

Ich schlage jetzt (für meine eigene Person!) hier ein Ei darüber. Daniel "dani_blue" ("blue" wäre ich dann wohl auch) ist sehr offensichtlich mit einer Aufgabe konfrontiert, der er nicht gewachsen ist, und in seiner Organisation kann er ja wohl zu Weiterbildungszwecken nichts aktivieren. Das, was in *den* Dokumentationen steht, mag er auch nicht nachlesen.

Dieses von manchen vielleicht als "brutalen Text" erscheinende Posting mag vielleicht als Erklärung dienen, warum ich auf manche Anfragen einfach nicht mehr beantworte.

Bernhard

Offline dani_blues

  • Frischling
  • *
  • Beiträge: 42
Re: Formel in Lotus Script ausführen
« Antwort #13 am: 17.12.08 - 12:11:14 »
Das glaub ich ja etz doch nicht. Ich hatte im Juli ein Problem. Aus irgendeinem Grund wird das Thema wieder aufgegriffen, und dann geht der Superhirni Koehlersdings ab wie 80er Rettich.
Weißte was Koehlersdings: ich habe übringends bereits im Juli die gutgemeinten Ratschläge im Forum befolgt, mich informiert und es hat gefunzt.

Wenn ich nun nur noch 1 bis 2 Wochen weitergelernt hätte, könnte ich mindestens genauso arrogant durchs Forum streifen wie Du.

Und bitte: Unterstell niemanden hier im Forum Inkompetenz. Den dafür ist glaub dieses Forum nicht gedacht. Prüf lieber selber mal deine soziale Kompetenz!


Offline gossifu

  • Senior Mitglied
  • ****
  • Beiträge: 352
  • Geschlecht: Männlich
  • Dummheit schafft Freizeit
Re: Formel in Lotus Script ausführen
« Antwort #14 am: 17.12.08 - 13:54:52 »
Hallo dani_blues,

Du brauchst eine Objektvariable für dein aktuelles Dokument und eine für das zu beschreibende.

Das aktuelle holst Du Dir über den NotesUIWorkpace (erst ein UIDoc setzen und davon das Document ableiten)
Dann setzt Du in eine Variable x den Wert aus dem aktuellen Dokument.
Und benutzt diesen Wert bei der Suche.

Code
Sub Click(Source As Button)
   Dim ws as New NotesUIWorkspace 'ZUSATZ
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim doc As NotesDocument
   Dim uidoc as NotesUIDocument   'ZUSATZ
   Dim currDoc as NotesDocument   'ZUSATZ
   
   Set uidoc = ws.CurrentDocument
   Set CurrDoc = uidoc.Document
   key =  currDoc.GetItemValue("konvert_z1")(0) 'Um genau das Feldelement zu bekommen Achso, war ein Edit
   Set db = session.CurrentDatabase
   Set view = db.GetView ("VorbelegtealterView" )
   Set doc = view.GetDocumentByKey (key, true )'Beachte bei GetDocumentByKey exakte Treffer
   If Not (doc Is Nothing) Then
      Messagebox "$" & doc.GetItemValue ("alter")(0),, _
      "alter"
   Else
      Messagebox "VorbelegtealterView " + key,, "Not found"
   End If
End Sub

mfg

Kjeld
« Letzte Änderung: 17.12.08 - 15:46:22 von gossifu »
Immer lustig und vergnügt, bis der A.... im Sarge liegt. ;-)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz