Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: botschi am 14.02.07 - 12:37:47
-
Moin,
ich habe eine eingebettete Ansicht, die in der ersten Spalte die fortlaufende Nummer der Dokumente zeigt.
Nun soll es durch einen Knopf in der Ansicht möglich sein, die Nummern der Doks um 1 zu erhöhen oder um 1 zu verringern, wodurch die Dokumente in der Ansicht eine andere Reihenfolge bekommen.
Das funktioniert auch alles.
Da jede Nummer in der eingebetteten Ansicht nur einmal vergeben sein darf, muss ich ja quasi 2 Dokumente ändern. Je nachdem, ob ich erhöhen möchte oder verringern, das markierte Dokument und das darunter oder darüber liegende.
Hat jemand eine Idee, wie ich das möglichst einfach machen kann?
Kann ich erkennen, ob mein markiertes Dokument das 1., 2., 3. oder 17. in der Ansicht ist?
So könnte ich ja einfach mein markiertes ändern und dann alle nachfolgenden auch.
Im Moment finde ich es relativ kompliziert und hoffe auf Ideen von Euch...
Danke für Ratschläge!
Matthias
-
Hallo
Um die Sorierreihenfolge der Dokumente in der Ansicht zu beinflussen, musst Du auf Werte innerhalb des Dokumentes zurückgreifen.
Wenn Du ein markiertes Dok in der Reihenfolge ändern willst, musst Du den Inhalt des entsprechenden Feldes auslesen und den Wert + 1 bzw. - 1 setzen. Dann (oder schon vorher) musst Du das Dokument ermitteln das den neuen Wert ursprünglich hatte. Dann tauscht Du die Werte ?!
-
Wie bekomme ich denn GENAU das Dokument nach oder vor meinem markierten Dokument?
Wenn ich das habe, brauch ich die Nummern der beiden Doks ja nur zu vertauschen.
Matthias
-
Mit einem "getDocumentByKey" - mach Dir eine Ansicht die in der 1. Spalte nach dem Sort-Feld sortiert ist und nur die entsprechenden Doks beinhaltet...
-
Und NotesView.GetNext- bzw. GetPrevDocument liefert Dir dann den Nachfolger und den Vorgänger zum instantiierten Dokument.
Bernhard
-
So gehts:
On Error Goto fehler
Dim ivSaem As notesdatabase ' SÄM-DB
Dim ws As New NotesUIWorkspace
Dim ivColl As NotesDocumentCollection
Dim ivBeantragtesFeld As notesdocument
Dim s As New NotesSession
Dim FeldView As notesview ' mit dieser View bekomme ich genau das Feld, was über oder unter meinem markiertem steht
Dim FeldDoc As NotesDocument
Dim ivNummer As Integer
Set ivSaem = s.CurrentDatabase
Set ivColl = ivSaem.UnprocessedDocuments
Set ivBeantragtesFeld = ivColl.GetFirstDocument
ivNummer = ivBeantragtesFeld.nr(0)
Set FeldView = ivSaem.GetView("viw_AntragNrFeldNr")
Set FeldDoc = FeldView.GetDocumentByKey(ivBeantragtesFeld.str_ticketnr(0) + Cstr(ivNummer - 1), True)
If Not FeldDoc Is Nothing Then
ivBeantragtesFeld.nr = FeldDoc.nr(0)
Call ivBeantragtesFeld.save(True, False)
FeldDoc.nr = ivNummer
Call FeldDoc.save(True, False)
End If
Call ws.ViewRefresh
Exit Sub
fehler:
Msgbox Erl
Danke Männer!
Matthias
-
Ich hoffe, dass in Deinem Error-Handler ein wenig mehr steht ?! ;)
-
Er weiß doch worauf der geklickt hat, da reicht doch die Nummer der Zeile oder nicht? :)
-
Im Moment steht da tatsächlich nicht mehr... :-\
Ich habe für mich entschieden, dass die Zeile aussagekräftiger (für mich) ist, als wenn der User einen höflichen Text "Es ist ein Fehler aufgetreten ... bitte Melden Sie diesen Fehler ..."
Denn meldet er und ich weiß trotzdem nicht genau, was Phase ist...
-
Ok - die Zeilennummer ist schon Aussagekräftig genug. Aber welcher Fehler aufgetreten ist, ist auch interessant ;-)...
...Und ich dachte immer ein resume next oder Resume MeineSprungmarke wäre auch hilfreich .. :-:
-
Wird völlig überbewertet 8)
Essen ist auch ein zeichen von Schwäche! ;D
Matthias
-
Nicht nur Frauen rasieren sich die Beine O0
-
Essen ist auch ein zeichen von Schwäche!
Aus diesem Grunde esse ich bei der Arbeit nicht !! (...nur Kaffee)..
gegessen wird zu Hause ;)