Come posso utilizzare una data in un array in GetAllEntriesByKey?
-
05-09-2019 - |
Domanda
Sto cercando di utilizzare il giorno corrente in GetAllEntriesByKey passando un array. La matrice sembra così lontano come questo
Dim keyarray(2) As Variant
keyarray(0) = "FF Thompson ADT"
Set keyarray(1) = dateTime
Vorrei dire che questo
Set vc = view.GetAllEntriesByKey(keyarray, False)
Ecco una fila di quello che sembra quando funziona. L'agente di test viene stampato csv in un'email.
FF Thompson ADT, 2/3 / 2009,11: 45: 02:00, 0,6,0,, 00: 00: 04,5400,4
Non riesco a passare un dateTime giorno corrente che scorre. Posso impostare il dateTime manualmente nella dichiarazione e funziona. Penso che sia perché si sta cercando di passare anche il tempo, ma non lo so. Ho provato tre modi e si dice non valida tipo di valore chiave.
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
Non so se questo è utile, ma ho letto di valutare qui .
Quello che sto in ultima analisi, cercando di fare è GetFirstEntry per "FF Thompson ADT" per le voci esistono giorno più recenti. Sto anche cercando di fare lo stesso per il giorno prima. Sto cercando di riassumere i file elaborati (il numero 6) per entrambi i giorni e gli errori (il null) per il giorno più recente utilizzando qualcosa di simile. Ho bisogno di modificarlo in modo che trova i file elaborati e gli errori per le voci, ma non ho ottenuto lì, ma dovrebbe essere in grado di fare. Sto anche cercando di trovare la data più recente con valore temporale per la ie alimentazione "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
Grazie per qualsiasi aiuto o suggerimenti. Essi sono molto apprezzate.
Soluzione 2
Ecco una risposta che ho trovato
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)
Altri suggerimenti
Ho usato solo il metodo GetAllEntriesByKey con un array di stringhe. Non ho mai provato i tipi di miscelazione. Ma assumendo tipi differenti sono validi per tale metodo, il problema potrebbe risiedere nella differenza tra i tipi di data e ora in Notes. C'è un nucleo di tipo LS datetime e poi c'è un oggetto NotesDateTime. Scommetto la vista considera una colonna di data per essere formato dai tipi datetime di base, e così viene a mancare quando si passa il tipo di NotesDateTime.
Ma tale questione a parte, il mio suggerimento è quello di creare una vista che ha le colonne che si desidera accedere e impostare il tipo di ordinamento della prima colonna (contenente FF Thompson ADT) per asc, quindi impostare la seconda colonna con le date al disc. È quindi possibile accedere alle voci vista nell'ordine desiderato, con il più recente è primo, 2 ° 2 più recente, ecc
Se per caso il metodo restituisce i GetAllEntriesByKey documenti fuori ordine (non ricordo se assicura ordine), So che ho fatto prima utilizzando la classe NotesViewNavigator. C'è sicuramente un modo alternativo per farlo senza bisogno di chiamare GetAllEntriesByKey con la chiave data.