Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: udo187 am 31.03.14 - 09:09:56

Titel: Getalldocumentsbykey & Key-Array mit unterschiedlichen Datentypen
Beitrag von: udo187 am 31.03.14 - 09:09:56
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
Titel: Re: Getalldocumentsbykey & Key-Array mit unterschiedlichen Datentypen
Beitrag 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.
Insofern also nichts neues unter der Sonne.

Bernhard
Titel: Re: Getalldocumentsbykey & Key-Array mit unterschiedlichen Datentypen
Beitrag von: udo187 am 31.03.14 - 09:23:25
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

Titel: Re: Getalldocumentsbykey & Key-Array mit unterschiedlichen Datentypen
Beitrag von: thkn777 am 31.03.14 - 09:45:40
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.

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

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

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.


Gruß,
Th.
Titel: Re: Getalldocumentsbykey & Key-Array mit unterschiedlichen Datentypen
Beitrag von: udo187 am 31.03.14 - 10:41:35
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