Autor Thema: [gelöst] Lesebestätigung für ein Dokument  (Gelesen 12572 mal)

Offline LordKiri

  • Senior Mitglied
  • ****
  • Beiträge: 252
  • aka Andreas
[gelöst] Lesebestätigung für ein Dokument
« am: 12.09.08 - 15:40:41 »
Hallo,

ich hätte gerne eine Lesebestätigung für ein Dokument. Die User, die es lesen sollen bekommen eine Mail mit einem Link zu diesem Dokument.

Folgendes habe ich bereits in meiner Maske enthalten:
Felder:
ReturnReceipt; SendTo, Subject und From

in dem Postopen-Event steht folgendes:
Code
Sub Postopen(Source As Notesuidocument)
	Set uidoc = Source
	Set doc = Source.document
	If uidoc.IsNewDoc Then
		Exit Sub
	Else
		uidoc.EditMode = True
		RR = doc.GetItemValue("ReturnReceipt")
		If RR(0) = "1" Then
			doc.ReturnReceipt = "1"
			Messagebox("Empfangsbestätigung gesendet.")	
		End If
		uidoc.EditMode = False
	End If
End Sub

Mein Problem das ganze funktioniert nicht.
Fehlen vielleicht irgendwelche Felder oder ist ein Fehler im Code... ich komm einfach nicht weiter...
« Letzte Änderung: 16.09.08 - 11:23:27 von LordKiri »

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Lesebestätigung für ein Dokument
« Antwort #1 am: 12.09.08 - 15:51:01 »
Du machst also folgendes:

Wenn das Dokument geöffnet wird, wechselst du in den bearbeitungsmodus und  prüfst du, ob es ein neues Dok ist. Wenn ja ... Tschüß; wenn nein, dann besetzt du den Variant RR mit dem Inhalt des Feldes Returnreceipt, welches sich in dem Dokument befindet.
Nun prüfst du, ob der Wert = 1 ist. Wenn ja, ersetzt du den vorhandenen Feldwert mit dem gleichen Wert und zeigst der Welt eine Messagebox.
Dann wechselst du wieder in den Lesemodus.

So weit , so gut ... Frage ... Was soll das ?
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Lesebestätigung für ein Dokument
« Antwort #2 am: 12.09.08 - 16:01:03 »
ReturnReceipt ist eine bestimmte eingebaute Funktionalität in der Mail-DB. In anderen DBs kannst Du das (Items) hundert Mal einbauen - da passiert dann gar nichts, solange Du nicht den entsprechenden Code auch mit zur Verfügung stellst (und auslöst).

Weiters: Du müsstest in Deinen Dokumenten auch vermerken, wer das Dokument bereits gelesen hat. Das setzt dann aber Schreibrechte auf das Dokument voraus.

Ich stelle mir wie Ulrich auch die Frage: Was soll das?

Bernhard

Offline LordKiri

  • Senior Mitglied
  • ****
  • Beiträge: 252
  • aka Andreas
Re: Lesebestätigung für ein Dokument
« Antwort #3 am: 12.09.08 - 16:41:19 »
ah ok ich habe gedacht diese ReturnReceipt geht überall...

Grund dafür ist ein Kontrolle für bestimmte User über Arbeitsanweisungen bzw. deren Änderungen welche über Workflows an die User verteilt wird.

das mit dem überprüfen ob der wert 1 ist und den wert 1 schreiben ist natürlich blödsinn, da hatte ich woll einen kleinen Denkfehler

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Lesebestätigung für ein Dokument
« Antwort #4 am: 12.09.08 - 16:50:06 »
Grund dafür ist ein Kontrolle für bestimmte User über Arbeitsanweisungen bzw. deren Änderungen welche über Workflows an die User verteilt wird.

Das ist nun aber ein merkwürdiges Verständnis von "Workflow". Hierüber liesse sich ja auch ohne weiteres das Öffnen des Dokumentes als "Workflow Step" abbilden lassen ...
Abgesehen davon: "Öffnen des Dokumentes" muss überhaupt nichts mit "Lesen" zu tun haben! Vielmehr müsste der Mitarbeiter bestätigen: "Ja, ich habe das gelesen und ich bin der Meinung, es verstanden zu haben." (oder eben das Gegenteil).
Ein simples "return receipt" ist hier (wie fast immer) schlichter Schwachsinn.

Bernhard

Offline LordKiri

  • Senior Mitglied
  • ****
  • Beiträge: 252
  • aka Andreas
Re: Lesebestätigung für ein Dokument
« Antwort #5 am: 15.09.08 - 11:16:54 »
ok seh ich ein, jetzt mach ich einen Button "Ja, ich habe das Dokument gelsen" wie komm ich den jetzt an seine mailDB ran zum besseren Verständnis mein Code:

Dim uidoc As NotesUIDocument
   Set uidoc = workspace.ComposeDocument ( "", mailDB User, "Memo" )
   Dim steller
   steller = uidoc.fieldgettext("Antragsteller")
   doc.Subject = "Lesebestätigung"
   doc.Body = "Die Änderung wurde gelesen."
   doc.EnterSendTo = steller
« Letzte Änderung: 15.09.08 - 11:18:45 von LordKiri »

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: Lesebestätigung für ein Dokument
« Antwort #6 am: 15.09.08 - 11:38:30 »
Den Pfad zur Mail-Datenbank eines Users kannst Du aus dem Domino Directory auslesen.

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 LordKiri

  • Senior Mitglied
  • ****
  • Beiträge: 252
  • aka Andreas
Re: Lesebestätigung für ein Dokument
« Antwort #7 am: 15.09.08 - 11:52:01 »
Ok da bin ich grad dran hab aber ein kleine Problem er bring mir beim mailFile immer Type mismatch

Code
	Dim workspace As New NotesUIWorkspace
	Dim session As New NotesSession
	Dim dd
	Dim lookupView
	Dim mailFile As String
	Dim mailserver As String
	Set dd = session.GetDatabase("Server", "names.nsf")
	Set lookupView = dd.GetView("($Users)")
	Set doc = lookupview.GetFirstDocument
	While Not (doc Is Nothing)
		Set oUserName = New NotesName(session.UserName)
		userName = oUserName.Abbreviated
		Set userDoc = lookupView.GetDocumentByKey(userName, True)
		If Not (userDoc Is Nothing) Then
			mailFile = userDoc.GetItemValue("MailFile")
			mailServer = userDoc.GetItemValue("MailServer")
			Msgbox mailFile
			Msgbox mailServer
			Set userMailDb = session.GetDatabase(mailServer, mailFile, True)
			If Not (userMailDb Is Nothing) Then
				Call userMailDb.Open("", "")
				If userMailDb.IsOpen Then
					Dim uidoc As NotesUIDocument
					Set uidoc = workspace.CurrentDocument
					Dim steller
					steller = uidoc.fieldgettext("Antragsteller")
...
« Letzte Änderung: 15.09.08 - 11:57:45 von LordKiri »

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: Lesebestätigung für ein Dokument
« Antwort #8 am: 15.09.08 - 12:00:52 »
Zitat
GetItemValue method 

Syntax
valueArray = notesDocument.GetItemValue( itemName$ )

Parameters
itemName$     
String. The name of an item.

Return value
value
The value or values contained in the specified name.
The data type of the value depends on the data type of the item.

Code
Notes item type                         Value return type
Rich text                               Array of strings. The text in the item, rendered into plain text
Text or text list                       Array of strings
(includes Names, Authors, and 
Readers item types)
Number or number list                   Array of doubles
Date-time or range of date-time values  Array of variants of type Date

Du kannst nicht einem String "mailFile" ein Array "userDoc.GetItemValue("MailFile")" zuweisen.
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 LordKiri

  • Senior Mitglied
  • ****
  • Beiträge: 252
  • aka Andreas
Re: Lesebestätigung für ein Dokument
« Antwort #9 am: 15.09.08 - 13:10:41 »
ok, das hab ich jetzt alles gelöst, soweit danke :D jetzt habe ich den Empfänger in EnterSendTo eingetragen, aber er bringt dann die Meldung, dass er keine Recipient list for send operation hat.

Heißt das Feld für SendTo doch anders?

Offline LordKiri

  • Senior Mitglied
  • ****
  • Beiträge: 252
  • aka Andreas
Re: Lesebestätigung für ein Dokument
« Antwort #10 am: 15.09.08 - 16:07:05 »
so jetzt wirds haarig, es funktioniert alles ganz gut nur mein Problem ich hab so ne tolle abfrage im postopen und sobald ich das ganze Dokument auf readmodus stellen per editmode = False schließt er das Dok und öffnet es erneut...

die Folgerung daraus ich hab ne unendlich Schleife weil er jedesmal das Dok schließt und wieder öffnet wenn er den Befehl editmode = False durchläuft.

Kann man es verhindern, dass er erst das Dok schließt und dann wieder öffnet sondern einfach in Readmode geht

Offline LordKiri

  • Senior Mitglied
  • ****
  • Beiträge: 252
  • aka Andreas
Re: Lesebestätigung für ein Dokument
« Antwort #11 am: 16.09.08 - 09:42:32 »
ok hab die endlosschleife wieder rausgekriegt jetzt habe ich aber ein anderes Problem:

ich habe ein Feld "gelesen" in dieses Feld wird jeder geschrieben, der einmal Bestätigt hat, dass ers gelesen hat, wenn nun der user das Dokument noch einmal startet soll er per script überprüfen ob der User schoneimal in dem Feld gelesen steht, wenn er drin steht soll er den Bestätigungsbutton nicht anzeigen.

das ganze läuft atm über "Instr" gibt es eine bessere Methode, die auch wirklich zuverlässig ist???

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Lesebestätigung für ein Dokument
« Antwort #12 am: 16.09.08 - 09:47:01 »
Instr ist doch Ok. Warum soll die nicht zuverlässig sein?
A-Bär pass auf die 64k Grenze auf, dann knallt es.
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline LordKiri

  • Senior Mitglied
  • ****
  • Beiträge: 252
  • aka Andreas
Re: Lesebestätigung für ein Dokument
« Antwort #13 am: 16.09.08 - 10:00:00 »
Irgendwie funktioniert das mit dem Instr nicht.... hier der Code

Code
Set oUserName = New NotesName(session.UserName)
	userName = oUserName.Abbreviated
	userNameCN = oUserName.Common
	
gelesen = uidoc.FieldGetText("gelesen")	
                BigString2$ = gelesen
	LittleString2$ = userName
	positionOfChar2& = Instr(BigStrin2$, LittleString2$)
	Msgbox positionOfChar2&,,"positionOfChar2"
« Letzte Änderung: 16.09.08 - 10:03:58 von LordKiri »

klaussal

  • Gast
Re: Lesebestätigung für ein Dokument
« Antwort #14 am: 16.09.08 - 10:04:38 »
Zitat
64k
....

klaussal

  • Gast
Re: Lesebestätigung für ein Dokument
« Antwort #15 am: 16.09.08 - 10:07:39 »
Was sagt denn der Debugger ?

"Funktioniert irgendwie nicht" ist zu pauschal.

Offline LordKiri

  • Senior Mitglied
  • ****
  • Beiträge: 252
  • aka Andreas
Re: Lesebestätigung für ein Dokument
« Antwort #16 am: 16.09.08 - 10:17:51 »
er findet den User nicht in gelesen obwohl er drin steht

zum besseren Verständnis hier ein Screen der alle 3 MsgBoxen der variablen nach einander aufzeigt
« Letzte Änderung: 16.09.08 - 10:24:12 von LordKiri »

Offline LordKiri

  • Senior Mitglied
  • ****
  • Beiträge: 252
  • aka Andreas
Re: Lesebestätigung für ein Dokument
« Antwort #17 am: 16.09.08 - 11:23:14 »
Juhu, ich habe den Fehler gefunden

positionOfChar2& = Instr(BigStrin2$, LittleString2$)

wenn man anstatt BigString2$

Bigstrin2$

schreibt kanns ja nicht funktionieren.... Danke für die Hilfe und damit wäre das Problem gelöst!!!

klaussal

  • Gast
Re: [gelöst] Lesebestätigung für ein Dokument
« Antwort #18 am: 16.09.08 - 11:38:59 »
Das hätte aber im Debugger sofort auffallen müssen.

Und wenn du "Option Declare" gesetzt hättest....

Offline billygates

  • Aktives Mitglied
  • ***
  • Beiträge: 145
  • Geschlecht: Männlich
  • Ich kann 'proprietär' nicht mehr hören!
Re: [gelöst] Lesebestätigung für ein Dokument
« Antwort #19 am: 23.09.08 - 09:20:18 »
Vielleicht verstehe ich hier ja etwas nicht:

Aber was soll der ganze Umstand?
Wie wäre es einfach mit einem @mailsend aus der bewährten Formelsprache als leckeren kleinen Einzeiler im Button?

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz