Domino 9 und frühere Versionen > ND9: Entwicklung

Getalldocumentsbykey & Key-Array mit unterschiedlichen Datentypen

(1/1)

udo187:
Hallo !

Eine Frage: Ich bilde mir ein, dass vor Notes 9.01 bei der Verwendung von Getalldocumentsbykey mit einem Key-Array
der Datentyp der verschiedenen Werte gleich sein musste (z.B. bei 3 Werten 3xString).
Ich habe gerade eine Ansicht mit 3 sortierten Spalten, die Erste ist ein String, die Zweite ein Datum und die Dritte ein Integer und im Script
einen Key als Variant deklariert und die entsprechenden Werte ohne Datenumwandlung zugeordnet -> funzt.

Ist das neu oder war das immer schon so oder ist das Zufall ?

Gruss Udo

koehlerbv:
Du suchst nun nach drei Stringwerten, da der Variant nur Elemente eines Datentyps erlaubt und die Zuweisung des ersten Elements (String) ein Variant vom Type String erzeugt.
Insofern also nichts neues unter der Sonne.

Bernhard

udo187:
Danke für Deine Antwort, Bernhard !

Wenn in meinem Fall Getalldocumentsbykey  mit 3 Stringwerten in der Ansicht sucht, in der Ansicht aber die zweite und die dritte Spalte
aber keine String-Werte enthalten (sondern Datum und Integer), warum findet Notes dann ein Dokument ?

Gegenprobe: Den dritten Wert im Key-Array, was normalerweise ein Integer ist, als String umgewandelt -> Getalldocumentsbykey  findet kein Dokument mehr ?? (In der Ansicht ist die 3 Spalte nach wie vor ein Integer)

 ???

Udo

thkn777:

--- Zitat von: koehlerbv am 31.03.14 - 09:12:52 ---Du suchst nun nach drei Stringwerten, da der Variant nur Elemente eines Datentyps erlaubt und die Zuweisung des ersten Elements (String) ein Variant vom Type String erzeugt.
--- Ende Zitat ---

Hm...

Unter R8.5.3 gibt:


--- Code: ---Option Public
Option Declare
Option Base 1

Sub Initialize
Dim v(3) As Variant
Dim eins As String
Dim zwei As New NotesDateTime("")
Dim drei As Integer

eins = "ABC"
Call zwei.Setnow
drei = 333

v(1) = eins
v(2) = zwei.Lslocaltime
v(3) = drei

Stop

ForAll ele In v
Print ele & " - " & TypeName(ele)
End ForAll

End Sub
--- Ende Code ---

folgendes aus:

--- Code: ---ABC - STRING
31.03.2014 09:44:39 - DATE
333 - INTEGER
--- Ende Code ---

Ich gehe davon aus, daß dies unter R9 auch so ist.

Übrigens: Die NotesHilfe schweigt sich zu Variant im KeyArray natürlich aus bzw. macht vage / interpretierbare Angaben ::) Wäre ja auch zu einfach gewesen, wenn das Thema da behandelt werden würde  >:(


--- Zitat ---Set notesDocumentCollection = notesView.GetAllDocumentsByKey( keyArray [, exactMatch% ] )

Parameters

keyArray
String (variable-length only), integer, long or double value, or array of string, number, DateTime, or DateRange objects. Each element in the array is compared to a sorted column in the view. The first element in the array is compared to the first sorted column in the view; the second element is compared to the second sorted column; and so on.
--- Ende Zitat ---


Gruß,
Th.

udo187:
Danke @TH.

Die Notes-Hilfe habe ich mir natürlich auch angeschaut, naja...

Das würde also bedeuten, dass Getalldocumentsbykey  mit einem Key-Array mit x-beliebigen Datentypen zurechtkommt (zumindest ab der Version 8.5.3).
Die Frage ist nur, ob dies so gewollt ist, oder ob man auf der "sicheren" Seite bleiben sollte und zuvor alle Key-Werte in den gleichen Datentyp umgewandelt.

Udo

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln