Autor Thema: Frontend - Backend - Frontend bearbeiten  (Gelesen 5081 mal)

Offline Sabine

  • Aktives Mitglied
  • ***
  • Beiträge: 112
  • Geschlecht: Weiblich
Frontend - Backend - Frontend bearbeiten
« am: 21.11.06 - 16:11:20 »
Schönen guten Abend,

ich stehe seit geraumer Zeit vor einem großem Problem, dieses stellt sich wie folgt dar:

1) Ich öffne ein bestehendes Dokument (beim erstellen neuer Dokumente in der DB tritt kein Speicherkonflikt auf).

2) Dann soll der Anwender das Dokument im Frontend bearbeiten dürfen und durch Drücken einer Schaltfläche einen Dateianhang in einen RTF erstellen dürfen.

3) Diesen Anhang soll er selbstverständlich auch gleich im Frontend sehen. Das ist auch kein Problem mit der ReOpenFunktion von ata.

4) Aber nun stellt sich folgende Problematik! Nachdem der Anwender den Anhang erstellt hat soll es ihm auch wieder möglich sein das Frontend zu verändern! Und hier bekomme ich (aber immer nur bei bestehenden Dokumenten, also nicht bei neu erstellten) den Fehler "Eine weitere Kopie dieses Dokumentes wurde gespeichert, während Sie das Dokument bearbeiteten..."!

Das Häkchen bei den Maskeneigenschaften "Konfliktbehandlung" hat keine Auswirkungen auf Speicherkonflikte wohl nur Replizierkonflikte, um das schon mal vorab zu nehmen?!?!

Kann mir jemand einen Tipp geben? Bin für jede Hilfe dankbar!

Aber hier noch ein bißchen Sript:

In der Schaltfläche im Declarations-Bereich
Code
'Deklarationen von Konstanten
Const cVorlage="Stellungnahme zur Gremienvorlage"
Const cOleView="(Vorlagen)"

Dim db As NotesDatabase
Dim unid As String 
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument 

Im Ereignis Click:
Code
Sub Click(Source As Button)
	'Deklarationen Allgemein
	Dim session As New NotesSession
	Dim uiw As New NotesUIWorkspace
	Dim oleView As NotesView
	Dim oleDoc, profildoc As NotesDocument
	Dim Attach As NotesEmbeddedObject
	Dim wd As Variant
	Dim ritem As Variant
	Dim wddoc As Variant
	Dim Path As Variant
	Dim Word As Variant
	Dim cDefPath
	Dim Continue
	
	'Zuweisungen
	Set db=session.CurrentDatabase
	Set uidoc=uiw.CurrentDocument
	Set profildoc=db.GetProfileDocument("Profil")	
	
	Set doc=uidoc.Document
	
	'On Error Goto Ende
	
	'Eingabeüberprüfung für bestimmte Pflichtfelder, 
	'bevor und /oder ob das Dokument gespeichert werden darf!
	Dim gremium As Variant
	gremium = uidoc.fieldgettext ("Gremium")
	
	Dim sitzung As Variant
	sitzung = uidoc.fieldgettext ("SitzungNr")
	
	Dim jahr As Variant
	jahr = uidoc.fieldgettext ("Jahr")
	
	Dim datum As Variant
	datum = uidoc.fieldgettext ("Datum")
	
	Dim top As Variant
	top = uidoc.fieldgettext ("TOP")
	
	Dim betreff As Variant
	betreff = uidoc.fieldgettext ("Betreff")
	
	If gremium="" Or sitzung="" Or jahr="" Or datum="" Or top="" Or betreff ="" Then 
		Msgbox "Bitte füllen sie alle Pflichtfelder aus!"
		Continue=False            
		Exit Sub
	End If
	
	'Dieses Script erstellt Stellungnahmen zu Gremienvorlagen
	cDefPath=profildoc.GetItemValue("Speichern")
	
	'Word-Vorlage einbinden
	Set oleview=db.GetView(cOleView)
	Set oledoc=OleView.GetDocumentByKey("Stellungnahme zur Gremienvorlage",True)
	Set Attach=oleDoc.GetAttachment(cVorlage+".doc")
	Call Attach.ExtractFile(cDefPath(0) & "Stellungnahme zur Gremienvorlage" & ".doc")
	Set wd=CreateObject("Word.Application")
	Set wddoc=wd.Documents.Open(cDefPath(0) & "Stellungnahme zur Gremienvorlage.doc")
	wd.Visible=False
	'wd.Visible=True
	
'	'Worddokument mit Daten füllen
	wddoc.Bookmarks("Gremium").Range.Text=uidoc.FieldGetText("Gremium")
	wddoc.Bookmarks("SitzungNr").Range.Text= sitzung & jahr 'uidoc.FieldGetText("SitzungNr")'&"Jahr")
	wddoc.Bookmarks("Datum").Range.Text=uidoc.FieldGetText("Datum")
	wddoc.Bookmarks("TOP").Range.Text=uidoc.FieldGetText("TOP")
	
	Const wdAllowOnlyFormFields = 2
	wd.ActiveDocument.Protect wdAllowOnlyFormFields, True, ""
	
	wd.DisplayAlerts = False
	wddoc.close 
	wd.Quit 	
	
	Set doc = uiw.CurrentDocument.Document 
	
	Dim object As NotesRichTextItem
	Set object = New NotesRichTextItem(doc, "Anhang")
	
	Path=cDefPath(0) & "Stellungnahme zur Gremienvorlage.doc"
	
	If Isempty(Path) Then 
		Exit Sub 	
	End If
	
	If object.type = 1 Then
		Call object.EmbedObject( EMBED_ATTACHMENT, "", Path,)
		Call object.Update
		Call doc.Save(True , True) 
		Call ReOpen(doc) 		
	End If
	Exit Sub	
	
Ende:
	wddoc.close 
	wd.Quit
End Sub

In der Function ReOpen:
Code
Function ReOpen(doc As NotesDocument) As Integer 
	Dim ws As New NotesUIWorkspace 
	Dim uidoc As NotesUIDocument 
	Dim dbThis As NotesDatabase 
	Dim unid As String 
	
	ReOpen = 0 
	Set dbThis = doc.ParentDatabase 
	Call doc.Save(True , True) 
	unid = doc.UniversalID 
	doc.SaveOptions = "0" ' # ... Speicherabfrage vermeiden 
	Set uidoc = ws.CurrentDocument 
	Call uidoc.Close 
	Set doc = dbThis.GetDocumentByUNID(unid) 
	Set uidoc = ws.EditDocument(True , doc) 
	Set doc = uidoc.Document 
	If doc.HasItem("SaveOptions") Then  
            ' # ... das Feld SaveOptions wieder entfernen... 
		doc.RemoveItem("SaveOptions") 
		Call doc.Save( True , True ) 
	End If 
	ReOpen = 1 
	Print "Das Dokument wurde erneut geöffnet" 
End Function 



Zur Ergänzung in der Maske habe ich ein Feld "SaveOptions" - brechnet - auf SaveOptions

Gruß Sabine  :-:
« Letzte Änderung: 04.12.06 - 11:30:58 von Sabine »

botschi

  • Gast
Re: Frontend - Backend - Frontend bearbeiten
« Antwort #1 am: 21.11.06 - 16:32:17 »
Brauchst Du in der Funktion "ReOpen" das Call doc.Save( True , True )?
Und im Click (kurz bevor Du ReOpen nutzt) hast Du auch eins.
Das wird vielleicht sein...

Offline Sabine

  • Aktives Mitglied
  • ***
  • Beiträge: 112
  • Geschlecht: Weiblich
Re: Frontend - Backend - Frontend bearbeiten
« Antwort #2 am: 21.11.06 - 16:34:03 »
@botschi ,

das war auch zunächst meine Intuition, aber das bringt leider auch nicht die Lösung  :(

aber trotzdem danke

botschi

  • Gast
Re: Frontend - Backend - Frontend bearbeiten
« Antwort #3 am: 21.11.06 - 16:36:04 »
Wenn Du beide Save-Anweisungen entfernst, kommt die Meldung trotzdem  ???

Offline Sabine

  • Aktives Mitglied
  • ***
  • Beiträge: 112
  • Geschlecht: Weiblich
Re: Frontend - Backend - Frontend bearbeiten
« Antwort #4 am: 21.11.06 - 16:44:24 »
Ein Save brauche ich schon, denn wenn ich die beiden Save-Anweisungen heraus nehme, dann bekomme ich folgende Fehlermeldung... "Invalid universal ID".

Und wenn ich nur die Save-Anweisung im Click-Ereignis heraus nehme, dann bekomme ich wieder einen Speicherkonflikt und wenn ich das Save in der Function ReOpen heraus nehme dann bekomme ich wiederum einen Speicherkonflikt ...

botschi

  • Gast
Re: Frontend - Backend - Frontend bearbeiten
« Antwort #5 am: 21.11.06 - 16:55:07 »
Denn kann kein Anhang angelegt werden, wenn das Dok noch neu ist- OK.
Kannst Du -wenn das Dok neu ist- das Dok erst speichern und dann einen Anhang anlegen? Also Anhang erst, wenn das Dok nicht neu ist.
Dann brauchst Du doch nur noch eine Save-Anweisung, oder?

Ich denke jedenfalls, dass Du mit dem Save spielen musst, denn da liegt der Hund wohl begraben. Ein Konfliktdokument entsteht z.B. ja, wenn ein Frontend-Dok im Backend gespeichert wird und das Frontend dann auch.
Oder mach zwischen den beiden Save-Anweisungen doch mal ein uidoc.refresh, damit das Frontend die Änderungen des Backends bekommt.

Offline Sabine

  • Aktives Mitglied
  • ***
  • Beiträge: 112
  • Geschlecht: Weiblich
Re: Frontend - Backend - Frontend bearbeiten
« Antwort #6 am: 22.11.06 - 07:22:09 »
Zitat
Denn kann kein Anhang angelegt werden, wenn das Dok noch neu ist- OK.
Kannst Du -wenn das Dok neu ist- das Dok erst speichern und dann einen Anhang anlegen? Also Anhang erst, wenn das Dok nicht neu ist.
Dann brauchst Du doch nur noch eine Save-Anweisung, oder?
Wenn das Dokument neu ist, dann klappt alle wunderbar. Ich kann Eingaben in der Maske im Frontend tätigen, dann meinen Anhang im Backend erstellen und dann wieder im Frontend arbeiten und alles anschließend ohne Probleme speichern. Aber nicht, wenn ich bereits das Dokument einmal gespeichert habe und bereits einen Anhang angehängt habe.

Zitat
Ich denke jedenfalls, dass Du mit dem Save spielen musst, denn da liegt der Hund wohl begraben. Ein Konfliktdokument entsteht z.B. ja, wenn ein Frontend-Dok im Backend gespeichert wird und das Frontend dann auch.
Oder mach zwischen den beiden Save-Anweisungen doch mal ein uidoc.refresh, damit das Frontend die Änderungen des Backends bekommt.
Ích habe mit dem Save schon ohne Ende gespielt, im Frontend - im Backend - refreshed habe ich auch schon, aber das nutzt eben alles nichts  :(

Vielleicht ist das ja auch garnicht möglich so wie ich es mir vorstelle?  :-:


botschi

  • Gast
Re: Frontend - Backend - Frontend bearbeiten
« Antwort #7 am: 22.11.06 - 09:46:24 »
Mensch Sabine,

da fällt mir nun auch nix mehr ein  ???
Ich habe auch leider keine Zeit das hier bei uns nachzubauen. Wenn man die ganze Umgebung sieht, findet man vielleicht eher was.

Gruss, Matthias

Offline Sabine

  • Aktives Mitglied
  • ***
  • Beiträge: 112
  • Geschlecht: Weiblich
Re: Frontend - Backend - Frontend bearbeiten
« Antwort #8 am: 22.11.06 - 09:53:46 »
@Botschi,

aber trotzdem ein großes Dankeschön an Dich. Ich versuchs eben noch ein bißchen, bin aber schon sehr lange an dem Problem dran, ansonsten muß ich mir eine Ersatzlösung einfallen lassen.

Schönen Tag noch,

Gruß Sabine  :)

Offline ghost

  • Aktives Mitglied
  • ***
  • Beiträge: 174
  • Geschlecht: Männlich
  • Notes ist gut!
Re: Frontend - Backend - Frontend bearbeiten
« Antwort #9 am: 22.11.06 - 10:31:13 »
Hallo Sabine,

versuch doch mal vor dem Save einen uidoc.Reload einzufügen, um das Backend Document ins Frontend zu laden. Es könnte sein, dass sich Backend und Frontend unterscheiden und dies zu dem Speicherkonflikt führt.

Viele Grüße
ghost

Offline Sabine

  • Aktives Mitglied
  • ***
  • Beiträge: 112
  • Geschlecht: Weiblich
Re: Frontend - Backend - Frontend bearbeiten
« Antwort #10 am: 22.11.06 - 11:06:29 »
@Ghost,

ich hatte schon mal bei meinen ganzen Versuchen ein Reload versucht, dass ging nicht. Nun habe ich es nochmals versucht, aber da kommt wieder der Speicherkonflikt. Hatte zunächst die Reload Anweisung vor das erste Save gesetzt, dann vor die letzte Save-Anweisung und zuletzt vor beide, aber leider keine Chance - es kommt immer wieder der Speicherkonflikt-.  :(

Trotzdem Dankeschön...

Gruß Sabine

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: Frontend - Backend - Frontend bearbeiten
« Antwort #11 am: 22.11.06 - 11:20:26 »
Ich habe das bei mir mal ganz rudimentär nachgestellt, ohne das Erstellen eine Worddokumentes, also nur Datei anhängen, Reopen, editieren speichern. Es funktioniert einwandfrei.

Könnte es sein, dass der Hund an einer anderen Stelle begraben liegt. Erfolgen automatisiert noch andere Berechnungen oder Umsetzungen, z.B. berechnete Felder, Eingabeübersetzungen oder so was? Ist aber nur eine Vermutung.

Hast du auch schon mal versucht die cache.ndk zu löschen oder mal alle Scripts neu zu kompilieren? Klingt zwar ein bisschen unwahrscheinlich, aber ein Versuch ist's wert.

Besteht evt. die DB mit ein paar Testdokumenten hier reinzuhängen?


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

Offline Sabine

  • Aktives Mitglied
  • ***
  • Beiträge: 112
  • Geschlecht: Weiblich
Re: Frontend - Backend - Frontend bearbeiten
« Antwort #12 am: 22.11.06 - 11:56:13 »
Hallo Axel,

habe nun die Cache.ndk gelöscht und auch das Script neu kompiliert, aber leider hat es nichts genutzt  :( ... schade, ein Versuch war es auf jeden Fall wert.

Ich greife in der besagten Maske auf ein Profildokument zu und hier und da habe ich ein paar berechnete Felder drin. Aber diese haben nicht mit dem Anhang zu tun. Habe auch die Funktion "sperren von Dokumenten" aktiviert!

Habe die DB mal angehängt...

Danke Dir...




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: Frontend - Backend - Frontend bearbeiten
« Antwort #13 am: 22.11.06 - 12:24:57 »
Ich habe mal ein bisschen gespielt und kann keinen Fehler finden. Bei mir funktioniert's
 
Neues Dokument - Stellungnahme erstellt - Speichern
Dokument bearbeitet - ein paar Felder geändert - Speichern

Allerdings ist das Dokument nach dem Einfügen des Anhangs im Lesemodus.

Oder macht ich beim Test was falsch?

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

Offline Sabine

  • Aktives Mitglied
  • ***
  • Beiträge: 112
  • Geschlecht: Weiblich
Re: Frontend - Backend - Frontend bearbeiten
« Antwort #14 am: 22.11.06 - 12:48:40 »
Du müßtest die zweite Schaltfläche nehmen, sorry. Das habe ich vergessen zu sagen.
Das mit dem Lesemodus also der ersten Schaltfläche wäre nur eine von mir ausgedachte Hilfslösung.

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: Frontend - Backend - Frontend bearbeiten
« Antwort #15 am: 22.11.06 - 13:24:46 »
Aber auch da funktioniert's.


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

Offline Sabine

  • Aktives Mitglied
  • ***
  • Beiträge: 112
  • Geschlecht: Weiblich
Re: Frontend - Backend - Frontend bearbeiten
« Antwort #16 am: 22.11.06 - 13:31:31 »
Ich verstehe das nicht!

Ich habe es nun lokal probiert und es funktionert einwandfrei, so wie Du sagtest... aber die DB, die auf dem Server liegt macht da nicht mit. Sehr eigenartig! Vielleicht liegt das ja auch an der Dokumentensperre, glaube ich aber nicht wirklich. Ich lege nochmal eine neue Kopie auf dem Testserver an... seltsam... und gebe dann Bescheid!

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: Frontend - Backend - Frontend bearbeiten
« Antwort #17 am: 22.11.06 - 13:40:31 »
Die Dokumentensperre habe ich testhalber deaktiviert gehabt. Aber auch mit der entsprechenden Option hat das Ganze funktioniert.

Wobei ich allerdings immer einen Warnhinweis erhalten habe, dass er einen Master - Server für die Sperre nicht finden würde.

Vielleicht liegt's doch an dieser Option. Aus welchem Grund hast du die denn gesetzt?

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

Offline Sabine

  • Aktives Mitglied
  • ***
  • Beiträge: 112
  • Geschlecht: Weiblich
Re: Frontend - Backend - Frontend bearbeiten
« Antwort #18 am: 22.11.06 - 13:45:31 »
So, ich denke mal, dass ich nun die Ursache meines Problems mit großer Hilfe von Axel gefunden habe!!!  :D

Wenn ich die DB auf den Server kopiere, dann funktioniert alles noch einwandfrei, aber sobald ich einen Administrationsserver in der Zugriffskontrollliste eintrage funktioniert es nicht mehr und ich erhalte wieder Speicherkonflikte...!  :(

Wie ich das Problem jetzt beheben kann muß ich noch in Erfahrung bringen, aber sobald ich eine Lösung gefunden habe schreibe ich diese hier rein!

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: Frontend - Backend - Frontend bearbeiten
« Antwort #19 am: 22.11.06 - 13:50:02 »
Lass doch mal die Option "Sperren von Dokumenten zulassen" weg und trage dann einen Admin-Server ein.

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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz