Autor Thema: Lotus Script Anfängerproblem...  (Gelesen 12877 mal)

Offline Silent_Bob

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 620
  • Geschlecht: Männlich
    • Insta
Lotus Script Anfängerproblem...
« am: 23.02.06 - 10:30:46 »
Guten Morgen,

es ist wieder soweit. Seitdem ich nun Wochen (fast Monate) lang nicht mehr dazu gekommen bin, in Lotus bzw. Script zu arbeiten, hab ich natürlich wieder die hälfte vergessen :-(

Ich möchte einfach bloss per Script ein Auswahlfeld erzeugen, mit dem ich eine Datei auswählen kann, die dann als Anhang in ein RTF Feld gepackt wird.

Mein Script sieht bisher so aus:

Sub Click(Source As Button)
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim datei As Variant
   Set uidoc = workspace.CurrentDocument
   datei = workspace.OpenFileDialog(False, "Datei auswaehlen")   
   If Isempty(datei) Then Exit Sub   
   Call uidoc.GotoField("anhang")
und hier komm ich schon nicht mehr weiter...   
End Sub

Wer kann mir auf die Sprünge helfen?

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: Lotus Script Anfängerproblem...
« Antwort #1 am: 23.02.06 - 10:41:17 »
Wäre es nicht einfacher mit einem RichTextLite-Feld? Oder ist dies aus anderen Gründen nicht möglich?

Grüsse
Moritz

Offline Silent_Bob

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 620
  • Geschlecht: Männlich
    • Insta
Re: Lotus Script Anfängerproblem...
« Antwort #2 am: 23.02.06 - 10:45:51 »
Das ist eigentlich egal ob RichTextLite oder ein "echtes" RichText Feld.

Aber wieso sollte das leichter sein?

Anmerkung: Ich könnte dieses Problem selbstverständlich mit der @-Formelsprache lösen, aber das will ich nicht, denn so lern ich ja nie die Scriptsprache

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: Lotus Script Anfängerproblem...
« Antwort #3 am: 23.02.06 - 10:47:53 »
Der macht dir da automatisch einen Button rechts neben dem Feld, wo du die erlaubten Attachments einfügen kannst. Ohne eine Zeile Code  ;D

(aber so lernst du natürlich weder Formelsprache noch Script  ;))

Offline Silent_Bob

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 620
  • Geschlecht: Männlich
    • Insta
Re: Lotus Script Anfängerproblem...
« Antwort #4 am: 23.02.06 - 11:00:14 »
Da geb ich dir in beiden Punkten recht :-)

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: Lotus Script Anfängerproblem...
« Antwort #5 am: 23.02.06 - 11:08:34 »
Also falls du das Ganze zu Lernzwecken doch in Script machen möchtest, schau dir mal in der Hilfe die Methode

notesRichTextItem.EmbedObject( type%, class$, source$, [ name$ ] )

an.

Grüsse
Moritz

Offline Silent_Bob

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 620
  • Geschlecht: Männlich
    • Insta
Re: Lotus Script Anfängerproblem...
« Antwort #6 am: 23.02.06 - 11:41:12 »
Hm,

ich komme da trotzdem nicht so weiter.

Sub Click(Source As Button)
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim anhang As NotesRichTextItem
   Dim datei As Variant
   Set uidoc = workspace.CurrentDocument
   datei = workspace.OpenFileDialog(False, "Datei auswaehlen")   
   If Isempty(datei) Then Exit Sub   
   Call uidoc.GotoField("anhang")
   Call anhang.EmbedObject( EMBED_OBJECT, "", datei)
End Sub

Wieso erscheint nun "Object Variable not set"?

Es soll doch der, der Variable "datei" übergebene Pfad, hier in das feld "anhang" geschrieben werden.

Versteh ich jetzt nicht.

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: Lotus Script Anfängerproblem...
« Antwort #7 am: 23.02.06 - 11:53:58 »
"anhang" wurde noch gar nicht initialisiert. Du musst der Variable noch das RichText zuweisen.

Dazu musst du das Backend-Dokument nehmen. Also uidoc.document.

zB so:

Code
Dim doc as NotesDocument

set doc = uidoc.Document

Nun musst du aus diesem Dokument das Feld rausziehen. Etwa mit anhang = doc.GetFirstItem("DeinRTF").

Ausserdem würde ich statt "EMBED_OBJECT", "EMBED_ATTACHMENT" nehmen.

Dann nicht vergessen, das UIDoc musst du nun neu laden, damit die Änderungen aus dem Backend im Frontend sichtbar werden.

So nun geh ich mal essen.

Grüsse
also

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Lotus Script Anfängerproblem...
« Antwort #8 am: 23.02.06 - 11:57:58 »
Hi,

Also eventuell so.

Code
Dim anhang as NotesRichTextItem

Set anhang = uidoc.Document.GetFirstItem("Anhang")
If Not anhang Is Nothing Then
  Call anhang.EmbedObject( EMBED_ATTACHEMENT, "", datei)
End If

Andreas

Offline Silent_Bob

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 620
  • Geschlecht: Männlich
    • Insta
Re: Lotus Script Anfängerproblem...
« Antwort #9 am: 23.02.06 - 12:12:31 »
Hallo zusammen, also ich denke, wir kommen der Sache näher:

Sub Click(Source As Button)
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim anhang As NotesRichTextItem
   Dim datei As Variant
   Set doc = uidoc.Document
   Set anhang = uidoc.Document.GetFirstItem("anhang")
   datei = workspace.OpenFileDialog(False, "Datei auswaehlen")   
   If Isempty(datei) Then Exit Sub   
   If Not anhang Is Nothing Then
      Call anhang.EmbedObject( EMBED_ATTACHEMENT, "", datei)
   End If
End Sub


Allerdings kann ich nun das Script nicht speichern.

"Variable not declared: EMBED_ATTACHMENT".

Wie soll ich denn EMBED_ATTACHMENT declarieren??

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
Re: Lotus Script Anfängerproblem...
« Antwort #10 am: 23.02.06 - 12:18:45 »
EMBED_ATTACHMENT (1454)
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Lotus Script Anfängerproblem...
« Antwort #11 am: 23.02.06 - 12:25:49 »
Hi,

@Silent_Bob

Kleine Anregung vielleicht.

Schau doch einmal in die Hilfe des Designers bei "NotesRichTextItem" und hier bei EmbedObject.

Code
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim object As NotesEmbeddedObject
Set db = session.CurrentDatabase
Set doc = New NotesDocument( db )
Set rtitem = New NotesRichTextItem( doc, "Body" )
Set object = rtitem.EmbedObject _
( EMBED_ATTACHMENT, "", "c:\jim.sam")
doc.Form = "Main Topic"
doc.Subject = "Here's Jim's document, as an attachment"
Call doc.Save( True, True )

Offline dgerhardt

  • Frischling
  • *
  • Beiträge: 33
  • Geschlecht: Männlich
Re: Lotus Script Anfängerproblem...
« Antwort #12 am: 23.02.06 - 12:32:40 »
Probier mal das hier...

Sub Click(Source As Button)
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim anhang As NotesRichTextItem
   Dim datei As Variant
   
   On Error Goto ErrHdl
   
   Set uidoc = workspace.CurrentDocument
   Set doc = uidoc.Document
   Set Anhang = New NotesRichTextItem(doc, "Anhang")
   'sonst ist das Objekt nicht gesetzt oder der Typ nicht definiert
   
   datei = workspace.OpenFileDialog(False, "Datei auswaehlen")
   'liefert einen Array zurück : datei(0) ist der erste Dateiname   
   
   If Isempty(datei) Then Exit Sub   
   Call uidoc.GotoField("anhang")
   If anhang.type = 1 Then
      Call anhang.EmbedObject( EMBED_Attachment, "", datei(0))
'refresh uidoc... das ist leider so in Notes...
      Call anhang.Update
      doc.SaveOptions = "0"
      Call UiDoc.Close(True)
      Dim NewUiDoc As NotesUIDocument
      Set NewUiDoc = workspace.EditDocument(True, doc)         
      Set Doc = NewUiDoc.Document
'end refresh
   End If

Mit den RT-Felder muß man leider etwas umständlich arbeiten  ;)
mit besten Grüßen

Dirk Gerhardt

Offline Silent_Bob

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 620
  • Geschlecht: Männlich
    • Insta
Re: Lotus Script Anfängerproblem...
« Antwort #13 am: 23.02.06 - 12:56:31 »
Lieber DGerhard,

ich bedanke mich recht herzlich (und natürlich bei den andern für Ihre Mühe),

Dein Script läuft so gut wie beinahe ;-)

Nur das On Error Goto ErrHdl musste ich entfernen.
Allerdings kann ich das Dokument nicht abspeichern.

Wenn ich unten SaveOptions auf 1 setze, wird der Anhang gespeichert, aber nicht in dem Feld Anhang sondern ganz unten. !?

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: Lotus Script Anfängerproblem...
« Antwort #14 am: 23.02.06 - 13:32:57 »
Änder mal die Zeile

Code
Set Anhang = New NotesRichTextItem(doc, "Anhang")

in

Code
Set Anhang = doc.GetFirstItem("DeinRTF")

um.

Offline Silent_Bob

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 620
  • Geschlecht: Männlich
    • Insta
Re: Lotus Script Anfängerproblem...
« Antwort #15 am: 23.02.06 - 13:36:19 »
Object Variable not set

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Lotus Script Anfängerproblem...
« Antwort #16 am: 23.02.06 - 13:38:40 »
@Silent_Bob,

Besteht die Moeglichkeit, das Du mal Deinen Code postest?

Andreas

Offline Silent_Bob

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 620
  • Geschlecht: Männlich
    • Insta
Re: Lotus Script Anfängerproblem...
« Antwort #17 am: 23.02.06 - 14:05:55 »
natürlich, sehr gern.

das feld in der maske, wo der anhang rein muss, heisst auch "anhang".

der aktuelle code sieht so aus:

Sub Click(Source As Button)
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim anhang As NotesRichTextItem
   Dim datei As Variant
   
   Set uidoc = workspace.CurrentDocument
   Set doc = uidoc.Document
   Set Anhang = New NotesRichTextItem(doc, "Anhang")
   datei = workspace.OpenFileDialog(False, "Datei auswaehlen")
   
   If Isempty(datei) Then Exit Sub   
   Call uidoc.GotoField("anhang")
   If anhang.type = 1 Then
      Call anhang.EmbedObject( EMBED_Attachment, "", datei(0))
      Call anhang.Update
      doc.SaveOptions = "0"
      Call UiDoc.Close(True)
      Dim NewUiDoc As NotesUIDocument
      Set NewUiDoc = workspace.EditDocument(True, doc)         
      Set Doc = NewUiDoc.Document
   End If
End Sub

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: Lotus Script Anfängerproblem...
« Antwort #18 am: 23.02.06 - 14:48:13 »
Und wenn du die Zeile wie oben von mir beschrieben änderst kriegst du den Error?

Du hast doch hoffentlich "DeinRTF" schon so geändert, dass die Zeile nun so aussehen müsste?

Code
Set Anhang = doc.GetFirstItem("anhang")

Grüsse

Offline Silent_Bob

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 620
  • Geschlecht: Männlich
    • Insta
Re: Lotus Script Anfängerproblem...
« Antwort #19 am: 23.02.06 - 15:00:06 »
Ja sicher. Ich hab "DeinRTF" umbenannt ;-)

Mit der Zeile von dir erhalte ich in dem Script die Fehlermeldung "Object Variable not set", und zwar, nachdem ich im Dateiauswahlfenster eine Datei ausgewählt habe.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz