Autor Thema: Drag and Drop Problem  (Gelesen 2866 mal)

Offline Tom_S

  • Frischling
  • *
  • Beiträge: 40
  • Geschlecht: Männlich
Drag and Drop Problem
« am: 03.11.14 - 08:32:30 »
Hallo,

im Forum habe ich keine Ideen zur Lösung meines Problems gefunden, ich hoffe, ihr könnt mir weiterhelfen.

Ich hab eine Ansicht "Sitzungen" mit Dokumenten. Sind die Sitzungen vorbei, möchte ich diese in eine andere Ansicht "Archiv" verschieben. Das Archiv habe ich deshalb als Ordner erstellt. Per Drag and Drop bekomme ich die Dokument nun in das Archiv, sie bleiben aber trotzdem noch in der Ansicht "Sitzungen" sichtbar.

Deshalb wollte ich das Verschieben abfangen, sodass ich in dem Dokument ein Flag setzen kann, damit es in der Ansicht "Sitzungen" nicht mehr angezeigt wird. Aber egal, welches Ereigniss ich nehme, er reagiert auf keines.

Querydragdrop, Postdragdrop, Queryaddtofolder und sogar Querypaste und Postpaste habe ich jeweils mit einer MessageBox belegt, aber diese wird mir nie angezeigt.

Kann mir da vielleicht jemand weiterhelfen?

Besten Dank dafür schonmal und liebe Grüße
Thomas

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Drag and Drop Problem
« Antwort #1 am: 03.11.14 - 09:14:43 »
Das Event, das Du brauchst heisst "QueryAddToFolder" und muss in der View gesetzt sein, aus der das Drag & Drop gestartet wird. In Source.Documents bekommst Du dann alle gewählten Dokumente, in "Target" steht der "Ziel"- Ordnername. im einfachsten Fall machst Du sowas wie:

Code
if Cstr( Target ) = "Archiv" then
    Call Source.Documents.StampAll( "Archiv" , "1" )
End If

Und dann in der Ansicht:
Code
SELECT -DeineSelektion- & Archiv != "1"
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Tom_S

  • Frischling
  • *
  • Beiträge: 40
  • Geschlecht: Männlich
Re: Drag and Drop Problem
« Antwort #2 am: 03.11.14 - 09:27:38 »
Ahh, das muss man erstmal wissen. Nun klappt es, vielen Dank! :)

Jetzt kann ich damit mal rumspielen.

Offline Tom_S

  • Frischling
  • *
  • Beiträge: 40
  • Geschlecht: Männlich
Re: Drag and Drop Problem
« Antwort #3 am: 03.11.14 - 10:57:56 »
Hi,

nochmal ich. Es klappt erstmal alles wunderbar. In den Archiv-Ordner kann ich nun die Sitzungen per Drag&Drop reinschieben.

Nun habe ich aber folgendes Problem. Die Sitzungen haben auch noch Antwortdokumente. Diese schiebt er auch brav mit in den Ordner. Wenn allerdings vorher ein Antwortdokument gelöscht wird (heißt also Löschflag gesetzt wird, sodass es in der Ansicht nicht mehr angezeigt wird), zieht er das "gelöschte" Antwortdokument trotzdem mit in den Ordner.

Natürlich macht er es, weil es technisch ja noch zu der Sitzung gehört. Aber kann ich das irgendwie unterbinden, sodass er nicht alle Antwortdokument in den Ordner mitschiebt?

Ich habe schon versucht, beim Open-Event alle Dokumente durchzugehen und die "gelöschten" aus dem Ordner wieder zu löschen, doch dann kommt die Meldung, dass auch das Elterndokument aus dem Ordner entfernt werden muss. ::)

Vielen Dank nochmals und liebe Grüße
Thomas

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Drag and Drop Problem
« Antwort #4 am: 03.11.14 - 11:07:18 »
Erst mal allgemein: Natürlich geht auch das... Aber um Deine Frage konkret zu beantworten, müsste man schon Code sehen. DENN: Durch das reine verschieben eines Haupt- Dokumentes werden ja nicht automatisch alle Antwort- Dokumente mitverschoben. Wenn das passiert, ist das ja schon Dein Code... Und dass "hinzufügen" von Dokumenten in einen Ordner mit Antworthierarchie funktioniert nur, wenn man die ganze Hierarchie hinzufügt. Beim entfernen ist mir diese Nachricht noch nie untergekommen. Auch hier ist es also wahrscheinlich wieder ein hausgemachtes Code- Problem, dass man dann aber auch nur mit Hilfe des Codes lösen kann...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Tom_S

  • Frischling
  • *
  • Beiträge: 40
  • Geschlecht: Männlich
Re: Drag and Drop Problem
« Antwort #5 am: 03.11.14 - 11:19:59 »
Also verschieben tue ich eigentlich nichts per Code. Ich wähle das Sitzungsdokument aus der Ansicht aus (wo auch die Antwortdokumente angezeigt werden) und verschiebe es in den Ordner. Dort sind dann automatisch auch die Antwortdokumente mit verschoben worden.

Im "Queryaddtofolder" der Ansicht - aus der ich die Sitzung rüberschiebe - habe ich folgenden Code.
Code
Sub Queryaddtofolder(Source As Notesuiview, Target As Variant, Continue As Variant)
	Dim work As New NotesUIWorkspace
	Dim doc As NotesDocument
	Dim docsVorlagen As NotesDocumentCollection
	Dim docVorlage As NotesDocument
	Dim zaehler1 As Integer
	Dim zaehler2 As Integer
	
	If Cstr(Target) = "foSitzungenArchiv" Then
		For zaehler1 = 1 To Source.Documents.Count
			Set doc = Source.Documents.GetNthDocument(zaehler1)
			
			If doc.GetItemValue("Form")(0) = "frmSitzung" Then
				Set docsVorlagen = doc.Responses
				
				For zaehler2 = 1 To docsVorlagen.Count
					Set docVorlage = docsVorlagen.GetNthDocument(zaehler2)
					If docVorlage.GetItemValue("versteckt_vorl_geloescht")(0) = "false" Then
						docVorlage.ReplaceItemValue "versteckt_vorl_Archiv", "true"
						docVorlage.Save True, True
					End If
				Next zaehler2
				
				doc.ReplaceItemValue "versteckt_sitz_Archiv", "true"
				doc.Save True, True
			Else
				Continue = False
			End If
		Next zaehler1
		
		work.ViewRefresh
	End If
End Sub
Der prüft ja nur, ob es auch der Archiv-Ordner ist ("foSitzungenArchiv" und geht dann die zu verschiebenen Dokumente durch und setzt das Archiv-Flag im Dokument, sodass diese in der Ursprungsansicht nicht mehr angezeigt wird.

Betätige ich eben vor dem Verschieben die "Löschen"-Aktion wird das Feld "versteckt_vorl_geloescht" auf "true" gesetzt. Aber dennoch schiebt er es mit rüber, weil es ja technisch trotzdem noch ein Antwortdokument ist, auch wenn es in der Ansicht nicht mehr angezeigt wird.

Im "Queryopen" des Ordners habe ich dann folgendes versucht. Beim Versuch, ein "gelöschtes" Antwortdokument aus dem Ordner zu entfernen, kommt dann die Meldung "Notes Fehler: Wenn Sie ein Antwortdokument aus einem Ordner entfernen möchten, der die Antworthierarchie anzeigt, müssen Sie auch das Hauptdokument der obersten Ebene entfernen (foSitzungenArchiv)".
Code
Sub Queryopen(Source As Notesuiview, Continue As Variant)
	Dim work As New NotesUIWorkspace
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim view As NotesView
	Dim entries As NotesViewEntryCollection
	Dim doc As NotesDocument
	Dim zaehler1 As Integer
	
	Set db = session.CurrentDatabase
	Set view = db.GetView("foSitzungenArchiv")
	Set entries = view.AllEntries
	
	For zaehler1 = 1 To entries.Count
		Set doc = entries.GetNthEntry(zaehler1).Document
		If doc.GetItemValue("Form")(0) = "frmSitzung" Then
			If doc.GetItemValue("versteckt_sitz_geloescht")(0) = "true" Then
				doc.RemoveFromFolder("foSitzungenArchiv")
			End If
		Elseif doc.GetItemValue("Form")(0) = "frmVorlagenthema" Then
			If doc.GetItemValue("versteckt_vorl_geloescht")(0) = "true" Then
				doc.RemoveFromFolder("foSitzungenArchiv")
			End If
		End If
	Next zaehler1
	
	work.ViewRefresh
End Sub

Ich hoffe, ich verwirre nicht zu sehr mit meinem Beitrag.

Vielen Dank für deine Mühe!
Thomas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz