Autor Thema: "MoveUp" button  (Gelesen 4410 mal)

Offline Sweety

  • Frischling
  • *
  • Beiträge: 10
  • Geschlecht: Weiblich
"MoveUp" button
« am: 29.11.06 - 09:27:37 »
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

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

Ich hoffe mir kann jemand helfen ... :-\

Vielen Dank im Voraus   :)

Gruß
Salih
« Letzte Änderung: 29.11.06 - 09:49:15 von Sweety »

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: "MoveUp" button
« Antwort #1 am: 29.11.06 - 09:54:49 »
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

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

Offline tks

  • Senior Mitglied
  • ****
  • Beiträge: 425
  • Geschlecht: Männlich
  • ...für'n Fuss
Re: "MoveUp" button
« Antwort #2 am: 29.11.06 - 09:56:32 »
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?
Thomas

*********************************
Domino 8.5.3FP6 unter W2K12
Notes 8.5.3 unter Win7
sequrIQ (watchdog & crypt)
*********************************

Offline Sweety

  • Frischling
  • *
  • Beiträge: 10
  • Geschlecht: Weiblich
Re: "MoveUp" button
« Antwort #3 am: 29.11.06 - 10:17:00 »
Erstmal Vielen Dank für die Schnelle Antworten....

@Axel

Zitat
sortierst du innerhalb der Ansicht nach dem Feld Nb_SortOrder. Richtig?

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.

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.

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.

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

Offline robertpp

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 940
  • Geschlecht: Männlich
Re: "MoveUp" button
« Antwort #4 am: 29.11.06 - 12:10:11 »
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

Wobei die View nach dem Feld Position sortiert wird.
Move down muss dann natürlich angepasst werde.

robert
------------------------------------------------------------
1250 Notes User Client von 5.0.5 bis 6.5.4     WIN2000, XP
14 Notes Server von 6.5 bis 6.5.4 WIN2000, XP

32   Notes Server von 5.0.1 bis 6.5.4 in unserer Domain
323 Notes Server weltweit mit 38000 User in einem Adressbuch

Offline Sweety

  • Frischling
  • *
  • Beiträge: 10
  • Geschlecht: Weiblich
Re: "MoveUp" button
« Antwort #5 am: 04.12.06 - 10:23:33 »
Hallo robert...

Also mit meine Code krige ich es nicht hin...ich habe dann deine Code ausprobiert ..leider bekommen es auch nicht hin...weiß auch nicht woran es liegt, oder was ich falsch mache?  ::)

Zitat
Wobei die View nach dem Feld Position sortiert wird.

woher bekommt der Feld Position sein Wert? ist das etwa der gleich Wert wie der Doc Nummer --> @DocNumber("")

oder vielleicht liegt es daran, daß ich in der Ansicht zwei Spalten sortier habe?

das einzige was bei mir funktioniert es die Ausgabe der Meldungen. "Das Dokument ist schon ganz oben." und "Bitte nur ein Dokument auswählen."

was mache ich falsch?? bitte hilft mir ...ich bin schon am verzweifeln !!

Gruß
Salih

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: "MoveUp" button
« Antwort #6 am: 04.12.06 - 10:56:32 »
Wenn ich das richtig sehe entspricht das Feld position dem Feld Nb_SortOrder in deiner Maske.


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

Offline Sweety

  • Frischling
  • *
  • Beiträge: 10
  • Geschlecht: Weiblich
Re: "MoveUp" button
« Antwort #7 am: 04.12.06 - 11:12:07 »
@Axel

Habe ich auch so gesehen und meine Feld in "Position" umbennant und in der erste Spalte der View eingefügt...aber es klappt auch nicht, deswegen wollte ich wiessen, ob das auch so gedacht?


Salih

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: "MoveUp" button
« Antwort #8 am: 04.12.06 - 12:07:52 »
Das ist so gedacht.

Ich habe das Script mal mit einer ganz einfachen Maske gestestet und es funktioniert einwandfrei. Der Hund muss bei dir irgendwo anders begraben sein.

Was klappt denn genau nicht?

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

Offline Sweety

  • Frischling
  • *
  • Beiträge: 10
  • Geschlecht: Weiblich
Re: "MoveUp" button
« Antwort #9 am: 04.12.06 - 13:22:34 »
Hallo...

ich habe jetzt auch ein ganz neue Datenbank lokal engelegt und eine einfache Maske mit Position, Subjekt und Kategorie Felden erstellt. Eine ainfache Ansicht, wo der erste Spalte auf das Feld Position sich bezieht. Also Wirklich alles so einfach wie möglich gehalten...es tut aber nicht...ich bekomme zwar kein Fehlermeldung aber das Doc. in der Ansicht bewegt sich nicht nach oben ??

Wenn der Doc ganz oben ist, denn kommt die Meldung "Das Dokument ist schon ganz oben." der wenn ich zwei doc auswähle die Meldung "Bitte nur ein Dokument auswählen.".

Woran kann das liegen?! Müssen die Felder von bestimmte Art sein z.b nur text feld oder so?


Gruß
Salih

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: "MoveUp" button
« Antwort #10 am: 04.12.06 - 13:30:21 »
Ich habe das Positionsfeld ohne lange nachzudenken als Textfeld angelegt und es hat auf Anhieb funktioniert. Wenn ich mir den Code anschaue, weiss ich auch warum.

If (Val(posa(0)) > 0) And (Val(posa(0)) > Val(posb(0))) Then

Mit Val() wird Text in eine Zahl umgewandelt.

Wenn du mit Zahlenfeldern arbeitest, das lass einfach die Val()-Funktion weg.


Axel
 

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

Offline Sweety

  • Frischling
  • *
  • Beiträge: 10
  • Geschlecht: Weiblich
Re: "MoveUp" button
« Antwort #11 am: 04.12.06 - 13:44:13 »
Siehe an...ich habe jetzt das Feld "Position" als "Editierbar Text" Feld geändert und es hat funktioniert  :o

wenn ich der Feld als "Comupted" oder "Computed for Display" mache dann nicht ! daran lag es also...

Aber das Feld soll doch als "Computed" sein.
Es geht darum, dass der Benutzter in der Lage sein soll ein Doc. in einer Anischt per Knopf nach oben bzw. nach unten zu verschieben, je nachdem wie wichtig das Doc. ist.

Aber immer hin weiß ich jetzt woran es Lag. Ich war schon am verrückt werden.

Danke dir Axel viel mals..du hast mir echt viel geholfen.  Und auch danke an die anderen.

jetzt muss ich nachschauen, wie ich es mit "Computed Feld" auch hin bekommen kann.

Gruß
Salih

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: "MoveUp" button
« Antwort #12 am: 04.12.06 - 13:49:56 »
Das muss auch mit einem berechneten (computed) Feld gehen. Du musst nur den Feldnamen selbst in die Werteformel schreiben.


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

Offline Sweety

  • Frischling
  • *
  • Beiträge: 10
  • Geschlecht: Weiblich
Re: "MoveUp" button
« Antwort #13 am: 04.12.06 - 13:55:50 »
was meinst du mit der "Werteformel" ? in der Spalte nicht der NAme eingeben sondern die Formel "@DocNumber" ?

Salih

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz