Autor Thema: GetAllDocumentsByKey  (Gelesen 5783 mal)

Offline skywook

  • Senior Mitglied
  • ****
  • Beiträge: 445
  • Ich liebe dieses Forum!
GetAllDocumentsByKey
« am: 13.06.04 - 22:10:49 »
Kann ich eigentlich die gefundenen Docs von GetAllDocumentsByKey in einer Picklist oder einem Prompt anzeigen lassen (ohne diese vorher in einen Ordner zu verschieben). Wobei der User dann die Möglichkeit haben sollte, einen Eintrag auszuwählen.

Für einen Tipp wäre ich dankbar.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:GetAllDocumentsByKey
« Antwort #1 am: 13.06.04 - 22:23:21 »
Prinzipiell: ja.
Ohne jetzt tiefer zu überlegen:
Ich würde die aus der doc-Collection via einer Forall-Schleife den Dokumenten-Titel auslesen und in ein Array schreiben.
Das Array zeigst Du dann via uiws.Prompt in an, damit der User ein Dok auswählt.
Hab mir das jetzt nicht näher angesehen (gerade kein Notes-Client greifbar), aber damit kannst Du Dir dann das selektierte Doc greifen. Notfalls musst Du in das Array noch die UNID des Doks mitübergeben (mit langem Trennzeichen - z.B. einige Spaces - damit dies der User aus optischen Gründen nicht sieht) und holst Dir dann damit das selektierte Dokument.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re:GetAllDocumentsByKey
« Antwort #2 am: 13.06.04 - 22:23:41 »
in einer eingebetteten Ansicht könntest du die anzeigen (Stichwort: ShowSingleCategory). Auswählen kann der Benutzer die auch. Ich weiß allerdings nicht mehr genau, ob du jetzt programmiertechnisch auf die ausgewählten Dokumente zugreigen kannst bzw. herausfinden kannst, welche ausgewählt sind.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:GetAllDocumentsByKey
« Antwort #3 am: 13.06.04 - 22:42:53 »
Wenn ich so mein Posting lese, habe ich seeeehr verkürzt geschrieben :-)

Daher nochmal Step by Step:
- Du hast mit GetAllDocumentsByKey eine Doc.-Collection, das ist schon mal fein
- Loope mit Forall durch diese Collection und schreibe den doc.Title(0) in ein Array. Da hängst Du noch gleich die UNID mit dran (& "-- (ein paar Spaces etc.) ---" & doc.UniversalID)
- mache nun ein uiws.Prompt. User wählt dann was aus.
- aus dem Rückgabewert ziehst Du Dir die UNID raus (Right - Funktion, du holst Dir die letzten 32 Ziffern). Mit GetDocumentByUNID holst Du Dir dann das vom User selektierte Dokument.


Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline skywook

  • Senior Mitglied
  • ****
  • Beiträge: 445
  • Ich liebe dieses Forum!
Re:GetAllDocumentsByKey
« Antwort #4 am: 21.06.04 - 22:17:48 »
Wie bekomme ich den die Daten (dabei handelt sich nur um eine Feld der Doc-Collection) in einen Array damit ich diese in einem Prompt anzeigen kann?


Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:GetAllDocumentsByKey
« Antwort #5 am: 21.06.04 - 22:38:07 »
Indem Du durch Deine Collection loopst, z.B.

Code
Dim nCounter As Long

Set doc = dc.GetFirstDocument
nCounter = 1
While Not(doc Is Nothing)
   Redim Preserve strMeinArray(nCounter)
   strMeinArray(nCounter) = doc.MEINFELD(0) & "         " & doc.UniversalID
   nCounter = nCounter + 1
   Set doc = dc.GetNextDocument(doc)
Wend
« Letzte Änderung: 21.06.04 - 22:39:56 von TMC »
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:GetAllDocumentsByKey
« Antwort #6 am: 21.06.04 - 23:19:38 »
Zwei Anmerkungen:
Bei der (durchaus üblichen) Methode, für ein NotesUIWorkspace.Prompt ein Array zu bilden, muss man darauf achten, dass die 64k-Grenze für das Array nicht überschritten wird.

Das Redim Preserve ist bei der von Matthias vorgestellten Variante unnötig. Mit NotesDocumentCollection.Count kennen wir ja bereits die Dimension des erforderlichen Arrays, daher reicht ein
Redim strMeinArray (dc.Count - 1) (wenn Option Base 0 ist).

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:GetAllDocumentsByKey
« Antwort #7 am: 21.06.04 - 23:26:04 »
daher reicht ein
Redim strMeinArray (dc.Count - 1) (wenn Option Base 0 ist).

Ähm, dann aber trotzdem mit "Preserve" oder?

Matthias
« Letzte Änderung: 21.06.04 - 23:38:15 von TMC »
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:GetAllDocumentsByKey
« Antwort #8 am: 21.06.04 - 23:33:47 »
Nö, wir müssen ja vorab nix "preserven" - wir pumpen die Daten ja erst nach dem Redim ins Array.

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:GetAllDocumentsByKey
« Antwort #9 am: 21.06.04 - 23:37:00 »
Ach jetzt weiß ich was Du meinst.

Du setzt vorher den U- und LBound mit Redim ...(dc.Count), aber arbeitest nach wie vor mit dem Counter.
Klar, so macht das (auch performance-seitig) Sinn.

@skywook:
Ich hoffe wir haben Dich jetzt nicht zu sehr verwirrt  :)
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:GetAllDocumentsByKey
« Antwort #10 am: 21.06.04 - 23:48:16 »
Über Performance brauchen wir uns in diesem Kontext m.E. keinen Rüssel zu machen - wir können so ja sowieso nur 64k füllen  ;)
Zitat
@skywook:
Ich hoffe wir haben Dich jetzt nicht zu sehr verwirrt
Ooops - wohl doch. Vorhin war er noch da, jetzt hat entweder Mutti geschimpft, oder er hat sich 'ne Bolus-Injektion Whiskey gesetzt, damit er doch noch schlafen kann  ;D

Was mir aber noch nicht so gefällt, ist das Array, das auch gleich die UNID mit aufnimmt. Wenn die anzuzeigenden Begriffe eineindeutig sind, dann sollten die UNIDs in einem zweiten, gleichdimensionierten Array liegen und nach Auswahl abgegriffen werden.
Basteln kann man aber auch mit Aliasen "Begriff | UNID" (Feld entsprechend füllen und dieses dann für den Prompt angreifen, danach ggf. wieder löschen).

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:GetAllDocumentsByKey
« Antwort #11 am: 22.06.04 - 00:14:37 »
Wäre auch eine schicke Alternative, Bernhard.

Klar, was da immer kommen kann sind die 64K die vielleicht doch erreicht werden.

Sollte das evtl. so sein, dann doch lieber mit einem Folder lösen und diesen dann via PickListStrings Methode anzeigen.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:GetAllDocumentsByKey
« Antwort #12 am: 22.06.04 - 00:17:50 »
Wenn die 64k-Grenze droht, dann bleibt nix als ein persönlicher Ordner, glaube ich. Und der schadet ja auch nix  :)

Bernhard

Offline skywook

  • Senior Mitglied
  • ****
  • Beiträge: 445
  • Ich liebe dieses Forum!
Re:GetAllDocumentsByKey
« Antwort #13 am: 22.06.04 - 07:49:31 »
Jetzt bin ich doch leider etwas verwirrt. Könntet Ihr mir ein kleines Beispiel einstellten?
Das Alternative mit dem Ordner ist mir klar. Aber das mit dem Redim habe ich nicht ganz verstanden.
« Letzte Änderung: 22.06.04 - 07:56:11 von skywook »

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:GetAllDocumentsByKey
« Antwort #14 am: 22.06.04 - 08:25:02 »
Hi,

hier mal ein kleines Beispiel:

...

Dim strArray As String()
Dim idx As Integer
...

Set collection = view.GetAllDocumentsByKey(...

Redim strArray(collection.Count)  'Dimensionieren des Arrays
'Füllen des Arrays
For idx = 1 to collection.Count
  Set doc = collection.GetNthDocument(idx)
  strMeinArray(idx) = doc.MEINFELD(0) & "        " & doc.UniversalID
Next
...


So könnte das aussehen.

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

Offline skywook

  • Senior Mitglied
  • ****
  • Beiträge: 445
  • Ich liebe dieses Forum!
Re:GetAllDocumentsByKey
« Antwort #15 am: 22.06.04 - 09:53:05 »
Danke! Funktioniert!
Habe noch das Problem: Im Prompt wird zusätzlich, zu den Daten, noch eine Leerstring angezeigt.

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:GetAllDocumentsByKey
« Antwort #16 am: 22.06.04 - 10:11:33 »
Hi,

das liegt am Handling des Arrays. der Index fängt immer bei 0 an.

Passe deinen Code wie folgt an:

Redim strArray(collection.Count-1)  'Dimensionieren des Arrays
'Füllen des Arrays
For idx = 0 to collection.Count-1
  Set doc = collection.GetNthDocument(idx+1)
  strMeinArray(idx) = doc.MEINFELD(0) & "        " & doc.UniversalID
Next
...

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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz