Как использовать дату в массиве в GetAllEntriesByKey? - PullRequest
0 голосов
/ 19 февраля 2009

Я пытаюсь использовать текущий день в GetAllEntriesByKey, передавая массив. Массив пока выглядит так

Dim keyarray(2) As Variant  
keyarray(0) = "FF Thompson ADT"  
Set keyarray(1) = dateTime  

Я бы хотел сказать это

Set vc = view.GetAllEntriesByKey(keyarray, False)  

Вот ряд того, на что это похоже, когда это работает. Тестовый агент распечатывает CSV в электронном письме.

FF Thompson ADT, 2/3 / 2009,11: 45: 02 PM, 0,6,0, 00: 00: 04,5400,4

Я не могу передать текущий день dateTime, который работает. Я могу установить dateTime вручную в объявлении, и это работает. Я думаю, это потому, что он пытается скоротать время, но я не знаю. Я пробовал три способа, и он говорит неверный тип значения ключа.

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

Не знаю, полезно ли это, но я читал об оценке здесь .

Что я в конечном итоге пытаюсь сделать, так это GetFirstEntry для «FF Thompson ADT» для самых последних записей дня. Я тоже пытаюсь сделать то же самое за день до этого. Я пытаюсь суммировать файлы, обработанные (число 6) за оба дня и ошибки (ноль) за самый последний день, используя что-то вроде этого. Мне нужно настроить его так, чтобы он нашел обработанные файлы и ошибки для записей, но я не получил там, но должен быть в состоянии сделать. Я также просто пытаюсь найти самую свежую дату со значением времени для канала, т.е. "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

Спасибо за любую помощь или предложения. Они очень ценятся.

Ответы [ 2 ]

1 голос
/ 20 февраля 2009

Вот ответ, который я нашел

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)
1 голос
/ 19 февраля 2009

Я использовал метод GetAllEntriesByKey только с массивом строк. Я никогда не пробовал смешивать типы. Но если допустить, что для этого метода допустимы разные типы, проблема может заключаться в разнице между типами datetime в Notes. Есть базовый тип datetime LS, а затем объект NotesDateTime. Могу поспорить, что в представлении считается, что столбец даты состоит из основных типов datetime, поэтому он не работает, если вы передаете тип NotesDateTime.

Но, кроме этой проблемы, я предлагаю создать представление, содержащее столбцы, к которым вы хотите получить доступ, и установить порядок сортировки первого столбца (содержащего FF Thompson ADT) на asc, а затем установить второй столбец с датами. до дес. Затем вы можете получить доступ к записям просмотра в нужном вам порядке, причем самые последние из них будут первыми, вторыми самыми последними вторыми и т. Д.

Если по какой-то причине метод GetAllEntriesByKey возвращает документы не по порядку (я забываю, гарантирует ли это порядок), я знаю, что сделал это до использования класса NotesViewNavigator. Определенно есть альтернативный способ сделать это без необходимости вызывать GetAllEntriesByKey с ключом даты.

...