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

  • Автор темы LIGHT
  • Дата начала
L

LIGHT

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

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

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

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

Например:

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

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

Что нужно:

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

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



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

LIGHT

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

LIGHT

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

LIGHT

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

morpheus

скриптописец
07.08.2006
3 915
1
#8
Для: LIGHT
Да ну и чему же тогда равен cat в деббагере???
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#9
<!--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")}, ???)
 
L

LIGHT

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

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#13
<!--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]
Тогда копай дальше.
 
L

LIGHT

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

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

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#16
<!--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]
Может поле пусто?
 
S

Sandr

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

LIGHT

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

Приведу код кнопочки, кнопочка лежин на вьюшке.
Код:
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]
С радостью приму ваш рецепт, выпишите? :)
 
S

Sandr

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


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


Msgbox cat(0)
 
L

LIGHT

#20
<!--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]
Уже писалось выше, не хочет так работать.