Autor Thema: Cursorpositionen in einer View !  (Gelesen 2688 mal)

Offline CarlGustav

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Ich liebe dieses Forum!
Cursorpositionen in einer View !
« am: 12.12.02 - 08:40:28 »


Guten Morgen Notesgemeinde!


Folgendes problema: Weiß jemand wie man den Cursor bei Öffnen einer Datenbank in einer Ansicht automatisch an eine bestimmte Position setzen kann?

In meinem Fall bräuchte ich in einer Ansicht die nach Datum sortiert ist (die erste Spalte), den Cursor immer beim aktuellsten Dokument. Bei dem Datum das am nächsten des heutigen Tages liegt.



Vielleicht weiß ein schlaues Hirn ja was,


Danke auf alle Fälle!


CarlGustav

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Cursorpositionen in einer View !
« Antwort #1 am: 12.12.02 - 08:43:52 »
... das kannst du in den Eigenschaften einer View einstellen, ich denke das 2. Register (Info)...

ata
Grüßle Toni :)

Offline CarlGustav

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Ich liebe dieses Forum!
Re:Cursorpositionen in einer View !
« Antwort #2 am: 12.12.02 - 08:55:34 »

Vielen Dank ata, das ist schon klar, daß es diese Eigenschaften gibt.


Aber ich habe eine Ansicht mit Datumseingaben von so ungefähr 01.01.01 bis 31.12.2005

Das sind unzählige Docs.

Und der Cursor muß aber immer beim Öffnen beim heutigen (Systemdatum) Datum, oder wenn es dieses nicht gibt einen Tag davor, stehen.


Hoffe nun ist klar was ich meine. Ich kann leider in den View Eigenschaften nur einstellen, daß der Cursor am letzten Doc oder am ersten Doc stehen soll. oder am zuletzt geöffneten Doc...


LG,


CG

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Cursorpositionen in einer View !
« Antwort #3 am: 12.12.02 - 08:59:35 »
... ich bin davon ausgegangen, daß du Dokumente nur bis zum aktuellen Datum hast...

... ich sehe aber einen Weg, den ich aber zuerst ausprobieren möchte, bevor ich taube Nüsse verbreite...

ata
Grüßle Toni :)

Offline CarlGustav

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Ich liebe dieses Forum!
Re:Cursorpositionen in einer View !
« Antwort #4 am: 12.12.02 - 09:01:32 »

Vielen Dank für die Hilfe.

Bin schon gespannt wie die Lösung aussehen wird.


Erwartungsvoll,

CG

Offline CarlGustav

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Ich liebe dieses Forum!
Re:Cursorpositionen in einer View !
« Antwort #5 am: 12.12.02 - 17:23:04 »

Guten Abend Notesgemeinde!


Ist anscheinend doch ein gröberes Problem...

Hoffe auf gute Nachrichten morgen Früh!


Schönen Abend noch,

CG

Offline Performance

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.096
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:Cursorpositionen in einer View !
« Antwort #6 am: 12.12.02 - 17:33:39 »

-beim öffnen der view selektierst du dir das sok und setzt den cursor drauf

Call notesUIView.SelectDocument( notesdocument )

cu
Wir können alles außer hochdeutsch !

Alles ist möglich, es ist nur eine Frage der Zeit oder des Geldes!

Offline CarlGustav

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Ich liebe dieses Forum!
Re:Cursorpositionen in einer View !
« Antwort #7 am: 13.12.02 - 10:41:30 »
-beim öffnen der view selektierst du dir das sok und setzt den cursor drauf

Call notesUIView.SelectDocument( notesdocument )


Vielen Dank für den TIp!

Aber....Kannst Du mir noch einen Tip geben wie ich das Dok selektiere. Krieg das nicht richtig hin!
Mach ich das alles im "Query Open" Event?
Dim doc as notesdocument
set doc = ????


LG,

CG

Offline Performance

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.096
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:Cursorpositionen in einer View !
« Antwort #8 am: 13.12.02 - 12:59:51 »
also das ist mal wieder ein Beitrag für Tips + Tricks  ;D

- die Sache verhält sich im Prinzip genauso wie die Auswahl von doks in einer embedded View


Ich habe es mit strings probiert - ich glaube es ist besser wenn du dein Datum in der ersten Spalte(versteckt ?) als string speicherst und sortierst - das ist die Suchspalte

im Postopen der view rufst du einen Agent auf(wegen dem initialisieren der view)

@Command([ToolsRunMacro]; "(selectdoc)");
""

- der Agent  (selectdoc) - selektiere das dok mit der Zahl "3"
   Dim ws As New NotesUIWorkspace   
   Dim s As New NotesSession
   Dim v As NotesView
   Dim uiv As NotesUIView
        Dim entry As NotesViewEntry
        Dim doc as NotesDocument

   Set uiv = ws.Currentview   
   Set v = uiv.view
   Set entry = v.GetEntryByKey("3", True)
   If entry Is Nothing  Then Exit Sub  
   Set doc = entry.Document
   
   Call uiv.SelectDocument(doc)
End Sub




Das Problem bei der uiview und dem selectdocument ist das die Aktion nur vom user getriggert werden kann, d.h. das der code in der view, direkt kein result bringt, dageggen wird beim Agent der Code vom Benutzer angestossen.


cu


Wir können alles außer hochdeutsch !

Alles ist möglich, es ist nur eine Frage der Zeit oder des Geldes!

Offline CarlGustav

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Ich liebe dieses Forum!
Re:Cursorpositionen in einer View !
« Antwort #9 am: 13.12.02 - 15:19:08 »


Ja, Danke vielmals - Das funzt!

Nun bin ich dran eine Lösung zu finden wie man dem Agenten dann sagt, daß wenn kein Doc zu finden ist, welches dem heutigen Datum entspricht, er solange um einen Tag zurück gehen soll, bis er ein gültiges findet.
Zurzeit schaut der Code des Agenten so aus:

Sub Initialize
   Dim whenNow As String
   whenNow$ = Today()
   
   Dim ws As New NotesUIWorkspace  
   Dim s As New NotesSession
   Dim v As NotesView
   Dim uiv As NotesUIView
   Dim entry As NotesViewEntry
   Dim doc As NotesDocument
   
   Set uiv = ws.Currentview  
   Set v = uiv.view
   Msgbox whennow$
   Msgbox Today()-1
   Set entry = v.GetEntryByKey(Today(), True)
   
   
   If entry Is Nothing  Then
      Set entry = v.GetEntryByKey(Today()-1, True)
   End If
      
   Set doc = entry.Document
   
   Call uiv.SelectDocument(doc)
   
End Sub


Ich hab nichts mit der vorgeschlagenen Selektierung nach der Zahl "3" anzufangen gewußt!
Also hab ich das getentry nach today gemacht - danach suchen wir ja auch!

Ja und nun wenn er kein Doc findet daß dem entspricht, soll er so lange um einen Tag zurückzählen bis er ein richtiges Datum findet.
Derzeit zählt er nur 1 Tag zurück...


Vielleicht hast Du ja auch schneller eine Lösung.


Weiters wäre interessant ob es machbar ist, daß der Cursor dann zum aktuellsten Doc (wenn an einem Tag mehrere Einträge sind, dann geht er zum ersten und nicht zum letzten Eintrag - der letzte Eintrag ist natürlich der aktuellste) geht...


Vielen Dank nochmals und ich freu mich über weitere Hinweise,

Schönes Wochenende,


CG

Offline Performance

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.096
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:Cursorpositionen in einer View !
« Antwort #10 am: 13.12.02 - 17:24:05 »
also Gustav ein wenig denken schadet wohl niemandem oder ?

- ich habs mit meinem code nach deinen Vorgaben weiterentwickelt, falls mehrere doks das gleiche Datum haben gehst du über eine  entrycollection
- weil diese entrycollectionview sortiert ist (deshalb arbeite ich gerne mit der entry collection und nicht mit einer doccollection)
brauchst du entweder den Anfang oder das Ende der collection


Sub Initialize
   Dim ws As New NotesUIWorkspace   
   Dim s As New NotesSession
   Dim vc As NotesViewEntryCollection
   Dim entry As NotesViewEntry
   Dim v As NotesView
   Dim uiv As NotesUIView
   Dim doc As NotesDocument
   Dim www As String
   Dim key As Integer
   Dim docfound As Variant
   
   Set uiv = ws.Currentview   
   Set v = uiv.view
   
   docfound = False
   key = 7               '''' Suchkriterium
   Do While Not docfound
      www = Cstr(key)
      Set vc = v.GetAllEntriesByKey(www, True)
      
      If (vc.count > 0) Then
'''         Set entry = vc.GetLastEntry( )     ''' letzte in der collection
         Set entry = vc.GetFirstEntry( )     ''' erste in der collection
         Set doc = entry.Document
         docfound = True      
      End If
      
      If key = 1 Then        ''''' Abbruch falls was schiefgeht
         docfound = True  
         Exit Sub      
      End If
      
      key = key - 1
   Loop
   
   Call uiv.SelectDocument(doc)
   
End Sub



cu
Wir können alles außer hochdeutsch !

Alles ist möglich, es ist nur eine Frage der Zeit oder des Geldes!

Offline CarlGustav

  • Junior Mitglied
  • **
  • Beiträge: 59
  • Ich liebe dieses Forum!
Re:Cursorpositionen in einer View !
« Antwort #11 am: 18.12.02 - 10:58:16 »
Zur Vollständigkeit:


Nach einigen Tagen Notesabstinenz hab ich nun den Code von Perfomance ein wenig angepaßt und das funzt nun super!

Nun kann man in einer View bei jedem öffnen der View (oder wenn man eine Aktion durchführt) einen Agenten starten, der folgenden Code ausführt und dann steht der Cursor immer beim aktuellen Datum, oder dem nächstgelegenen.

Danke an alle die geholfen haben!


CG



Sub Initialize
   
Dim whenNow As String
whenNow$ = Today()

Dim ws As New NotesUIWorkspace  
Dim s As New NotesSession
Dim vc As NotesViewEntryCollection
Dim entry As NotesViewEntry
Dim v As NotesView
Dim uiv As NotesUIView
Dim doc As NotesDocument
Dim www As String
Dim key As String
Dim docfound As Variant
   
Set uiv = ws.Currentview  
Set v = uiv.view
   
docfound = False
key = whenNow$            '''' Suchkriterium
   
Do While Not docfound
www = Cstr(key)
Set vc = v.GetAllEntriesByKey(Cdat(www), True)

If (vc.count > 0) Then
Set entry = vc.GetLastEntry( )    ''' letzte in der collection
Set doc = entry.Document
docfound = True      
End If
      
key=Cdat(www)-1
'Msgbox key
Loop
   
Call uiv.SelectDocument(doc)
   
End Sub

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz