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

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: Lotus Script Anfängerproblem...
« Antwort #20 am: 23.02.06 - 15:14:58 »
Schon mal das Zeugs debuggt? Sonst schau mal, in welcher Zeile der Fehler kommt, und welche Variablen nicht gesetzt wurden.

Grüsse

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Lotus Script Anfängerproblem...
« Antwort #21 am: 23.02.06 - 15:19:11 »
Ich habs mal bei mir versucht (Code Copy&Paste)

Verhalten des Codes ist dasselbe.

@Untitled
Wenn, so wie ich auch schon vorgeschlagen habe
Set Anhang = doc.GetFistItem("Anhang")
kleines Problem.

Wenn neues Dokument Feld "Anhang" (RT-Field) noch nicht vorhanden, erst nach dem Speichern.

Andreas

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Lotus Script Anfängerproblem...
« Antwort #22 am: 23.02.06 - 15:31:01 »
Ich habe den Code aus Antwort#17 so wie er ist übernommen und in eine Spielmaske das RTF-Feld Anhang eingefügt.

Der Code funktioniert einwandfrei.

Wo ist denn genau das Problem.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

klaussal

  • Gast
Re: Lotus Script Anfängerproblem...
« Antwort #23 am: 23.02.06 - 15:42:14 »
anhang oder Anhang ???

was sagt der debugger ?

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: Lotus Script Anfängerproblem...
« Antwort #24 am: 23.02.06 - 15:45:22 »
Wenn neues Dokument Feld "Anhang" (RT-Field) noch nicht vorhanden, erst nach dem Speichern.

Das stimmt natürlich. Dann müsste man zuallererst das uiDoc speichern. (DesignerHilfe sagt wie)

Der Code funktioniert einwandfrei.

Wo ist denn genau das Problem.

Er fügt das Attachment am Ende des Dokumentes und nicht ins RTF ein.


Offline Silent_Bob

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 620
  • Geschlecht: Männlich
    • Insta
Re: Lotus Script Anfängerproblem...
« Antwort #25 am: 23.02.06 - 15:49:52 »
@Axel:

Ich habe jetzt den Code aus Antwort 17 nochmal so wie er ist ein meiner schaltfläche ersetzt. Habe extra auf Gross und Kleinschreibung geachtet.

Der Code an sich funktioniert jetzt auch. Der Anhang wird ausgewählt und erscheint auch in dem Entsprechenden RTF Feld.

Allerdings lässt sich das Dokument nicht speichern.

Ich kann STRG + S drücken, "Speichern" im Menü "Datei" auswählen, oder meine Schaltfläche "@Command[(FileSave)]

Nichts. Das Ding wird nicht gespeichert.

Offline Silent_Bob

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 620
  • Geschlecht: Männlich
    • Insta
Lösung gefunden !
« Antwort #26 am: 23.02.06 - 15:58:54 »
So wie es aussieht, habe ich die Lösung gefunden.

In dem Script von Antwort 17 fehlte etwas:

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
      doc.SaveOptions = "1"
   End If
End Sub

Vor dem letzten "EndIf" habe ich noch ei doc.SaveOptions="1" eingebaut!
Nun lässt sich das Ding auch speichern.

Wenn ich jetzt keine bösen Überraschungen mehr erlebe, scheints das gewesen zu sein, oder was meint ihr?

klaussal

  • Gast
Re: Lotus Script Anfängerproblem...
« Antwort #27 am: 23.02.06 - 16:06:04 »
Ich frag mich ja, warum zweimal saveoptions gesetzt werden ?
1 = speichern, 0 = nicht speichern

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: Lotus Script Anfängerproblem...
« Antwort #28 am: 23.02.06 - 16:13:33 »
zuerst wird auf "0" gesetzt, um das uiDoc ohne Speicherabfrage zu schliessen. Anschliessend wird es wieder auf "1" gesetzt, um zukünftig das Speichern wieder zu erlauben.

Es wird ja nicht automatisch wieder auf "1" gesetzt.

Was ich allerdings auch nicht begreife ist, wo das Backend-Dokument gespeichert wird (ev. mit anhang.Update?) und warum das doc.Saveoptions nicht im uiDokument gemacht wird. Und wo wird das "doc.SaveOptions = "1"" gespeichert?

Grüsse

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Lotus Script Anfängerproblem...
« Antwort #29 am: 23.02.06 - 16:19:25 »
Damit das Ganze sauber funktioniert muss das Feld SaveOptions wieder entfernt werden.

...
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
      Call doc.RemoveItem( "SaveOptions" )
   End If
...

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Silent_Bob

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 620
  • Geschlecht: Männlich
    • Insta
Re: Lotus Script Anfängerproblem...
« Antwort #30 am: 23.02.06 - 16:25:33 »
Stimmt. Ob man jetzt SaveOptions="1" setzt, oder
Call doc.RemoveItem( "SaveOptions" ).
geht beides, und kommt auch aufs selbe raus.

Allerdings hat die ganze Choose noch einen Schönheitsfehler: Es wird nur ein Anhang in dem Feld zugelassen, alle weiteren Anhänge, die man evtl. noch da einfügen möchte, werden in einem seperaten bereich unter der Maske abgelegt.... !?

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Lotus Script Anfängerproblem...
« Antwort #31 am: 23.02.06 - 16:28:53 »
Ich habe gerade gesehen, dass da noch was fehlt.

Der Teil zum Refreshen des Dokuments (damit der Anhang angeziegt wird) so aussehen:

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)
     Delete uidoc 'Referenz auf das alte Frontend-Dokument löschen      
      Set Doc = NewUiDoc.Document
      Call doc.RemoveItem( "SaveOptions" )
   End If

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Lotus Script Anfängerproblem...
« Antwort #32 am: 23.02.06 - 16:35:06 »
Mal 'ne ganz andere Frage. Warum brichst du dir die Finger ab, nur um ein paar Dateien anzuhängen. Mach's doch mit der Formelsprache.


@If(@IsError(@Command([EditInsertFileAttachment]));
       @Do(@Command([EditGotoField]; "Anhang");@Command([EditInsertFileAttachment]));
       ""
)


Da hast du keine Probleme mit der Aktualisierung, kannst mehrere Dateien anhängen und auch noch einstellen ob diese komprimiert in der DB gespeichert werden sollen.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Silent_Bob

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 620
  • Geschlecht: Männlich
    • Insta
Re: Lotus Script Anfängerproblem...
« Antwort #33 am: 23.02.06 - 16:56:38 »
@axel:

Weil mein Lotus Script Lehrgang gute 3 Monate her ist, und ich seitdem, unerwarteterweise, so gut wie gar nicht mehr gekommen bin, meine Kenntnisse auszuweiten, und das ganze etwas zu lernen.

Und jetzt bietet sich eben die Gelegenheit dazu, ehe ich alles wieder vergessen habe.

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Lotus Script Anfängerproblem...
« Antwort #34 am: 23.02.06 - 19:25:09 »
Allerdings hast du dir gerade eine Ecke mit vielen Fallstricken ausgesucht.

RTF-Felder sind in der Beziehung sehr störrisch. Ich hatte vor kurzem ein ganz ähnliches Problem und habe es auch versucht mit Script zu lösen. Irgendwann habe ich dann aber einen Strich druntergemacht, den Tonnendeckel aufgemacht und das Script da rein gehauen. Herausgekommen ist dann die Formel aus meiner vorigen Antwort.

Axel
 
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Silent_Bob

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 620
  • Geschlecht: Männlich
    • Insta
Re: Lotus Script Anfängerproblem...
« Antwort #35 am: 24.02.06 - 08:19:23 »
Ich wusste nicht, dass das jetzt ein extrem Problematischer Fall ist.

Ich versuch mich jetzt lieber Stück für Stück an kleineren Problemen. Überprüfen auf die Korrektheit eines eingegebenen Strings oder so...

Offline dgerhardt

  • Frischling
  • *
  • Beiträge: 33
  • Geschlecht: Männlich
Re: Lotus Script Anfängerproblem...
« Antwort #36 am: 24.02.06 - 09:52:24 »
Stimmt. Ob man jetzt SaveOptions="1" setzt, oder
Call doc.RemoveItem( "SaveOptions" ).
geht beides, und kommt auch aufs selbe raus.

Allerdings hat die ganze Choose noch einen Schönheitsfehler: Es wird nur ein Anhang in dem Feld zugelassen, alle weiteren Anhänge, die man evtl. noch da einfügen möchte, werden in einem seperaten bereich unter der Maske abgelegt.... !?

Also der Schönheitsfehler liegt wohl darin, daß bei einem neuen Doc noch kein RT-Feld im Backend vorhanden ist. Es ist zwar in der Maske, aber dadurch, das diese ja noch nicht gespeichert wurde, gibt es das Objekt (Feld) noch nicht im Backend. Deshalb bekommst Du auch mit "GetFirstItem" die Fehlermeldung "Object variale not set". Mit der Eigenschaft doc.isnewnote kann man abfragen, ob es sich um ein neues Doc handelt.

If doc.isnewnote then
     Set anhang = New NotesRichTextItem(doc, "anhang")
else
     Set anhang = doc.GetFirstItem("anhang")
End If

und...
Der Befehl "Call doc.Removeitem("SaveOptions")" ist nur dann möglich/sinnvoll, wenn dieses Feld auch nicht in der Maske vorhanden ist.

Ansonsten wird jedesmal beim Ausführen des Scriptes ein neues Feld namens "anhang" erzeugt, welches dann unterhalb der Maske angezeigt wird.
Probiers mal aus...

p.s. Es stimmt: RT-Felder sind im Scriptbereich wirklich schwierig. Aber du solltest in Deinen Selbsversuchen ruhig mehr damit machen. Versuche doch mal eine Tabelle oder formatierten Text in ein RT-Feld zu bringen. Gerade für Mailversand durch Agenten (z.B. Reminderfunktionen) ist das sehr wichtig.

VIEL ERFOLG
mit besten Grüßen

Dirk Gerhardt

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Lotus Script Anfängerproblem...
« Antwort #37 am: 20.04.06 - 17:26:53 »
Hallo zusammen,

ich habe das Script mal auf meiner Anwendung ausprobiert.
Die Maske, in der ich das ausführe ist vom typ "Rückantwort"
Wenn ich dieses Script über eine Schaltfläche ausführe, speichert er mir das eigenständiges Dokument ab und nicht unter dem Hauptdokument.
Wenn ich die Maske speicher, ohne den Knopf zu klicken, macht er das ganz normal zuordnen.

Woran kann das liegen?

danke + Gruß
Selin
Windows XP
Notes 6.5

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Lotus Script Anfängerproblem...
« Antwort #38 am: 20.04.06 - 21:07:31 »
Welchen Code hast Du ausprobiert??

Wenn Du irgendwo das Dokument im Backend speicherst, ist das Verhalten normal: Die Eigenschaft  "Antwort" oder "Rückantwort" ist eine reine Frontend-Eigenschaft einer Maske, und im Backend musst Du logischerweise selbst für diese Eigenschaft sorgen.
NotesDokument.MakeResponse ist Dein Freund.

Bernhard

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Lotus Script Anfängerproblem...
« Antwort #39 am: 21.04.06 - 12:04:30 »
Hallo Bernhard,

dieses Script habe ich bei mir eingefügt:

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( True, "Vorlagen", "*.dot", "C:\hallo.dot" )
   
   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)
      Delete uidoc 'Referenz auf das alte Frontend-Dokument löschen       
      Set Doc = NewUiDoc.Document
      doc.SaveOptions = "1"
   End If
End Sub

werde mir mal die Methode MakeResponse anschauen...
danke
Windows XP
Notes 6.5

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz