• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

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

LIGHT

Пошскажите как правильно открыть 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

В конце явно что-то намудрено, дела по хелпу...
Мне нужно вытянуть пик лист, и выбрать значение в переменную...
 
конечно будет ругаться, типы данных не совпадают.
 
<!--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
 
Нет, я переменную и "учебника" заменил на 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
 
Попробуй в хелпе посмотреть второй пример.
 
Нето, .... тоже самое.
Я моежт не правильно выразился (постал проблему)
В итоге мне нужно модальное окошко, в котором выведена вьюшка, юзер тыкает в нужное значение, и оно заносится в переменную.
 
Что-то вы совсем заблудились в своих исправлениях.

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 ни к одному из них не относится
 
Для: 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
 
Другая затыка, иза чего может вместо нужного PickList открыватся окно выбора пользователей справочника AK?
 
Потому что тип указан PICKLIST_NAMES. В хелпе же всё расписано.
 
Ребята, спасибочки большое, разобрался пришлось мозг ребутнуть, пока воткнулся что это за хренька:
Код:
"snapper", _
"ProgWork2", _
"By Category", _
"Document picker", _
Истина как всегда лежала на поверхности :)
Благодарности в виде "реп" роздана :)
Ну и еще вопрос.

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

Как будет правильно поступить в этом случае, заново открыть БД и найти документ по UNID дальше работать, или можно как-то сразу открыть выбранный докмент и считать с него нужные поля?
 
<!--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.
Этот метод сразу вернет коллекцию документов.
 
Вопрос усложнаяется, тут нужно нечто рекурсивного перебора.
Найдя этот документ мне нужно считать поле Pole4ko
В котором есть UNIDы других документов из этой же БД, типа
"12312312312312"
"42312312312112"
"62412352312116"
Вот эти документы тоже придется открыть что бы в них считать тоже по одному полю.

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab