Гимор нужно состряпать типа отчета

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

  1. LIGHT

    LIGHT Гость

    Объясню ситуевину.

    Есть база в которой хранятся документы вида

    Документ
    - Ответ на документ
    - Ответ на документ
    Приложение к документу
    - Ответ на приложение к докменту
    - Ответ на приложение к докменту
    - Ответ на приложение к докменту
    Приложение к документу
    - Ответ на приложение к докменту
    - Ответ на приложение к докменту
    - Ответ на приложение к докменту

    Уровернь вложенности может быть и больше

    Например:

    Документ
    - Ответ на документ
    - Ответ на документ
    Приложение к документу
    - Ответ на приложение к докменту
    Приложение к документу
    - Ответ на приложение к докменту
    Приложение к приложению документа
    - .....

    Документ строиться по форме "Document"
    Приложение к документу и все последующие приложения по форме "RespDocument"
    Ответ к документу по форме "Comment"
    Ответ к приложениям по форме "RespComment"

    Что нужно:

    Вытащить ответы ("Comment" и "RespComment") которые создал Иванов Иван Иванович, помимо этого из документа ("Document" или "RespComment") по которому создан этот ответ вытащить значение поля XXX.
    Хорошо бы это во вьюшку или как вариант в ексель ну или в MsgBox там уж сам в ёксёль запихаю.
    Т.е. должна получить плоская структура.

    Например:
    Иванов Иван Иванович на [Subject] ответил - да
    Иванов Иван Иванович на [Subject] ответил - да
    Иванов Иван Иванович на [Subject] ответил - нет



    PS вьюху которая выдергивает все ответы от Иванова Ивана Ивановича сделал, так же получил $REF
    Что дальше сделать???
     
  2. LIGHT

    LIGHT Гость

    Нет меня это не интересует!
    Как выгрузить в ексель знаю.
    Интересует как с $REF работать.
     
  3. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
  4. LIGHT

    LIGHT Гость

    Возможно ли через Evaluate получить значение поля XXX
    Т.е. получил я коллекцию документов ответов которые меня интересуют.
    Дальше это коллекцию кручу в цикле и делаю
    Dim cat as Variant
    cat = Evaluate({@GetDocField($REF;"XXX")})
    msgbox cat - отдает пусто
    Может кто подскажет как сделать
     
  5. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    msgbox cat(0)
     
  6. LIGHT

    LIGHT Гость

    Для: Morpheus
    Пробовал, не катит, дебагер ругается на такую строку и выдет что нет массива данных.
    Variant does not contain a container
     
  7. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: LIGHT
    Да ну и чему же тогда равен cat в деббагере???
     
  8. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-LIGHT+28:09:2007, 13:47 -->
    <span class="vbquote">(LIGHT @ 28:09:2007, 13:47 )</span><!--QuoteEBegin-->cat = Evaluate({@GetDocField($REF;"XXX")})
    [snapback]79956" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Не указан объект.
    cat = Evaluate({@GetDocField($REF;"XXX")}, ???)
     
  9. morpheus

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

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

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: Morpheus
    Что "и" ?
     
  11. LIGHT

    LIGHT Гость

    Его не обязательно указывать. В хелпе как раз и приведено 3 примера на эту тему.
    А что я там должен указать по вашему? doc не исправляет ситуации
     
  12. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-LIGHT+28:09:2007, 14:24 -->
    <span class="vbquote">(LIGHT @ 28:09:2007, 14:24 )</span><!--QuoteEBegin-->Его не обязательно указывать. В хелпе как раз и приведено 3 примера на эту тему.
    [snapback]79970" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Ну ладно. Как пожелаешь. :)

    <!--QuoteBegin-LIGHT+28:09:2007, 14:24 -->
    <span class="vbquote">(LIGHT @ 28:09:2007, 14:24 )</span><!--QuoteEBegin-->А что я там должен указать по вашему? doc не исправляет ситуации
    [snapback]79970" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Тогда копай дальше.
     
  13. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    По одной строке сложно что-то сказать.
     
  14. LIGHT

    LIGHT Гость

    Мулька в том, что сделал вью, где столбец должен делать тоже самое. Т.е.
    @GetDocField($Ref;"Subject")
    И хрен там оно пустое!!!
    В форме есть еще не системное поле, которое хранит UNID родителя
    Делаю так @GetDocField(RodUNID;"Subject") - один фиг, что за байда???

    Для: Medevic
    А все таки, куда копать то хоть???
     
  15. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-LIGHT+28:09:2007, 14:30 -->
    <span class="vbquote">(LIGHT @ 28:09:2007, 14:30 )</span><!--QuoteEBegin-->Мулька в том, что сделал вью, где столбец должен делать тоже самое. Т.е.
    @GetDocField($Ref;"Subject")
    И хрен там оно пустое!!!
    [snapback]79973" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Хелп говорит, что собака @GetDocField не работает в столбце...

    <!--QuoteBegin-LIGHT+28:09:2007, 14:30 -->
    <span class="vbquote">(LIGHT @ 28:09:2007, 14:30 )</span><!--QuoteEBegin-->В форме есть еще не системное поле, которое хранит UNID родителя
    Делаю так @GetDocField(RodUNID;"Subject") - один фиг, что за байда???
    [snapback]79973" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Может поле пусто?
     
  16. Sandr

    Sandr Гость

    Я вот не пойму, зачем использовать Evaluate? Можно же все красиво сделать скриптом... Тока не надо говорить, что Evaluate будет быстрей работать...
     
  17. LIGHT

    LIGHT Гость

    В том то и дело, что не пусто, соседним столбцом создал (RodUNID) - выводятся заветные циферки с буковками

    Приведу код кнопочки, кнопочка лежин на вьюшке.
    Код (Text):
    Sub Click(Source As Button)

    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument
    Dim GDoc As NotesDocument
    Dim strSearchRule As String ' Строка поиска документов
    Set db = session.CurrentDatabase

    strSearchRule = { (Form="Comment" & Reviewed="Затестин Тест Перетестович") }

    Set dc = db.Search (strSearchRule, Nothing, 0)
    Set doc = dc.GetFirstDocument()

    While Not(doc Is Nothing)
    Dim ID As String
    Dim cat As Variant
    ID = doc.Resp_Parents(0)
    Print ID & "  " & doc.Subject(0)
    cat = Evaluate({@GetDocField($ref; "Subject")})
    Msgbox cat
    Set doc = dc.GetNextDocument(doc)
    Wend
    End Sub
    <!--QuoteBegin-Sandr+28:09:2007, 14:36 -->
    <span class="vbquote">(Sandr @ 28:09:2007, 14:36 )</span><!--QuoteEBegin-->Я вот не пойму, зачем использовать Evaluate? Можно же все красиво сделать скриптом... Тока не надо говорить, что Evaluate будет быстрей работать...
    [snapback]79978" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    С радостью приму ваш рецепт, выпишите? :)
     
  18. Sandr

    Sandr Гость

    cat = Evaluate({@GetDocField($ref; "Subject")})
    Msgbox cat


    тут ошибка.. Evaluate возвращает вариант, а не строку...


    Msgbox cat(0)
     
  19. LIGHT

    LIGHT Гость

    <!--QuoteBegin-Sandr+28:09:2007, 14:40 -->
    <span class="vbquote">(Sandr @ 28:09:2007, 14:40 )</span><!--QuoteEBegin-->cat = Evaluate({@GetDocField($ref; "Subject")})
    Msgbox cat
    тут ошибка.. Evaluate возвращает вариант, а не строку...
    Msgbox cat(0)
    [snapback]79981" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Уже писалось выше, не хочет так работать.
     
Загрузка...

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