Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Klafu am 04.06.07 - 17:04:33

Titel: NotesViewNavigation
Beitrag von: Klafu am 04.06.07 - 17:04:33
Hallo zusammen

Ich habe eine Ansicht, in welcher in der 3. Spalte die Kategorie des jeweiligen Dokuments steht.
Wie kann ich nun gezielt über die NotesViewNavigation auf diese Spalte zugreifen? Geht das überhaupt ?
Hab über die Sufu und die Notes Hilfe irgendwie nichts genaues gefunden, was mir hilft.

Ich muss nämlich in Word ein Menü erstellen in dem die Dokumente in der jeweiligen Kategorie aufgelistet sind. *siehe Anhang*

Gruß
Titel: Re: NotesViewNavigation
Beitrag von: Klafu am 05.06.07 - 10:54:27
Könnt ihr mir nich sagen wie ich in die Spalte komm, in der die Kategorien stehn ? :(
Titel: Re: NotesViewNavigation
Beitrag von: thomson666 am 05.06.07 - 12:29:06
in die spalte kommst über NotesView
und dann NotesViewcolumns

dort bekommst die spalte...
was du aber brauchst sind die kategorien...
die einträge durchgehen in ein array/liste schreiben, doppelte filtern und dann!? weiterverarbeiten oder zur verfügung stellen wo du das brauchst...

ich kapier nur nicht wieso diese formulare im word sind!? aber das ist organisatorisch bei euch vermutlich so, den sinn versteh ich nicht, notes ist GENAU für solche sachen gemacht...
Titel: Re: NotesViewNavigation
Beitrag von: Klafu am 05.06.07 - 15:32:54

Hallo thomson, danke für deine Antwort.
Ich werde mir jetzt mal speziell die Columns anschaun.


ich kapier nur nicht wieso diese formulare im word sind!? aber das ist organisatorisch
bei euch vermutlich so, den sinn versteh ich nicht, notes ist GENAU für solche sachen gemacht...


Das ist deswegen so, da hinter jedem Dokument eine andere Wordvorlage steckt und die soll bequemerweise auch über ein Word Menü aufgerufen werden können.

Gruß
Titel: Re: NotesViewNavigation
Beitrag von: Klafu am 11.06.07 - 11:46:24
So: Nach kurzem Urlaub melde ich mich nun zurück.
Wär das als erster Ansatz dann so richtig ?


Code
 Set templatedb = Session.GetDatabase("", "testDB.nsf")
 If Not templatedb Is Nothing Then
       Set View = templatedb.GetView("number")
       If Not View Is Nothing Then
          
             Set notesViewNavigator = View.CreateViewNav
             Set Column = notesViewNavigator.GetColumn(4)
             Set notesDocument = Column.GetFirstDocument
          
       End If
 End If
Titel: Re: NotesViewNavigation
Beitrag von: thomson666 am 11.06.07 - 16:05:46
nein das funktioniert so leider nicht, mit den columns kannst du formulas reinschreiben.

ich bin leider bei deinem beitrag mir scheint auf der leitung gestanden...
du holst dir nur die view und schreibst alle einträge in eine liste
dazu liest du von dem jeweiligem dokument das feld aus in dem die kategorie steht

dann nimmst du das resultat und verwendest die bei dir im word ein !?

nur mit einer schleife alle dokumente durchgehen, das feldauslesen, in eine liste schreiben und die dann fürs word weiterverarbeiten das ist alles!?

ich hoffe das war einigermaßen verständlich...



Titel: Re: NotesViewNavigation
Beitrag von: koehlerbv am 11.06.07 - 16:07:46
ich hoffe das war einigermaßen verständlich...

Nein. Ausserdem klemmt die Umschalttaste, was es noch schwerer macht.

Denk beim Schreiben bitte zuerst an die Leser!  :-P

Bernhard (als Moderator)
Titel: Re: NotesViewNavigation
Beitrag von: Driri am 11.06.07 - 16:39:45
Zitat
ich bin leider bei deinem beitrag mir scheint auf der leitung gestanden...
du holst dir nur die view und schreibst alle einträge in eine liste
dazu liest du von dem jeweiligem dokument das feld aus in dem die kategorie steht

dann nimmst du das resultat und verwendest die bei dir im word ein !?

nur mit einer schleife alle dokumente durchgehen, das feldauslesen, in eine liste schreiben und die dann fürs word weiterverarbeiten das ist alles!?

Was spricht gegen ein Evaluate in Kombination mit @Unique(@DBColumn(...)) ?
Titel: Re: NotesViewNavigation
Beitrag von: Klafu am 12.06.07 - 08:50:13
Hallo, mir fällt auch gerade auf, das ich vergessen habe etwas wichtiges zu erwähnen:
Ich entwickle die Word - Notes Schnittestelle in Word (VBA)
Titel: Re: NotesViewNavigation
Beitrag von: Axel am 12.06.07 - 08:51:05
Was spricht gegen ein Evaluate in Kombination mit @Unique(@DBColumn(...)) ?

Das es aus Word heraus per VBA über die OLE/COM-Schnittstelle gemacht werden soll.


Axel
Titel: Re: NotesViewNavigation
Beitrag von: Klafu am 12.06.07 - 11:15:15

du holst dir nur die view und schreibst alle einträge in eine liste
dazu liest du von dem jeweiligem dokument das feld aus in dem die kategorie steht

dann nimmst du das resultat und verwendest die bei dir im word ein !?

so dann ?


Code
Set templatedb = Session.GetDatabase("", "LVDocs.nsf")
    If Not templatedb Is Nothing Then
       Set View = templatedb.GetView("number")
       If Not View Is Nothing Then
       
       
         Set notesViewNavigator = View.CreateViewNav()
         Set Entry = notesViewNavigator.GetFirstDocument
         Set ValueEntry = Entry.getItemValue("Category")

Weil der Debugger sagt mir, das die Methode getItemValue nicht unterstüzt wird.
Aber das Array muss ich ja auslesen.

Wie sieht denn die "liste" aus ? Ist das eine logische Liste ?

Ich glaub, ich steh auch gerade etwas auf dem Schlauch :(
Titel: Re: NotesViewNavigation
Beitrag von: Axel am 13.06.07 - 11:09:35
Mal so ins Blaue gedacht.

Erstelle die eine Maske mit einem Textfeld (Mehrfachwerte zulassen). Beim Vorgabewert trägst du eine @DBColum-Formel (evt. ist @Unique notwendig) ein und greifst damit auf die 3.Spalte der Ansicht zu. Zusätzlich fügst du noch ein SaveOptions-Feld ein und das setzt du auf 0.

In Word erstellst du mit dieser Maske ein temporäres Dokument und damit solltest du das Feld auslesen können und somit an die Kategorien drankommen.

Wie gesagt, das ist nur mal so ne Idee. Ich bin mir nicht sicher ob's so funktioniert. Probier's mal aus.


Axel
Titel: Re: NotesViewNavigation
Beitrag von: Klafu am 15.06.07 - 11:15:48
Okay, danke für eure Hilfe.
Habs nun fast geschafft  :D
Titel: Re: NotesViewNavigation
Beitrag von: Axel am 15.06.07 - 13:03:11
Lässt du uns an deinem Fortschritt teilhaben? Das kann für andere User mit gleichen oder ähnlichen Problemen äußerst hilfreich sein.

Danke.

Axel
Titel: Re: NotesViewNavigation
Beitrag von: Klafu am 15.06.07 - 14:03:22
Ich mach es nun so, das ich einfach per Makro jedes Dokument in der Ansicht durchgehe und den Inhalt, des Feldes "Kategorie" entnehme.

Es sollte so auch klappen. :)
Bin grad noch am testen, das ich die Dokumente, die alle die selbe Kategorie haben in ein gemeinsames Untermenü bekomme
Titel: Re: NotesViewNavigation
Beitrag von: Klafu am 02.07.07 - 09:28:53
Hallo.
Nun muss ich hier nochmal was fragen


bei dem Code
Code
Set View = templatedb.GetView("CategoryView")
            
            Set nav = View.CreateViewNav()
            Set entry = nav.GetFirst
wird mir in Word angezeigt das: entry = 0 ist (?)
Ein Fehler kommt aber erst gegen Ende des Codes bei:
Code
Set entry = nav.GetNext(entry)
(Fehler: Typen Unverträglich)
Wo liegt der Fehler ?

Würd mich über hilfe freuen
Titel: Re: NotesViewNavigation
Beitrag von: Klafu am 02.07.07 - 13:03:07
Ich hab mal alle getNext... und auch gotoNext... Methoden durchgetestet. Und es gibt 2 verschiedene Fehler:
Bei GetNext...  Methoden kommt:"Typen unverträglich"
Bei GoToNext... Methoden kommt: "Objekt unterstützt diese Eigenschaft oder Methode nicht"

Bis zu dieser Stelle läuft alles gut und dann ... :/
ich weis nicht, was ich gegen die Fehler machen soll
kann das an dem Entry = 0 liegen? (post oben)

Gruß
Christoph
Titel: Re: NotesViewNavigation
Beitrag von: Axel am 02.07.07 - 14:39:44
Ich denke mal, dass das auf jeden Fall an dem Wert 0 liegt. Eigentlich wird nämlich ein Objekt erwartet.

Kann es sein, dass in der Ansicht kein Wert enthalten ist? Oder in einen der beiden Zeilen

Set View = templatedb.GetView("CategoryView")
Set nav = View.CreateViewNav()

geht was schief.

Du solltest auf jeden Fall eine Fehlerbehandlung einbauen und solche eventualitäten abfangen.


Axel
Titel: Re: NotesViewNavigation
Beitrag von: Klafu am 02.07.07 - 16:14:52
Danke für dein Post
Also, die Ansicht ist gefüllt

Wenn ich frag:
If not View is Nothing then - da läuft der Code rüber

und wenn ich frag:
If View <> "" - da sagt er mir beim ausführen, dass das Objekt die Methode nicht unterstützt und es wird abgebrochen


Gruß
Titel: Re: NotesViewNavigation
Beitrag von: Axel am 02.07.07 - 16:41:31
und wenn ich frag:
If View <> "" - da sagt er mir beim ausführen, dass das Objekt die Methode nicht unterstützt und es wird abgebrochen

Ist ja logisch. Du kannst nicht wenn ein Objekt erwartet wird auf eine leere Zeichenkette prüfen. Das geht nur mit ...is Nothing.

Wie sieht's denn dann mit der Zeile Set nav.... aus?

Wie sieht den der Code komplett aus?

Axel
Titel: Re: NotesViewNavigation
Beitrag von: Klafu am 02.07.07 - 17:06:47
Bei is Nothing then läufts problemlos bis zum getNext


Der code in dem es sich abspielt sieht bis jetzt noch so aus:

Code
Set templatedb = Session.GetDatabase("", "test.nsf")
       If Not templatedb Is Nothing Then
          Set View = templatedb.GetView("CategoryView")
          If Not View Is Nothing Then
            Set nav = View.CreateViewNav()
            If Not nav Is Nothing Then
              Set Entry = nav.GetFirst
              While Not Entry Is Nothing
                If (Entry.IsCategory = True) Then
                       Entry = Entry.ColumnIndentLevel
                       If (Entry = 0) Then
                           Set popup = Menu.Controls.Add(Type:=msoControlPopup)
                             With popup
                                .Caption = "Hauptkategorie" 'Category
                                .Tag = "1"
                             End With
                       Else
                           Set popup2 = Menu.Controls.Add(Type:=msoControlPopup)
                             With popup2
                                .Caption = "Unterkategorie"
                                .Tag = "1"
                             End With
                       End If
                Else
                   Set Button = Menu.Controls.Add(Type:=msoControlButton)
                   With Button
                       .Caption = "Vorlagen-Name" 'attname
                       .OnAction = "lalaa"
                   End With
                End If
            Set Entry = nav.GetNext(Entry)
            Wend
            End If
          End If
       End If


Gruß
Titel: Re: NotesViewNavigation
Beitrag von: Axel am 02.07.07 - 19:01:49
Ich glaube hier liegt der Hund begraben:

...
 If Not nav Is Nothing Then
              Set Entry = nav.GetFirst
              While Not Entry Is Nothing
                If (Entry.IsCategory = True) Then
                       Entry = Entry.ColumnIndentLevel
                       If (Entry = 0) Then
...
...
            Set Entry = nav.GetNext(Entry)
            Wend
...

Du überschreibst den Objektverweis mit dem Rückgabewert der Eigenschaft ColumnIdentLevel um dann die Variable wieder mit GetNext zu verwenden, wo du den Verweis brauchst. Das kann nicht gut gehen.


Axel
Titel: Re: NotesViewNavigation
Beitrag von: Demian am 02.07.07 - 19:29:32
Moin,moin,

auch wenn bereits ein anderer Lösungsweg eingeschlagen wurde, wäre es doch auch möglich, eine Aktion "Word-Dok öffnen" in die Ansicht einzubauen, die das zugehörige Word-Dokument des markierten Dokuments öffnet.

Allerdings macht sowas nur Sinn, wenn die Word-Dokumente in einem Ordner stehen und die Namen dem Feld KAtegorie entsprechen.

Dann wäre das ganze als User zentral von einer Oberfläche aus zu handhaben.

Gruß
Demian
Titel: Re: NotesViewNavigation
Beitrag von: Klafu am 02.07.07 - 19:58:02
Moin,moin,

auch wenn bereits ein anderer Lösungsweg eingeschlagen wurde, wäre es doch auch möglich, eine Aktion "Word-Dok öffnen" in die Ansicht einzubauen, die das zugehörige Word-Dokument des markierten Dokuments öffnet.

Allerdings macht sowas nur Sinn, wenn die Word-Dokumente in einem Ordner stehen und die Namen dem Feld KAtegorie entsprechen.

Dann wäre das ganze als User zentral von einer Oberfläche aus zu handhaben.

Gruß
Demian

Stimmt, das wäre so schon auch möglich
Allerdings wurde mir gesagt, ich solle eine Lösung via Makro in Word machen :)
Titel: Re: NotesViewNavigation
Beitrag von: Klafu am 02.07.07 - 19:58:46
Ich glaube hier liegt der Hund begraben:

...
 If Not nav Is Nothing Then
              Set Entry = nav.GetFirst
              While Not Entry Is Nothing
                If (Entry.IsCategory = True) Then
                       Entry = Entry.ColumnIndentLevel
                       If (Entry = 0) Then
...
...
            Set Entry = nav.GetNext(Entry)
            Wend
...

Du überschreibst den Objektverweis mit dem Rückgabewert der Eigenschaft ColumnIdentLevel um dann die Variable wieder mit GetNext zu verwenden, wo du den Verweis brauchst. Das kann nicht gut gehen.


Axel


Ich hoffe, daran liegt es...
Ich werde es morgen sofort ausprobieren!
Titel: Re: NotesViewNavigation
Beitrag von: Klafu am 03.07.07 - 11:23:27
Prima - Vielen Dank !!
Daran lags  :D :D

Nun klappts wie am Schnürchen

nur, wenn ich nun das mach will :
Code
 EntryLevel = Entry.ColumnIndentLevel
                       If (EntryLevel = 0) Then
                           [color=Red]Set EntryName = Entry.ColumnValues[/color]
                           Set popup = Menu.Controls.Add(Type:=msoControlPopup)
                             With popup
                                .Caption = EntryName 'Category
                                .Tag = "1"
                             End With

Dann bekomme ich da auch ein Typen unverträglich zurück
Ist die Methode falsch ?
Titel: Re: NotesViewNavigation
Beitrag von: Axel am 03.07.07 - 13:09:45
Das kann so auch nicht funktionieren. In der Designer-Hilfe steht eindeutig, dass der Rückgabewert der Eigenschaft ColumnValues ein Array ist. Die Eigenschaft Caption hätte aber gerne eine Zeichenkette. Du siehst, wo der Hase im Pfeffer liegt!?

...
Set EntryName = Entry.ColumnValues(Nummer der Spalte beginnend bei 0)
Set popup = Menu.Controls.Add(Type:=msoControlPopup)
     With popup
           .Caption = EntryName 'Category
           .Tag = "1"
      End With
...


Axel
Titel: Re: NotesViewNavigation
Beitrag von: Klafu am 04.07.07 - 11:15:16

...
Set EntryName = Entry.ColumnValues(Nummer der Spalte beginnend bei 0)
Set popup = Menu.Controls.Add(Type:=msoControlPopup)
     With popup
           .Caption = EntryName 'Category
           .Tag = "1"
      End With
...

Axel

Hallo Axel.
Okay, jetzt klappt es... aber der Fehler war glaub ein anderer
VBA hat Probleme mit "Entry.ColumnValues(0)
Ich hab es nun so gemacht :

Code
Dim EntryName(1 To 1000) As Variant
                           Dim colval As Variant
                           colval = entry.ColumnValues
                           EntryName(1) = colval(0)

Ich hoffe, ich komme nun ohne größere Probleme weiter

Vielen Dank für deine Hilfe, Axel!
Christoph
Titel: Re: NotesViewNavigation
Beitrag von: Axel am 04.07.07 - 18:43:44
Okay, jetzt klappt es... aber der Fehler war glaub ein anderer

VBA hat Probleme mit "Entry.ColumnValues(0)

Der Fehler lag schon an der besagten Stelle. Das VBA mit dem Index in der Form Probleme hat ist ein anderes Thema.

Da muss unter Umständen schon mal Umwege fliegen.  ;)

Wie dem auch sei, es freut mich, dass ich dir helfen konnte.

Axel