Domino 9 und frühere Versionen > ND6: Entwicklung

"MoveUp" button

(1/3) > >>

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