Comment puis-je utiliser une date dans un tableau à GetAllEntriesByKey?
-
05-09-2019 - |
Question
Je suis en train d'utiliser la journée en cours dans GetAllEntriesByKey en passant un tableau. Le tableau ressemble si loin comme ça
Dim keyarray(2) As Variant
keyarray(0) = "FF Thompson ADT"
Set keyarray(1) = dateTime
Je voudrais dire
Set vc = view.GetAllEntriesByKey(keyarray, False)
Voici une rangée de quoi il ressemble quand il fonctionne. L'agent de test imprime csv dans un courriel.
FF Thompson ADT, 2/3 / 2009,11: 45: 14 heures, 0,6,0, 00: 00: 04,5400,4
Je ne peux pas sembler passer un jour datetime courant qui fonctionne. Je peux régler la dateTime manuellement dans la déclaration et il fonctionne. Je pense qu'il est parce qu'il essaie de passer aussi le temps, mais je ne sais pas. J'ai essayé trois voies et il dit type de valeur clé non valide.
Dim dateTime As New NotesDateTime("")
Call dateTime.LSLocalTime = Now
...
keyarray(1) = dateTime.Dateonly
Dim dateTime As New NotesDateTime("")
Call dateTime.SetNow
...
keyarray(1) = dateTime.Dateonly
Dim dateTime As New NotesDateTime("Today")
...
keyarray(1) = dateTime.Dateonly
Je ne sais pas si cela est utile, mais j'ai lu sur ÉVALUER ici .
Ce que je vais essayer de faire en fin de compte est GetFirstEntry pour « FF Thompson ADT » pour les plus récentes entrées de jour existent. Je suis aussi essayer de faire la même chose pour le jour avant. J'essaie de résumer les dossiers traités (le nombre 6) pour les deux jours et les erreurs (NULL) pour le jour le plus récent en utilisant quelque chose comme ça. J'ai besoin de ruser il trouve les fichiers traités et erreurs pour les entrées mais je n'y ai pas eu, mais devrait être en mesure de le faire. Je suis aussi juste essayer de trouver la date la plus récente valeur de temps pour l'alimentation-à-dire « FF Thompson ADT ».
Set entry = vc.GetFirstEntry
filesprocessed = 0
Dim errors, errortotal As Integer
errors = 0
errorstotal = 0
While Not entry Is Nothing
rowval = 0
errors = 0
Forall colval In entry.ColumnValues
If rowval > 0 Then
errors = Cint(colval)
Else
rowval = Cint(colval)
End If
End Forall
filesprocessed = filesprocessed + rowval
errorstotal = errorstotal + errors
Set entry = vc.GetNextEntry(entry)
Wend
Merci pour toute aide ou suggestions. Ils sont très appréciés.
La solution 2
Voici une réponse que je trouve
Dim todaysdate As New NotesDateTime("Today")
Dim dateTime As New NotesDateTime(todaysdate.DateOnly)
Dim keyarray(1) As Variant keyarray(0) = feedname
Set keyarray(1) = dateTime
Set vc = view.GetAllEntriesByKey(keyarray, False)
Autres conseils
Je ne l'ai utilisé la méthode GetAllEntriesByKey avec un tableau de chaînes. Je ne l'ai jamais essayé les types de mélange. Mais en supposant différents types sont valables pour cette méthode, le problème peut se situer dans la différence entre les types datetime dans les notes. Il y a un noyau de type datetime LS et puis il y a un objet NotesDateTime. Je parie que la vue considère une colonne de date à être composée des types datetime de base, et il échoue lorsque vous passez le type de NotesDateTime.
Mais cette question de côté, ma suggestion est de créer une vue qui a les colonnes que vous souhaitez accéder, et définir l'ordre de tri de la première colonne (contenant FF Thompson ADT) à asc, puis définissez la deuxième colonne avec les dates à desc. Vous pouvez alors accéder aux entrées de vue dans l'ordre que vous voulez, le plus récent étant le premier, 2e plus récente 2e, etc.
Si, par hasard, la méthode GetAllEntriesByKey renvoie les documents hors d'usage (j'oublie si elle garantit l'ordre), je sais que je l'ai fait avant d'utiliser la classe NotesViewNavigator. Il y a certainement une autre façon de le faire sans avoir besoin d'appeler GetAllEntriesByKey avec la touche de date.