Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.65/288: Рейтинг темы: голосов - 288, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 08.09.2006
Сообщений: 64
1

NotesDocumentCollection

29.10.2006, 19:07. Показов 52650. Ответов 57
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как создать пустую коллекцию, чтобы в нее потом можно было добавлять документы при помощи collection.AddDocument ????
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.10.2006, 19:07
Ответы с готовыми решениями:

NotesDocumentCollection.DeleteDocument
DeleteCol объявлена в Declare агента. пробовал объявлять в секции inicialize и передавать в...

Notesdocumentcollection.ftsearch Vs Getfirst/next
Всем привет! Народ, кто тестил, при каком кол-ве документов лучше использовать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
57
0 / 0 / 0
Регистрация: 23.10.2006
Сообщений: 218
30.10.2006, 09:36 2
Берёшь первую попавшуюся вьюху. И дальше GetAllDocumentsByKey с какой-нить дикой строкой. Например, Set doccol=view.GetAllDocumentsByKey("QQQQWWWWWEEEEERRRRR!@#sdsdcdgf",True). Ну и на всякий случай вычищаешь эту коллекцию .
0
0 / 0 / 0
Регистрация: 08.09.2006
Сообщений: 64
30.10.2006, 16:15 3
Как же эту коллекцию вычистить? Как вообще можно удалить документ из коллекции?

а насчет главного вопроса, пришел к выводу, что лучшим способом будет

Set coll = db.Search("", nothyng, 0)



Цитата Сообщение от Kee_Keekkenen
переменная типа variant
а вы сами пробовали или "где-то слышали" ??
0
1 / 1 / 0
Регистрация: 01.10.2006
Сообщений: 615
30.10.2006, 16:45 4
все просто
0
0 / 0 / 0
Регистрация: 03.04.2004
Сообщений: 195
31.10.2006, 00:53 5
А вот нечего коллекцию лотусиную использовать не по незначению.
Для временного хранения и передачи параметров юзай List або массив динамический
(Redym с перезервом)
0
0 / 0 / 0
Регистрация: 23.10.2006
Сообщений: 218
31.10.2006, 10:58 6
<!--QuoteBegin-ak-47+31:10:2006, 15:02 -->
<table border="0" cellpadding="0" cellspacing="0" align="center" width="98%"> [tr] <td class="vbquote"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="75" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="50px"> [tr] <td class="vbquote" width="28" valign="top"></td> <td class="vbquote" width="100%" style="background-image: url(style_images/ckr/quotes/quote-bg.gif); background-position: center;" valign="middle"><span class="vbquote">Цитата:</span></td> <td class="vbquote" valign="top"></td> [/tr] </table> </td> <td class="vbquote" align="left" style="background-image: url(style_images/ckr/quotes/quot-lr-bg.gif)" valign="bottom"></td><td class="vbquote" width="0" align="left" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="200"> [tr] <td class="vbquote" valign="top"></td> <td class="vbquote" width="100%" style="background-image: url(style_images/ckr/quotes/quot-bye-bg.gif)" align="left" valign="middle" nowrap="nowrap"><span class="vbquote">(ak-47 @ 31:10:2006, 15:02 )</span></td> <td class="vbquote" valign="top"></td> [/tr] </table> </td><td class="vbquote" width="100%" align="right" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="100%"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" style="background-image: url(style_images/ckr/quotes/quot-top-bg.gif)" width="100%" valign="middle"></td> <td class="vbquote" align="left" valign="top"></td> [/tr] </table> </td> [/tr] </table> </td> [/tr] </table> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="10" style="background-image: url(style_images/ckr/quotes/quoting-left.gif)"></td> <td class="vbquotemain" width="100%" valign="top"></td> <td class="vbquote" width="10" style="background-image: url(style_images/ckr/quotes/quoting-right.gif)"></td> [/tr] [tr] <td class="vbquote" width="10" style="background-image: url(style_images/ckr/quotes/quot-left-bg.gif)"></td> <td class="vbquotemain" width="100%" valign="top"><!--QuoteEBegin-->Как же эту коллекцию вычистить? Как вообще можно удалить документ из коллекции?<!--QuoteEnd--></td> [/tr] [tr] [/tr] </table> </td> [/tr] </table>
<!--QuoteEEnd-->Я это обычно делаю вот так:
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Deletes a document from a collection (not from the disk)</div></div><div class="sp-body"><div class="sp-content">


Note This method is new with Release 5.
Defined in
NotesDocumentCollection
Syntax
Call notesDocumentCollection.DeleteDocument( document )
Parameters
document
NotesDocument. The document to be deleted. If you specify Nothyng, thys method generates an error.
Usage
The specified document must have originated in thys collection. If the document does not exist in the collection, or if it was removed from the database by a RemoveAll operation, an error will be raised.
<!--QuoteBegin-Mihal+1:11:2006, 09:39 -->
<table border="0" cellpadding="0" cellspacing="0" align="center" width="98%"> [tr] <td class="vbquote"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="75" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="50px"> [tr] <td class="vbquote" width="28" valign="top"></td> <td class="vbquote" width="100%" style="background-image: url(style_images/ckr/quotes/quote-bg.gif); background-position: center;" valign="middle"><span class="vbquote">Цитата:</span></td> <td class="vbquote" valign="top"></td> [/tr] </table> </td> <td class="vbquote" align="left" style="background-image: url(style_images/ckr/quotes/quot-lr-bg.gif)" valign="bottom"></td><td class="vbquote" width="0" align="left" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="200"> [tr] <td class="vbquote" valign="top"></td> <td class="vbquote" width="100%" style="background-image: url(style_images/ckr/quotes/quot-bye-bg.gif)" align="left" valign="middle" nowrap="nowrap"><span class="vbquote">(Mihal @ 1:11:2006, 09:39 )</span></td> <td class="vbquote" valign="top"></td> [/tr] </table> </td><td class="vbquote" width="100%" align="right" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="100%"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" style="background-image: url(style_images/ckr/quotes/quot-top-bg.gif)" width="100%" valign="middle"></td> <td class="vbquote" align="left" valign="top"></td> [/tr] </table> </td> [/tr] </table> </td> [/tr] </table> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="10" style="background-image: url(style_images/ckr/quotes/quoting-left.gif)"></td> <td class="vbquotemain" width="100%" valign="top"></td> <td class="vbquote" width="10" style="background-image: url(style_images/ckr/quotes/quoting-right.gif)"></td> [/tr] [tr] <td class="vbquote" width="10" style="background-image: url(style_images/ckr/quotes/quot-left-bg.gif)"></td> <td class="vbquotemain" width="100%" valign="top"><!--QuoteEBegin-->А вот нечего коллекцию лотусиную использовать не по незначению.
Для временного хранения и передачи параметров юзай List або массив динамический
(Redym с перезервом)<!--QuoteEnd--></td> [/tr] [tr] [/tr] </table> </td> [/tr] </table>
<!--QuoteEEnd-->Ну, человек же не написал КАК он её пользовать собирается. А у коллекции есть ряд "вкусных" методов. FTSearch, например. Или StampAll тоже интиресная штука. Опять же класс NotesNewsLetter работает с коллекциями.
0
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
13.01.2010, 10:17 7
Иногда приходилось сталкиваться с необходимостью создания пустой коллекции.
В 8ке у notesdatabase появился новый (недокументированный) метод для этого - CreateDocumentCollection.
Мне попалось на глаза сообщение на эту тему.
Привлек внимание интересный коммент к нему (2й) насчет создания пустой коллекции (вольный перевод):
"При использовании db.CreateDocumentCollection () получаем в результате неотсортированную коллекцию. То есть коллекция всегда обрабатывает добавленные в нее документы в порядке их NoteID. Аналогичную коллекцию даст .search().
Однако, если коллекция строится с помощью .GetAllDocumentsByKey, то, даже если результирующий набор пуст, коллекция считается отсортированной, и поэтому документы будут обрабатываться в том порядке, в котором вы их добавите (first-in-first-out). Эта особенность, оказывается, имеет очень важное значение для некоторых видов операций."
0
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 2,219
13.01.2010, 10:27 8
Интересно, а вызов
Set notesDocumentCollection = notesDatabase.GetProfileDocCollection("Нет таких профилей в этой базе!")
даст сортированную или несортированную коллекцию?
0
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
13.01.2010, 10:46 9
ToxaRat
Ну, конечно, можно переделать код через списки или массив документов и не морочиться с коллекциями.
но не одна я такая
не один раз в коде встречала, даже как-то давненько прикалывалась с того, кто чего у нас пишет в качестве параметра для GetAllDocumentsByKey (народу много поработало).

Medevic
Да, хелп 7ки вообще практически какую-либо сортировку отрицает, говорит про GetAllDocumentsByKey, что "Documents returned by thys method are in no particular order" (в отличие от коллекции энтрисов).
nvy
ничего не скажу, надо экспериментировать с GetProfileDocCollection.
И вообще хз, насколько это вообще верно.
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
13.01.2010, 13:38 10
Во времена 5-ки была какая-то дока (не помню, но в голове сидит жёстко), что GetAllDocumentsByKey возвращает коллекцию, отсортированную по дате создания документов. Мы тогда наткнулись на это... для одного процесса нам нужна была "своя" сортировка, побороть не смогли, использовать библиотеки, "сортирующие коллекцию", а на самом деле возвращающую массивы или списки - это изврат (зачем лишний перебор?), поэтому остановились тогда на NotesViewNavigatorе.

Что касается использования изначально пустых коллекций и их создания с помощью GetProfileDocCollection, так это не глупость, иногда это удобно. Использую, например, когда получил документ по CaretCategory - засовываю его в коллекцию, - последующий код унифицируется, т.е. я не ставлю потом проверок типа "если был выделен 1 документ, то выполняем опереции с ND, а если несколько, то с NDC", все последующие процедуры работают без этих ненужных условий - по коллекции.

Немного "напрягает" другое... - что у коллекции есть свойство Parent. Никогда не добавлял в коллекцию документы из другой БД; теоретически должно поклинить... если да, то это конечно неприятное ограничение.
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
13.01.2010, 14:02 11
Цитата Сообщение от VladSh
Немного "напрягает" другое... - что у коллекции есть свойство Parent. Никогда не добавлял в коллекцию документы из другой БД; теоретически должно поклинить... если да, то это конечно неприятное ограничение.
клинит. даже ошибка есть именная. 4427 Document is from different database
инстанс NotesDatabase - не синглтон, поэтому клинит, даже если document.ParentDatabase фактически совпадает с collection.parent, но ссылаются на разные объекты.
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class=vb> Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection

Set db = session.CurrentDatabase
Set collection = db.Search( "" , Nothyng , 0 )

Dim sameDb As NotesDatabase

При получении по replicaID - sameDb - другой объект. ERROR
Set sameDb = New NotesDatabase( "" , "" )
Call sameDb.OpenByReplicaID( db.Server , db.ReplicaID )

При получении по getDatabase - sameDb - тот же объект. Нормально работает.
Set sameDb = session.GetDatabase( db.Server , db.FilePath )

Dim doc As NotesDocument
Set doc = sameDb.AllDocuments.GetFirstDocument
Call collection.AddDocument( doc )[/CODE]
0
1 / 1 / 0
Регистрация: 07.12.2009
Сообщений: 1,197
13.01.2010, 14:13 12
turumbay

В коллекцию, полученую культурными методами - да. Тем более, если там есть уже хоть один док. Просто интересно было, если в пустую, полученную с помощью GetProfileDocCollection, добавить док из др. БД... попробую как-нибудь.

GetDatabase никогда не приходилось использовать, т.к. при подключении к БД у меня они в List записывались, где тэгом был AliasDb, по которому её вызывали в коде. Интересно, спасибо!
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
13.01.2010, 14:22 13
Цитата Сообщение от VladSh
В коллекцию, полученую культурными методами - да. Тем более, если там есть уже хоть один док. Просто интересно было, если в пустую, полученную с помощью GetProfileDocCollection, добавить док из др. БД... попробую как-нибудь.
Дык здесь и есть пустая коллекция. db.search("", Nothyng , 0 ) - это аналог трюка с GetProfileDocCollection.
т.е. в коллекцию( в т.ч. пустую ) можно добавить документ, у которого parentDatabase ссылается на тот же объект, что и collection.parent.
получается - это необходимое условие.
0
0 / 0 / 0
Регистрация: 23.08.2007
Сообщений: 364
20.05.2010, 15:03 14
Цитата Сообщение от turumbay
Set collection = db.Search( "" , Nothyng , 0 )
по моему Search работает дольше чем GetAllDocumentsByKey
0
0 / 0 / 0
Регистрация: 15.03.2009
Сообщений: 615
20.05.2010, 15:08 15
Цитата Сообщение от yerke
по моему Search работает дольше чем GetAllDocumentsByKey
по вашему, может и дольше, но вот по жизни - быстрее. сишная функция сразу возвращает управление вызывающей при пустой nsfformula - никакого поиска не происходит. а вот процесс Set view = db.getView(...) займет время однозначно.
если хочется проверить - welcome. написание теста займет 5 минут.
0
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 200
31.05.2010, 18:01 16
Нужно выбрать документы из категории в виде. Все вроде нормально, но где-то слышал что в коллекции сортировка слетает. Это так? Можно как-то отсортировать коллекцию?
0
0 / 0 / 0
Регистрация: 15.05.2009
Сообщений: 1,454
31.05.2010, 18:04 17
NotesViewEntryCollection class
0
0 / 0 / 0
Регистрация: 04.11.2007
Сообщений: 3,019
31.05.2010, 18:05 18
garri
колекция будет построена согласно дате создания документов и коллекцию никогда не нужно даже пытаться сортировать
0
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 200
31.05.2010, 18:08 19
Спасибо.

Добавлено:


Цитата Сообщение от ToxaRat
garri
колекция будет построена согласно дате создания документов и коллекцию никогда не нужно даже пытаться сортировать
Понятно, спс, запомню на будущее.
NotesViewEntryCollection то что нужно.
0
0 / 0 / 0
Регистрация: 19.04.2009
Сообщений: 2,219
31.05.2010, 18:21 20
Цитата Сообщение от ToxaRat
колекция будет построена согласно дате создания документов и коллекцию никогда не нужно даже пытаться сортировать
Где-то натыкался на классы сортировки коллекции. Принцип действия — если в пустую коллекцию добавлять документы, то они в ней будут отсортированы в порядке добавления.
Сам не пользовал, где может пригодиться, не знаю.
0
31.05.2010, 18:21
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru