Domino 9 und frühere Versionen > ND6: Entwicklung
"MoveUp" button
Sweety:
Guten Morgen,
ich habe grade folgendes Problem:
ich habe in einer Ansicht ein "Move Up" bzw. Move Down" button eingebaut, der mit einem Action verbunden ist. Es soll dadurch eine Zeile in der Ansicht nach oben bzw. nach untern verschieben werden. Leider klappt es nicht wie erwartet. Kann jemanden mir Vielleicht sagen, was ich Falsche gemacht habe.... :-:
Ich bekomme immer die Meldung "You can't move the document any higher.", obwohl es ein höher Dokument gibt.
Der Action für die "Move up" button ist wie folgt:
--- Code: ---Sub Click(Source As Button)
Dim ses As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim uiView As NotesUIView
Dim view As NotesView
Dim doc As NotesDocument
Dim prevDoc As NotesDocument
Set db = ses.CurrentDatabase
Set uiview = ws.CurrentView
Set view = uiview.View
Set dc = db.UnprocessedDocuments
On Error Resume Next
If (dc.Count <> 1) Then
Messagebox "You have to select a document to move.", 16, "Error"
Exit Sub
End If
Set doc = dc.GetFirstDocument()
Set prevDoc = view.GetPrevDocument( doc)
Do Until prevDoc.Form( 0) <> "Document"
Set prevDoc = view.GetPrevDocument( prevDoc)
If prevDoc Is Nothing Then Exit Do
Loop
If ( prevDoc Is Nothing) Then
Messagebox "You can't move the document any higher.", 48, "Error"
Exit Sub
End If
Call SwapDocuments( prevDoc, doc)
ws.ViewRefresh
uiview.SelectDocument( doc)
End Sub
--- Ende Code ---
Die SwapDocuments wie folgt :
--- Code: ---Sub SwapDocuments( sourceDoc As NotesDocument, destDoc As NotesDocument)
Dim ssort As Integer
Dim dsort As Integer
ssort = sourceDoc.Nb_SortOrder(0)
dsort = destDoc.Nb_SortOrder(0)
If ssort = dsort Then
ssort = dsort + 1
End If
sourceDoc.Nb_SortOrder = dsort
destDoc.Nb_SortOrder = ssort
Call sourceDoc.Save(True,False)
Call destDoc.Save(True,False)
End Sub
--- Ende Code ---
Ich hoffe mir kann jemand helfen ... :-\
Vielen Dank im Voraus :)
Gruß
Salih
Axel:
Ich habe mir das nur mal auf die Schnelle angeschaut und glaube, dass das so überhaupt nicht funktionieren kann.
Wenn ich das so sehe, sortierst du innerhalb der Ansicht nach dem Feld Nb_SortOrder. Richtig?
Was mir aufgefallen ist, dass du zwar zwei Dokument "tauschst", aber du müsstest auch bei allen anderen Dokumenten das Feld Nb_SortOrder entsprechend anpassen. Sonst kann die Reihenfolge nicht stimmen.
Axel
tks:
Sorry, aber so wie ich den Code lese, macht der was ganz anderes.
dc = alle unprocessed Docs. Soll das so sein? Alle Dokumente die noch nicht vom Agenten verarbeitet wurden?
doc = erstes noch nicht verarbeitetes Dokument
prevdoc = eins vor doc (also eins vor dem Ersten, das Letzte?)
Dann nochmal prevdoc eins vor das aktuelle prevdoc?
Und bei SwapDocuments steige ich auch nicht ganz durch.
Du willst doch ein markiertes Dokument in einer Ansicht nach oben oder unten verschieben. Dann brauchst Du also aus der uiView das ausgewählte Dokument und dann je nach Richtung das vorherige oder das nächste Dokument Und die Beiden tauschen dann die Ordnungsnummern.
Oder versteh ich was falsch?
Sweety:
Erstmal Vielen Dank für die Schnelle Antworten....
@Axel
--- Zitat ---sortierst du innerhalb der Ansicht nach dem Feld Nb_SortOrder. Richtig?
--- Ende Zitat ---
Ja, das ist richtig.
--- Zitat ---du müsstest auch bei allen anderen Dokumenten das Feld Nb_SortOrder entsprechend anpassen. Sonst kann die Reihenfolge nicht stimmen.
--- Ende Zitat ---
Ja..da hast du Recht...daran habe ich nicht gedacht...ich glaube das könnte daran liegen. Danke für den Tipp, ich werde es gleich ändern und werde mich noch mal melden.
@tks
--- Zitat ---Du willst doch ein markiertes Dokument in einer Ansicht nach oben oder unten verschieben.
--- Ende Zitat ---
Ja...genau will ich das haben
--- Zitat ---Dann brauchst Du also aus der uiView das ausgewählte Dokument und dann je nach Richtung das vorherige oder das nächste Dokument Und die Beiden tauschen dann die Ordnungsnummern.
--- Ende Zitat ---
ich werde es noch mal probieren, es hin zu bekommen ...es kann doch nicht so schwere sein oder..?!
Vielleicht habe ich so kompliziert gedacht...
Gruß
Salih
robertpp:
Hallo,
Ich verwende dazu das Script(move up):
--- Code: --- Dim s As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim doca As NotesDocument
Dim docb As NotesDocument
Dim myview As NotesView
Dim myuiview As NotesUIView
Dim ws As New NotesUIWorkspace
Dim posa As Variant
Dim posb As Variant
Set myuiview = ws.currentview
Dim viewname As String
viewname = myuiview.ViewName
Set db = s.CurrentDatabase
Set myview = db.GetView(viewname)
Set doc = myview.GetFirstDocument
Set dc = db.UnprocessedDocuments
If dc.Count = 1 Then
Set doca = dc.GetFirstDocument()
If Not (doca.universalid = doc.UniversalID) Then
Set docb = myview.getprevdocument(doca)
posa = doca.position
posb = docb.position
If (Val(posa(0)) > 0) And (Val(posa(0)) > Val(posb(0))) Then
doca.position = posb
docb.position = posa
Call doca.Save( False, True )
Call docb.Save( False, True )
Call ws.ViewRefresh
Call myuiview.SelectDocument(doca)
End If
Else
Msgbox "Das Dokument ist schon ganz oben."
End If
Else
Msgbox "Bitte nur ein Dokument auswählen."
End If
--- Ende Code ---
Wobei die View nach dem Feld Position sortiert wird.
Move down muss dann natürlich angepasst werde.
robert
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln