Autor Thema: View.GetNextDocument aus DocumentCollection  (Gelesen 3789 mal)

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
View.GetNextDocument aus DocumentCollection
« am: 23.06.06 - 10:55:16 »
Hi zusammen

Ich habe eine DocumentCollection, welche aus zwei verschiedenen Quellen stammen kann:
1. Database.UnprocessedDocuments oder
2. Database.Search

Nun benötige ich vom Dokument die Eigenschaft "ColumnValues". Diese funktioniert bekanntlich    nur, wenn das Dokument aus einer View stammt.

Da die Dokumente aber von der Collection stammen, musste hier eine Übersetzung ins View-Document geschehen. Ich picke also dasselbe Dokument der Collection, aus der View.

Dies geschieht so:
Code
Set doc2 = View.GetNextDocument(doc)
				
If doc2 Is Nothing Then
Set doc2 = View.GetPrevDocument(doc)
					
    If doc2 Is Nothing Then
        'doc from the collection does not exist in this view -> go to the next doc					
    Else
        Set doc2 = View.GetNextDocument(doc2)
    End If
Else
    Set doc2 = View.GetPrevDocument(doc2)
End If

Wobei doc2 das Dokument aus der View und doc das Dokument aus der Collection ist.

Hat die Collection nun als Quelle "UnprocessedDocuments", funktioniert alles einwandfrei, werden die Dokumente aber mit "Database.Search" gesucht, behauptet die erste Anweisung "Set doc2 = View.GetNextDocument(doc)" jedesmal "The document is not in view xxx".  ???

Hat jemand eine Idee, wie ich diese "Übersetzung" anders gestalten könnte, oder was der Unterschied zwischen den beiden Collections ist?

Danke und Grüsse
Moritz

Offline Wilhelm

  • Aktives Mitglied
  • ***
  • Beiträge: 214
  • Geschlecht: Männlich
Re: View.GetNextDocument aus DocumentCollection
« Antwort #1 am: 23.06.06 - 11:23:06 »
Hi Moritz,

was genau willst Du denn erreichen?
Welchen Wert brauchst du aus der ColumnValues-Eigenschaft, den du nicht aus dem Dokument-Objekt selbst erhalten kannst?

Gruß

Willi
Ich will endlich die F9-Taste in diesem Forum haben!!!

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: View.GetNextDocument aus DocumentCollection
« Antwort #2 am: 23.06.06 - 11:26:07 »
Hi Willi

Ich möchte die Werte aus einer View exportieren. Das kann ja durchaus auch mal eine Berechnung sein, oder ein veränderter Wert vom ursprünglichen Feld aus dem Dokument.

Moritz

Glombi

  • Gast
Re: View.GetNextDocument aus DocumentCollection
« Antwort #3 am: 23.06.06 - 11:31:17 »
Du kannst mit doc.UniversalID die DocID ermitteln und dann über alle Dokumente der View iterieren, bis das entsprechende Dokument gefunden wurde.

Zur Optimierung würde ich eine Kopie der View machen, die nach @Text(@DocumentUniqueID) sortiert ist. Dann bekommst Du das Dokument sofort mit
set viewdoc = view.GetDocumentByKey( doc.UniversalID)

Andreas

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: View.GetNextDocument aus DocumentCollection
« Antwort #4 am: 23.06.06 - 11:38:36 »
Daran hatte ich auch schon gedacht.

Aber die erste Variante ist leider viel zu imperformant.

Die zweite Möglichkeit ist dann wohl die Einzige, aber ich wollte mir diese Kopie eigentlich sparen, da der Export dynamisch und unabhängig von der View funktionieren sollte  :-\

Was auch eine Möglichkeit wäre: Alle Dokumente der View packen und darauf den Search ausführen, statt in der Datenbank. Aber ich habe bis jetzt auch keinen Weg gefunden, alle Dokumente einer View in eine Collection zu kriegen (einigermassen performant).

Danke für eure Antworten!
Moritz

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: View.GetNextDocument aus DocumentCollection
« Antwort #5 am: 23.06.06 - 11:53:31 »
Ich denke, ich werde es mal mit
Code
numDocs& = notesView.FTSearch( query$, maxDocs% )

probieren. Das Problem hier ist, die Datenbank ist nicht indiziert... da sei die Performance laut Hilfe auch ganz schlecht. Mal sehen...

Moritz

EDIT: Mist! Das gibt ja nur die Anzahl gefundener Dokumente zurück aber nicht die Dokumente selbst.  >:(
« Letzte Änderung: 23.06.06 - 11:56:17 von Untitled »

Glombi

  • Gast
Re: View.GetNextDocument aus DocumentCollection
« Antwort #6 am: 23.06.06 - 11:59:02 »
Als Mistgabel empfehle ich

Conducts a full-text search of all the entries in a Notes database collection, and reduces the collection to those entries that match.
Defined in
NotesViewEntryCollection
Syntax
Call notesViewEntryCollection.FTsearch( query$, maxDocs% )

Die ViewCollection holst Du Dir vorher mit
Set notesViewEntryCollection = notesView.AllEntries


Andreas

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: View.GetNextDocument aus DocumentCollection
« Antwort #7 am: 23.06.06 - 12:10:22 »
Yoo danke!

Das werde ich so machen!

Moritz

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: View.GetNextDocument aus DocumentCollection
« Antwort #8 am: 23.06.06 - 17:17:52 »
warum so kompliziert ?

Warum erstellst Du Dir nicht eine NotesViewEntryCollection der View und suchst Dir dort ganz einfach über set doc2 = VE.GetEntry( doc ) dein Dokument raus ?

So habe ich das schon oft gemacht und keine Probleme gehabt (wenn das Dok wirklich in der View ist)

Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: View.GetNextDocument aus DocumentCollection
« Antwort #9 am: 26.06.06 - 09:34:23 »
Das ist ja genau die Methode, nach der ich gesucht habe  ;D

Herzlichen Dank Tode!

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: View.GetNextDocument aus DocumentCollection
« Antwort #10 am: 26.06.06 - 15:03:59 »
Zu früh gefreut. Funktioniert leider doch nicht....

Code
	Dim db As NotesDatabase
	Dim dc As NotesDocumentCollection
	Dim uiWS As New NotesUIWorkspace
	Dim view As NotesView
	Dim doc1 As NotesDocument
	Dim doc2 As NotesDocument
	Dim entry As NotesViewEntry
	Dim entryCollection As NotesViewEntryCollection 
	
	Set view = uiWS.CurrentView.View
	Set entryCollection = view.AllEntries
	Set db = view.Parent
	Set dc = db.UnprocessedDocuments
	Set doc1 = dc.GetFirstDocument
	Set entry = entryCollection.GetEntry(doc1)
	Set doc2 = entry.Document
	
	Msgbox doc2.ParentView.Name 
	Msgbox doc2.ColumnValues(0)

Das Dokument (doc2) hat nichteinmal mehr die Parent-View. Aber gesetzt wird es, die UNID kann ich mir zum Beispiel ausgeben lassen.

Habe ich jetzt was übersehen?

Moritz
« Letzte Änderung: 28.06.06 - 16:09:00 von Untitled »

Offline Untitled

  • Senior Mitglied
  • ****
  • Beiträge: 364
    • Musiker24.ch - Musiker und Bands finden
Re: View.GetNextDocument aus DocumentCollection
« Antwort #11 am: 26.06.06 - 17:05:07 »
"NotesUIView.Documents" funktioniert übrigens auch nicht. Obwohl ich nicht nachvollziehen kann, was daran nicht "Accessed through a view" sein soll...

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz