Autor Thema: Getalldocumentsbykey & Key-Array mit unterschiedlichen Datentypen  (Gelesen 4450 mal)

Offline udo187

  • Junior Mitglied
  • **
  • Beiträge: 98
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

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
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

Offline udo187

  • Junior Mitglied
  • **
  • Beiträge: 98
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


Offline thkn777

  • Aktives Mitglied
  • ***
  • Beiträge: 176
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.
« Letzte Änderung: 31.03.14 - 10:04:24 von thkn777 »

Offline udo187

  • Junior Mitglied
  • **
  • Beiträge: 98
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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz