Autor Thema: Queryclose in Click Event übernehmen  (Gelesen 3174 mal)

Offline marsu_2

  • Junior Mitglied
  • **
  • Beiträge: 62
Queryclose in Click Event übernehmen
« am: 16.05.13 - 11:29:29 »
Hallo,

ich benutze dieses Script in einer Maske im Queryclose, da klappt es auch wie gewünscht es ließt das Feld CommentHistory ein fügt den Inhalt des neuen Feldes ein und löscht den Inhalt aus dem neuen Feld.

Nun wollte ich das in einer anderen DB in eine Schaltfläche übertragen. Nun kommt da aber immer die Fehlermeldung " Not a member: Document"
Set doc = session.CurrentDatabase.GetDocumentByUNID(Source.Document.UniversalID) hat da jemand eine Idee?


Code
Sub Click(Source As Button)
	On Error Goto Oops
	Dim session As New NotesSession
	Dim doc As NotesDocument
	Set doc = session.CurrentDatabase.GetDocumentByUNID(Source.Document.UniversalID)	Dim vDetails As Variant
	Set vDetails = doc.GetFirstItem("Comments")
	Dim vHistory As Variant
	Set vHistory = doc.GetFirstItem("CommentHistory")
	
	If vDetails.valueLength < 245 Then
		Goto TheEnd
	End If
	
	If (vDetails.Type = RICHTEXT And vHistory.Type = RICHTEXT) Then
		Call vHistory.AppendText(Format$(Now, "mm/dd/yy hh:nn AM/PM") & " von " & session.CommonUserName & ": ")
		Call vHistory.AppendRTItem(vDetails)
		Call vHistory.AddNewLine(1)
		Call vDetails.Remove
		Call doc.Save(True, False)
	End If
TheEnd:
	Continue = True
	Exit Sub
Oops:
	Resume TheEnd	
End Sub
« Letzte Änderung: 16.05.13 - 11:32:29 von marsu_2 »

Glombi

  • Gast
Re: Queryclose in Click Event übernehmen
« Antwort #1 am: 16.05.13 - 11:35:23 »
Source ist in dem Button kein UI Dokument. Daher musst Du es Dir anders holen.
dim ws as New NotesUIWorkspace
dim uidoc as NotesUIDocument
set uidoc = ws.CurrentDocument
...
Set doc = session.CurrentDatabase.GetDocumentByUNID(uidoc.Document.UniversalID)


Andreas

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Queryclose in Click Event übernehmen
« Antwort #2 am: 16.05.13 - 11:36:02 »
Hallo,

Weil Source hier Dein Button ist und nicht das UIDocument, welches durch Source
im QueryClose vorhanden ist.

%EDIT
Mein Namensvetter Glombi (Andreas) war schneller.


Andreas

Offline marsu_2

  • Junior Mitglied
  • **
  • Beiträge: 62
Re: Queryclose in Click Event übernehmen
« Antwort #3 am: 16.05.13 - 14:53:58 »
Das wars danke!

Leider taucht jetzt das nächste Problem auf.
Im Designer kommt jetzt kein Fehler mehr aber wenn ich die Schaltfläche dann betätige kommt die Meldung
Zitat
Object Variable not Set


Wenn ich das Dokument vorher manuel speicher und erneut aufrufe, kommt die Meldung nicht.
 

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Queryclose in Click Event übernehmen
« Antwort #4 am: 16.05.13 - 15:04:41 »
Hallo,

Weil sich RichText-Felder leider etwas anders verhalten.

Diese stehen, ohne irgendwelche Eingriffe, in einem neuen, noch nicht gespeicherten
Dokument halt noch nicht zur Verfuegung.


Andreas

Offline marsu_2

  • Junior Mitglied
  • **
  • Beiträge: 62
Re: Queryclose in Click Event übernehmen
« Antwort #5 am: 16.05.13 - 16:42:04 »
Danke für die Mühe

Ich muss immer wieder feststellen ich habe wirklich keine Ahnung von LotusScript gibt es für die besondere Thematik mit RTF's nen  Tuto?   ???

Ich hätte jetzt gedacht ein

Code
Call doc.Save(True, False)
	Call doc.Reload

würde abhilfe schaffen, was es nicht tut. Ich bin überfragt

Thomas

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Queryclose in Click Event übernehmen
« Antwort #6 am: 16.05.13 - 16:52:47 »
Nur so als Gerdankenspiel.

Versuch mal vor dem Speichern ein

Call vHistory.Compact()


Andreas

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Queryclose in Click Event übernehmen
« Antwort #7 am: 16.05.13 - 17:13:56 »
Hallo,

Ich stelle mir jedoch gerade die Frage, warum machts Du diesen Akt mit den RT-Feldern
eigentlich bei einem neuen Dokument.

So speicherst Du dieses Dokument, damit Dein Code an die RT-Felder 'sauber' herankommt.

Was aber, wenn Dein Anwender merkt, dass er das Dokument nun doch nicht anlegen will,
hat aber schon auf den Button geklickt? Dann ist es aber schon gespeichert.

Arbeite doch bei einem neuen Dokument mit den Mitteln, die Dir ein NotesUIDocument
in die Hand gibt. (FieldGetText, FieldSetText)


Andreas

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Queryclose in Click Event übernehmen
« Antwort #8 am: 16.05.13 - 18:26:28 »
Völlig unabhängig von Deiner Fragestellung, aber ...

Set doc = session.CurrentDatabase.GetDocumentByUNID(Source.Document.UniversalID)

Du holst Dir aus der Datenbank das Backend-Dokument mit der UniversalID des Frontend-Dokuments, die Du über dessen Backend-Dokument ausliest.

Das geht bestimmt auch noch komplizierter. Wie wäre es damit?

Set doc = Source.Document

Falls Du nicht nach der Länge des Codes bezahlt wirst, würde ich das mal versuchen ;)

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Queryclose in Click Event übernehmen
« Antwort #9 am: 16.05.13 - 19:07:45 »
Bei Dialogen gibt es einen fiesen Bug über den du hier evtl.  gestolpert bist:

Wenn der Dialog über eine Lotusscript Schaltfläche mit ws.currentDocument.close()  geschlossen wird, kann man im queryClose nicht mehr zuverlässig auf das Dokument zugreifen, da es "Nothing" wird.
Abhilfe: Formel @Command([Refreshparentnote]); @command([Fileclosewindow]) verwenden.

Gruß Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline marsu_2

  • Junior Mitglied
  • **
  • Beiträge: 62
Re: Queryclose in Click Event übernehmen
« Antwort #10 am: 28.05.13 - 16:16:49 »
war ne Woche im Urlaub deswegen erst die späte Antwort,

ich finde es total nett das Ihr mich so unterstützt, ich muss gestehen ich habe mir den Code zusammengewürfelt und es ist auch mein erstes LS ansonsten habe ich alles per Formel realisiert.

Was ich erreichen will ist über einen Button aus einem RTF den Inhalt in ein Berechnetes RTF zu kopieren und den Inhalt aus dem ersten Feld dann zu löschen.

Da es mit RTF Feldern ja anscheinend schwieriger ist habe ich dafür die LS Schnipsel verwendet.
Wenn ich wie beschrieben den Code im Queryclose ausführe klappt das auch aber halt nicht im Button.

FieldGetText, FieldSetText klappt für RTF dann ja auch nicht...

Ab Dim vDetails As Variant verstehe ich auch den Code und kann ihn nachvollziehen, aber den Anfang verstehe ich nicht und habe ihn deswegen dirty kopiert. Gibt es da ein schönes Tuto? Ich habe keine Ahnung von Backend und Frontend Dokumenten etc. Ich kenne diese Begriffe nur im Zusammenhang von CMS Systemen

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Queryclose in Click Event übernehmen
« Antwort #11 am: 28.05.13 - 23:36:23 »
Wir sind hier immer sehr nett (wenn es die Gegenseite auch ist) und helfen gerne.
Wir sind noch netter, wenn wir einen ansprechbaren Namen unter den Postings finden.

Ich gebe aber trotzdem noch zwei tiefere Tipps:
Erstens:
Ich würde als LotusScript-Lehrling tunlichst die Finger von den schwierigsten Dingen lassen, sondern mich erst prinzipiell fit machen.

Zweitens:
Du kopierst den Inhalt von A nach B? Wozu? Berechnetes RT-Feld - da tust Du ggf. die nächste Baustelle auf, sowas (berechnetes RT-Feld) halte ich fast prinzipiell nicht für gut.
Warum verwendest Du keine zugriffskontrollierten Abschnitte? Aber da sind wir wieder bei dem Lernprozess, den man erstmal gehen sollte, bevor man sich am "Eingemachten" versucht.

HTH,
Bernhard

Offline marsu_2

  • Junior Mitglied
  • **
  • Beiträge: 62
Re: Queryclose in Click Event übernehmen
« Antwort #12 am: 29.05.13 - 13:06:18 »
Hallo Bernhard,

ich glaube mir fehlt die Übersicht über meine Möglichkeiten.

zugriffskontrollierten Abschnitte
ich benutze einige in der Maske um über Rollen bestimmten Gruppen->Usern Zugriff auf Abschnitte zu gewähren. Ich hätte aber keine Idee wie ich dies für mein Problem nutzen könnte.
Ich will ja das ein User immer nur Sachen hinzufügen und nicht löschen darf.

Gibt es eine komplett andere Methode ein Feld so anzulegen das man Anhänge hinzufügen aber nicht löschen darf?

Hinzukommt das ich ja auch noch einen Zeitstempel nutzen will.

Ach ja ;-)

Grüße THomas 

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz