Autor Thema: doclinks werden nach dem Speichern zu db-Link?  (Gelesen 2192 mal)

Offline emadowo

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
  • Danke für dieses Forum!
doclinks werden nach dem Speichern zu db-Link?
« am: 22.12.11 - 11:07:18 »
Hallo,
habe eine "Handbuch-Datenbank" umprogrammiert. Aber nur Ansichten, Masken, neue Felder und eine "Bearbeitungsfunktion". Eigentlich nix b'sonders diviziles. Nach Schablonenwechsel tritt das Fänomän auf, daß in Dokumenten enthaltene doclinks (die auf andere Dokumente innerhalb dieser DB zeigen) beim Speichern sich zu db-Links verwandeln.

Hab im Forum schon gesucht und den Hinweis auf das Item $Links gefunden: bei Dokumenten, die noch nicht wieder gespeichert wurden, ist das $Links vorhanden, nach einem Speichern nicht mehr.  Nun weiß ich aber nicht weiter...

Danke für eure Hilfe!!
« Letzte Änderung: 02.01.12 - 16:55:54 von earchy »
Erwin Maier
IT-Administration Genossenschaftsbank
Notes R9.01
Kenntnisse: Formelsprache, Script

Offline Hatschi

  • Junior Mitglied
  • **
  • Beiträge: 96
Re: doclinks werden nach dem Speichern zu db-Link?
« Antwort #1 am: 22.12.11 - 13:56:21 »
Hallo Erwin,

das Problem hatten wir auch in einer Datenbank. Erklären konnten wir und das nicht.

Es wurde von einem im Frontend befindlichem Dokument eine Kopie im Backend erstellt. Das Frontend geschlossen, und die Kopie im Backend angepasst und gespeichert. Dann wurde das alte Dokument zum Antwortdokument des neuen Dokumentes gemacht. Dabei kam es zu dem Problem mit der Umwandlung von einem Doklink in einen DB-Link.

Gelöst wurde das Problem durch die Auslagerung des Programmteils zur Erzeugung der Antwortdokumente in einen eigenen Agenten, der dann aufgerufen wurde. Mit diesem Würgaraund können wir leben.
Als Erklärung hätte ich dafür nur ein Timingproblem zwischen Front- und Backend, das durch den ausgelagerten Programmteil vielleicht entschärft wird. Auch schließe ich die eingesetzte History-Funktion als Ursache nicht ganz aus.

Vielleicht hilft dir das weiter.

Bernd

Offline emadowo

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
  • Danke für dieses Forum!
Re: doclinks werden nach dem Speichern zu db-Link?
« Antwort #2 am: 23.12.11 - 16:17:27 »
Hallo,
vielen Dank, aber das hilft mir nicht weiter. Eine Bitte ans Forum, schaut euch doch bitte meine Codes an, ob ich da was verkehrt mache!

Vorweg die Sachlage:
Es ist ein Handbuch. Mit vielen Doc-Links in den Dokumenten untereinander innerhalb der DB. Das Dokument wird, wenn Änderungen erforderlich, aus der View raus über Script auf "in Bearbeiten" gesetzt und dabei der Inhalt "Body" in ein Bearbeitungsfeld "BodyinBearbeitung" (beides RT-Felder) gesetzt und die Maske gewechselt. Mit dem Maskenwechsel steuere ich, daß die User den derzeit gültigen Eintrag sehen, diewelchen das Dokument bearbeiten müssen, die zu Bearbeitenden beieinander haben. Wird ein Dokument bearbeitet, ist der Doc-Link noch da. D.h. das Kopieren ins Bearbeitungsfeld und der Maskenwechsel können nicht Schuld dran sein.
Nach dem Speichern einer Änderung ist der doc-Link in einen db-Link verwandelt.

Hier die Codes:

"Dokument auf in Bearbeitung setzen":
Code
Sub Click(Source As Button)
	Dim Sitzung As New NotesSession
	Dim db As NotesDatabase
	Dim Sammlung As NotesDocumentCollection
	Dim Dokument As NotesDocument
	Set db = Sitzung.CurrentDatabase
	Set Sammlung = db.UnprocessedDocuments 
	Set Dokument = Sammlung.GetFirstDocument()
	Do While Not (Dokument Is Nothing)
		Dim bereitsinBearbeitung As String
		bereitsinBearbeitung = Dokument.StatusinBearbeitung(0)
		If bereitsinBearbeitung = "1" Then 
			Msgbox "Dieses Dokument befindet sich bereits in Bearbeitung!",16, "ACHTUNG"
			Exit Sub
		End If
		
' Richtextfeld Body nach BodyinBearbeitung kopieren
		Dim ritem1 As NotesRichTextItem
		Dim ritem2 As NotesRichTextItem
		Set ritem1 = Dokument.GetFirstItem("Body")
		Set ritem2 = New NotesRichTextItem(Dokument,"BodyinBearbeitung")
		Call ritem2.AppendRTItem(ritem1)
		
' wer bearbeitet das Dokument und Status in Bearbeitung = 1
		Dim user As String			
		user = Sitzung.CommonUserName
		Dokument.inBearbeitungdurch = user
		Dokument.StatusinBearbeitung =  "1" 
		Dokument.Inhalt_letzte_Änderung = " "
		
' Maske auf Eintrag in Bearbeitung wechseln		
		Dokument.Form="Eintrag in Bearbeitung"  
		
' ... speichere Dokument ab
		Call Dokument.Save(True,False,True)
		Set Dokument = Sammlung.GetNextDocument(Dokument)
	Loop
	Msgbox "Die markierten Dokumente wurden auf 'in Bearbeitung' gestellt." + Chr(13) + "Bitte nun über die Ansichten 'in Bearbeitung nach . . . ' bearbeiten!"
End Sub

"Speichern & Schließen":

Code
Sub Click(Source As Button)
	Dim workspace As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument
	Set uidoc = workspace.CurrentDocument
	
' im Backend speichern mit drittem "True" , dann bleibt das Dokument "gelesen"
	Dim backdoc As NotesDocument
	Set backdoc = uidoc.Document
	Call backdoc.Save(True,False,True)	
	
' Meldung und schließen im Frontend
	Msgbox "Das Dokument wurde gespeichert."
	Call uidoc.Save
	Call uidoc.Close(True)
	
End Sub
(Ach ja: wenn ich die Schaltfläche speichern & schließen nicht verwende sonder ESC > Speichern Ja, ists genauso)

Vielen Dank für alles und FROHE Weihnachten!!  :)
Erwin Maier
IT-Administration Genossenschaftsbank
Notes R9.01
Kenntnisse: Formelsprache, Script

Offline Hatschi

  • Junior Mitglied
  • **
  • Beiträge: 96
Re: doclinks werden nach dem Speichern zu db-Link?
« Antwort #3 am: 02.01.12 - 11:28:04 »
Hallo Erwin,

verstehe ich das richtig?
Die Anwender gehen also erst in einer Ansicht hin und markieren die zu bearbeitenden Dokumente. Anschließend öffnen sie ein so markiertes Dokument zur Bearbeitung. Bis dahin ist noch alles in Ordnung. Wenn der Anwender jetzt aber seine Änderungen speichert, dann geht der Doklink kaputt?

Wird beim Speichern noch in ein anderes Ereignis gewechselt(QuerySave/QueryClose . . .)? Z.B. um den Status Dokument.StatusinBearbeitung(0) wieder zurückzusetzen? Vielleicht kommt es hierbei zu einer Wechselwirkung zwischen Front- und Backend.

Bernd

Offline emadowo

  • Aktives Mitglied
  • ***
  • Beiträge: 105
  • Geschlecht: Männlich
  • Danke für dieses Forum!
Re: doclinks werden nach dem Speichern zu db-Link?
« Antwort #4 am: 02.01.12 - 15:09:45 »
Hallo Bernd,
heute morgen stellte ich folgendes fest: es waren in den Dokumenten noch Item-Leichen namens $Leser, $Ber_DocAuthor und $darf_freigeben drin, die ich in Masken und Ansichten nicht mehr verwendete. Es sind Felder aus einer früheren (<2001 oder so) verwendeten Standardschablone eines Organisationshandbuches.

Diese Items habe ich über einen Agenten (Call Dokument.RemoveItem( "$Ber_DocAuthor" )) gelöscht - und siehe da - die doclinks bleiben und all die anderen ominösen (in diesem Thread gar nicht mal erwähnten) Fälle wie z.B. daß einzelne User Dokumente nicht mehr bearbeiten konnten und manche wenige Dokumente nicht mehr sahen, sich in Luft auflösten.

Nun kapier ich zwar immer noch nicht, was Felder zur Leseberechtigung mit der Veränderung der doclinks zu tun haben kann - aber egal - ES GEHT!!!

Vielen Dank für deine Mühen!

Erwin
Erwin Maier
IT-Administration Genossenschaftsbank
Notes R9.01
Kenntnisse: Formelsprache, Script

Offline FrankLU

  • Aktives Mitglied
  • ***
  • Beiträge: 116
  • Geschlecht: Männlich
Re: doclinks werden nach dem Speichern zu db-Link?
« Antwort #5 am: 25.04.12 - 14:03:08 »
Hallo Mitstreiter!

Auch ich hatte so ein Problem: Bisher wurden in einem Servicefall-Dokument eingereichte Unterlagen zum Fall als File-Attachment in einem RT-Feld gespeichert (mit Hilfe der "Büroklammer" oder per Funktion). Dadurch wurde aber die DB aufgebläht und langsam. Eine Lösung sollte die Auslagerung dieser Anhänge in Dokumente einer eignen Anhangs-DB sein. Diese Anhangs-Dokumente wollte ich mit DocLinks im RT-Feld des Servicefall-Dokuments zugänglich machen. Das funktionierte auch, auch, wenn ich mehrere Anhangs-Dokumente erzeugte und anhing, aber nur solange, wie das Servicefall-Dokument nicht gespeichert und geschlossen wurde. Sollte ein weiteres Anhangs-Dokument per Programm erzeugt und verlinkt werden, verwandelten sich die schon vorhandenen DocLinks in DBLinks.

Ich stellte dann fest, dass die DocLinks erhalten blieben, wenn das RT-Feld in der Maske "Bearbeitbar" und nicht "Berechnet" war. Dabei spielte es keine Rolle, ob ein Vorgabewert (der Feldname) eingetragen war oder nicht.

Da bei einem bearbeitbaren RT-Feld aber die Gefahr bestand, dass der Benutzer den DocLink löscht, ohne das verlinkte Dokument zu löschen, bin ich von den DocLinks abgekommen und lasse die Anhangsdokumente zum Servicefall in einer eingebetteten Ansicht anzeigen.

Auf meine Autorenfelder kann ich leider nicht verzichten.

Grüße
Frank
Frank Lohöfer
MD Medicus Holding GmbH
Client (User): 12.0.1
Client (Admin): 12.0.1
Server: 9.0 auf Linux

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: doclinks werden nach dem Speichern zu db-Link?
« Antwort #6 am: 25.04.12 - 14:33:39 »
Eventuell hätte geholfen, das Richtextfeld bearbeitbar zu lassen und in einen zugriffsgesteuerten Abschnitt zu stellen, in dem niemand Bearbeitungsrecht hat.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz