Коллекции документво

Тема в разделе "Lotus - Программирование", создана пользователем Kizarek86, 30 июл 2007.

  1. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Необходимо составить коллекцию документов по текущей БД, в коллекцию должны войти документы определенной формы (форма1 к примеру), созданные за определенный период (дата1 и дата2)

    Код (Text):
        Dim collection As NotesDocumentCollection
    Dim n As Integer
    Set collection = db.FTSearch( ?????)
    не нашел как осуществлять поиск по этим критериям, подскажите плиз как реализовать.
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    NotesDatabase.Search
     
  3. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: kizarek
    Пользуйтесь db.Search
    а формулу отбора берите как в виде ( тока SELECT уберите ) и всё , например
    {Form = "MY_COOL_FORM" & MY_DATE_FIELD < [30.07.2007] & MY_DATE_FIELD > [30.07.2008] }
     
  4. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Morpheus, Form = "MY_COOL_FORM" так не хочет сравнивать. Как с помощью формул проверить на соответствие форме? в виде просто текстом приписывается "использовать форму "такую_то_такую"".

    У db.search как я понял обязательно должно быть 3 параметра ("формула", дата после которой изменен\создан документ, и максимальное число документов посещаемое в коллекцию)
     
  5. Ronchik

    Ronchik Гость

    Для: kizarek
    <!--QuoteBegin-Morpheus+30:07:2007, 09:41 -->
    <span class="vbquote">(Morpheus @ 30:07:2007, 09:41 )</span><!--QuoteEBegin-->а формулу отбора берите как в виде ( тока SELECT уберите ) и всё , например
    [snapback]73724" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    читай внимательней что написали напиши сначала свою формулу на виде потомо вставишь в db.Search
     
  6. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: kizarek

    Вы в хэлп хоть иногда смотрите??? примеры:

    2. This script uses @IsResponseDoc to get a collection of all the response documents in a database.
    Код (Text):
    Dim db As New NotesDatabase("Katmandu","somedocs.nsf")
    Dim collection As NotesDocumentCollection
    Set collection = db.Search("@IsResponseDoc",Nothing,0)

    <!--QuoteBegin-kizarek+30:07:2007, 10:13 -->
    <span class="vbquote">(kizarek @ 30:07:2007, 10:13 )</span><!--QuoteEBegin-->Form = "MY_COOL_FORM" так не хочет сравнивать
    [snapback]73728" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    - это кто сказал? дэбаггер ???
    имейте в виду что если в строке запроса есть " - кавычка то строку надо выделять с обоих боков { }
    {} - это теже ковычкки которые могут содеражать в себе кавычки ( эх.. каламбур сочинил )

    Пример
    Set collection = db.Search({Form = "InCard_Doc" & RegDate < [30.07.2007] & RegDate > [30.07.2008] },Nothing,0)
     
  7. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Morpheus, спасибо, всё работает. хелп читаю в первую очередь,и примерчик видел, не всегда понятно просто, например про {} не знал.
     
  8. GROMILA

    GROMILA Well-Known Member

    Регистрация:
    8 апр 2004
    Сообщения:
    297
    Симпатии:
    0
    Тут есть одна засада!!!!
    Коллекция по-умолчанию не отсортирована :)))))
    Толку от такой выборки?
     
  9. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: GROMILA
    А кто мешает отсортировать ?
     
  10. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Регистрация:
    5 сен 2006
    Сообщения:
    616
    Симпатии:
    4
    про отсортировать.. есть более простой способ отсортировать, чем коллекция --> вариант --> сортировать документы по значению поля ?
     
  11. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    ещё пару вопросов. Создана коллекция документов, как обратиться(считать\записать информацию) в какое либо поля этого документа? И как лучше реализовать критерий отбора по дате? т.е. запрашивать ввод дат с клавиатуры, желательно чтобы выбором из календаря, возможно ли такое?
     
  12. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--QuoteBegin-kizarek+30:07:2007, 12:06 -->
    <span class="vbquote">(kizarek @ 30:07:2007, 12:06 )</span><!--QuoteEBegin-->желательно чтобы выбором из календаря, возможно ли такое?
    [snapback]73759" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Вот Вы и пришли к поисковой форме, делайте как нравиться, есть поля типа ДАТА, в них можно выбирать дату как в календаре
    Делаете форму с полями выбора и бальшой кнопкой поиск )))


    <!--QuoteBegin-kizarek+30:07:2007, 12:06 -->
    <span class="vbquote">(kizarek @ 30:07:2007, 12:06 )</span><!--QuoteEBegin-->записать информацию
    [snapback]73759" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Запись одого поля во все доки
    StampAll method - Replaces the value of a specified name in all documents in a collection.

    <!--QuoteBegin-kizarek+30:07:2007, 12:06 -->
    <span class="vbquote">(kizarek @ 30:07:2007, 12:06 )</span><!--QuoteEBegin-->И как лучше реализовать критерий отбора по дате
    [snapback]73759" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Подробнее?!
     
  13. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Morpheus, есть к примеру набор некоторых документов, в которых ведется статистика некоторых параметров за день, хотелось бы сделать чтобы можно было задав интервал дат получить в некоторой другой форме статистику по документам за период. как реализовать некий запрос при клике на кнопку, который запросит интервал дат, после чего создаст отчет (ну незнаю,может форму новую, в которой отобразиться эта статистика, или окно какое нибудь всплывающее)

    Коллекцию уже умею нужную делать, сейчас пытаюсь прошагать по этой коллекции)

    з.ы. чёт вы за меня прям всё делаете, ещё раз спасибо за помощь,сам бы по пол года искал как сделать
     
  14. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--QuoteBegin-kizarek+30:07:2007, 12:42 -->
    <span class="vbquote">(kizarek @ 30:07:2007, 12:42 )</span><!--QuoteEBegin-->ак реализовать некий запрос при клике на кнопку, который запросит интервал дат,
    [snapback]73768" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    делаете малеькую субформу(назовем sfQueryDate) с двумя полями в которые будут вноситься интервалы дат.
    далее в документе на кнопкепоиск зделать заброс диалогбоксом(c sfQueryDate в параметре формы) . ну а дальше что Вам вернёт запрос так и будет(вимание,датовые поля в sfQueryDate и в основой Вашей форме должны иметь одинаковые имена ).
    после кликанья на запросе ОК в ваш гл.документ попадут значения датовых полей, всё теперь можно строить поиск - > составлять поисковую строку и выпонять собственно сам Search
     
  15. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Думаю проще сделать, кликаем на кнопку, открываеться форма, в которой и интервалы этих дат, и сам отчёт будет. По клику на другую кнопку происходит подсчёт статистики, и вывод её в определённые поля открытой формы. Вопросик очередной возник, как обратиться к полям открытой формы? т.е. соответственно считать дату, и записать в поля статистику.
     
  16. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--QuoteBegin-kizarek+30:07:2007, 13:14 -->
    <span class="vbquote">(kizarek @ 30:07:2007, 13:14 )</span><!--QuoteEBegin-->Вопросик очередной возник, как обратиться к полям открытой формы?
    [snapback]73776" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Ну Вы даете
    Sub Click(Source As Button)
    Dim workspace As New NotesUIWorkspace ' рабочее пространство
    Dim uidoc As NotesUIDocument
    Dim doc As NotesDocument

    Set uidoc = workspace.CurrentDocument ' тек.документ
    Set doc = uidoc.Document ' документ

    msgbox doc.Form(0) ' выводит сообщение в тек. документе о том что содержиться в поле Form
    doc.Form = "My Form" ' присваивает полю Form зачение "My Form"

    и т.д.
     
  17. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Кодировать на лотусе первый день начал, отсюда и глупые вопросы) Ещё раз большое спасибо, всё работает.
     
  18. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Код (Text):
    Set collection = db.Search( {((Form = "Form_LNK")) & ((@Created >= [02.07.2007] & @Created <= [30.07.2007]))},Nothing,0 )
    меняем на
    Код (Text):
    Set collection = db.Search( {((Form = "Form_LNK")) & ((@Created >= docST.stDate1 & @Created <= docST.stDate2))},Nothing,0 )
    Где stDate1, stDate2 в настройках поля имеют такой же формат даты, почему ошибка возникает?ну точнее не обираються документы в коллекцию при втором варианте.
     
  19. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-kizarek+30:07:2007, 15:22 -->
    <span class="vbquote">(kizarek @ 30:07:2007, 15:22 )</span><!--QuoteEBegin-->Где stDate1, stDate2 в настройках поля имеют такой же формат даты, почему ошибка возникает?ну точнее не обираються документы в коллекцию при втором варианте.
    [snapback]73789" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Потому второй вариант равносилен тому, что ты напишешь date1 = "docST.stDate1", вместо date1 = docST.stDate1.
    К тому же зачем так много скобок? Здесь они вообще не нужны.
     
  20. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Medevic, скобки из формулы созданой для вьюхи.

    как реализовать то правильно тогда?)
     
Загрузка...

Поделиться этой страницей