Picklist друй базы на лотусях

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

LIGHT

Гость
#1
Пошскажите как правильно открыть Plist другой базы делаю так:
Ругается на ForAll


Код:
	Dim db1 As NotesDatabase
Dim view As NotesView
Dim doc1 As NotesDocument
Dim picklist As Variant
Set db1 = s.CurrentDatabase

Set db1 = s.GetDatabase("server", "test\bases")
Set view = db1.GetView ("PLDatabases" )	

If db1.isOpen = False Then
Msgbox ("Ошибка")
Exit Sub
End If


Let Prompt = "Выберите"

If ( Isempty( view ) ) Then 
Messagebox "Отменено" , , "Resource selected"
Else

Forall view In picklist
messagelist = messagelist & plist & Chr(10)
End Forall
Messagebox messagelist , , "Resource selected"

End If
В конце явно что-то намудрено, дела по хелпу...
Мне нужно вытянуть пик лист, и выбрать значение в переменную...
 
H

Hedg

Гость
#2
конечно будет ругаться, типы данных не совпадают.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#3
<!--QuoteBegin-LIGHT+14:06:2007, 15:35 -->
<span class="vbquote">(LIGHT @ 14:06:2007, 15:35 )</span><!--QuoteEBegin-->Forall view In picklist
[snapback]69361" rel="nofollow" target="_blank[/snapback]​
[/quote]
Наверное, так надо? :(
Код:
Forall plist In picklist
 
L

LIGHT

Гость
#4
Нет, я переменную и "учебника" заменил на view

Переделал так (по хелпу), теперь ошибка "Не верный тип" (Object variable not set)


Код:
	Dim db1 As NotesDatabase
Dim doc1 As NotesDocument
Set db1 = s.CurrentDatabase
Set db1 = s.GetDatabase("server", "worck\bases")

If db1.isOpen = False Then
Msgbox ("Ошибка")
Exit Sub
End If

Dim picklist As Variant
Dim messagelist As String
Dim view As NotesView

Set picklist = db1.GetView ("PLStructureFlat" )	
Let Prompt = "Выберите"

If ( Isempty( picklist ) ) Then 
Messagebox "Canceled" , , "Resource selected"
Else
Forall plist In picklist
messagelist = messagelist & plist & Chr(10)
End Forall
Messagebox messagelist , , "Resource selected"
End If
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#5
Попробуй в хелпе посмотреть второй пример.
 
L

LIGHT

Гость
#6
Нето, .... тоже самое.
Я моежт не правильно выразился (постал проблему)
В итоге мне нужно модальное окошко, в котором выведена вьюшка, юзер тыкает в нужное значение, и оно заносится в переменную.
 

RAJ

Well-Known Member
17.01.2007
440
0
#7
Что-то вы совсем заблудились в своих исправлениях.

forall применяется только для контейнеров.

если перебирать вьюхи, то надо делать так:
Код:
Dim views as Variant
views = db.Views
Forall view In views
End ForAll
Syntax
ForAll refVar In container
[ statements ]
End ForAll
Elements
refVar
A reference variable for the array, list, or collection element. In the body of the ForAll loop, you use refVar to refer to each element of the array, list, or collection named by container. refVar can't have a data type suffix character appended.
container
The array, list, or collection whose elements you wish to process.
ключевые слова здесь array, list, or collection.
view ни к одному из них не относится
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#8
Для: LIGHT
Я тебе и говорю. Второй пример почти про это:
Код:
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Dim picklist As Variant
Dim messagelist As String
picklist = workspace.PickListStrings( _
PICKLIST_CUSTOM, _
True, _
"snapper", _
"ProgWork2", _
"By Category", _
"Document picker", _
"Please select some documents.", _
4, _
"Procedures" ) 
Forall plist In picklist
messagelist = messagelist & plist & Chr(10)
End Forall
Messagebox messagelist
End Sub
 
L

LIGHT

Гость
#9
Другая затыка, иза чего может вместо нужного PickList открыватся окно выбора пользователей справочника AK?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#10
Потому что тип указан PICKLIST_NAMES. В хелпе же всё расписано.
 
L

LIGHT

Гость
#11
Ребята, спасибочки большое, разобрался пришлось мозг ребутнуть, пока воткнулся что это за хренька:
Код:
"snapper", _
"ProgWork2", _
"By Category", _
"Document picker", _
Истина как всегда лежала на поверхности :)
Благодарности в виде "реп" роздана :)
Ну и еще вопрос.

И этой вьюхи я выбрал документ, и мне вернулся UNID этого дока
Дальше мне нужно найти этот документ в базе и прочитать пару полей.

Как будет правильно поступить в этом случае, заново открыть БД и найти документ по UNID дальше работать, или можно как-то сразу открыть выбранный докмент и считать с него нужные поля?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#12
<!--QuoteBegin-LIGHT+15:06:2007, 09:55 -->
<span class="vbquote">(LIGHT @ 15:06:2007, 09:55 )</span><!--QuoteEBegin-->И этой вьюхи я выбрал документ, и мне вернулся UNID этого дока
Дальше мне нужно найти этот документ в базе и прочитать пару полей.

Как будет правильно поступить в этом случае, заново открыть БД и найти документ по UNID дальше работать, или можно как-то сразу открыть выбранный докмент и считать с него нужные поля?
[snapback]69473" rel="nofollow" target="_blank[/snapback]​
[/quote]
Тогда тебе лучше использовать не notesUIWorkspace.PickListStrings, а notesUIWorkspace.PickListCollection.
Этот метод сразу вернет коллекцию документов.
 
L

LIGHT

Гость
#13
Вопрос усложнаяется, тут нужно нечто рекурсивного перебора.
Найдя этот документ мне нужно считать поле Pole4ko
В котором есть UNIDы других документов из этой же БД, типа
"12312312312312"
"42312312312112"
"62412352312116"
Вот эти документы тоже придется открыть что бы в них считать тоже по одному полю.

В идеале все это мутиться для того что бы получить запись вида
ООО Фирма/Управление/Экономический отдел/Этот_документ_мне_известен_читаю_поле _Pole4ko
Где каждому элементу соответствует UNID изначально известен последний элемент списка из которого я получаю UNIDы родителей, и мне нужно подняться вверх считывая title у предков.