Получение данных из другой БД

Тема в разделе "Lotus - Программирование", создана пользователем -, 25 янв 2008.

  1. Гость

    Полю надо присвоить значение поля хранящегося в другой БД. При помощи какой команды можно это сделать???
     
  2. Yakov

    Yakov Гость

    @DbLookup
     
  3. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Ну или скриптик...
     
  4. Гость

    Что бы воспользоваться @DbLookup, необходимо что бы пользователь сам ручками нажал на выпадающем списке и выбрал запись. Мне же надо, что бы при открытии формы полю, присваивалось значение поля из другой БД. При помощи какой команды можно это сделать в скрипте?
     
  5. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Computed поля и @DbLookup.
    Ну и @IsDocBeingLoaded.
     
  6. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Для: Денис Кириченко
    В событии PostOpen находите нужный вам документ через какое-либо представление или же GetDocumentByUNID и забираете от туда значение...
    Вообще на @ лучше не писать то, что можно написать на LotusScript'e
     
  7. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    <!--QuoteBegin-fedotxxl+28:01:2008, 09:26 -->
    <span class="vbquote">(fedotxxl @ 28:01:2008, 09:26 )</span><!--QuoteEBegin-->Вообще на @ лучше не писать то, что можно написать на LotusScript'e
    [snapback]95276" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Спорно.

    Хотя скрипт, конечно, погибчее...
     
  8. Гость

    В форме я создал поле, в свойствах которого я прописал @DbColumn. По идеи при открытии в поле уже должно быть контент, который должен был быть получен при помощи @DbColumn. В PostOpen я пишу:

    AllAuthPerson = Trim(source.fieldgettext("AllAuthPerson"))


    If AllAuthPerson Is Nothing Then
    Messagebox "AllAuthPerson is nothing", MB_OK+MB_ICONSTOP,"System Message"
    Else
    Forall users In AllAuthPerson
    .....
    End Forall
    End if

    Условие Если проходит успешно, типа в переменной что-то да есть, а вот на Forall пишет Tipe mismatch. Помогите, подскажите в чем дело?
     
  9. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Может
    AllAuthPerson = Trim(source.Document.GetItemValue("AllAuthPerson"))


    Просто иначе оно вернет стринг, а в forall нужен array, list и т.д.
    Если я все правильно понял
     
  10. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-Денис Кириченко+28:01:2008, 12:37 -->
    <span class="vbquote">(Денис Кириченко @ 28:01:2008, 12:37 )</span><!--QuoteEBegin-->If AllAuthPerson Is Nothing Then
    [snapback]95302" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Проверка на Nothing только для объектов.
    Правильно так: If AllAuthPerson = "" Then
     
  11. Гость

    AllAuthPerson какого типа должен быть? Varint для Trim(source.Document.GetItemValue("AllAuthPerson")) не подходит, а другие типы для Forall
     
  12. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    <!--QuoteBegin-Денис Кириченко+28:01:2008, 11:37 -->
    <span class="vbquote">(Денис Кириченко @ 28:01:2008, 11:37 )</span><!--QuoteEBegin-->AllAuthPerson = Trim(source.fieldgettext("AllAuthPerson"))


    If AllAuthPerson Is Nothing Then
    Messagebox "AllAuthPerson is nothing", MB_OK+MB_ICONSTOP,"System Message"
    Else
    Forall users In AllAuthPerson
    .....
    End Forall
    End if
    [snapback]95302" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    переделать
    Код (Text):
    Dim AllAuthPerson as Variant
    AllAuthPerson = FullTrim (source.fieldgettext("AllAuthPerson"))
    if not IsEmpty(AllAuthPerson) then
    ...
    else
    Forall users In AllAuthPerson
    .....
    End Forall
    enf if
     
  13. Sandr

    Sandr Гость

    ниче не перепутал? :)

    Код (Text):
    if not IsEmpty(AllAuthPerson) then
    Forall users In AllAuthPerson
    .....
    End Forall


    else
    ...
    enf if
     
  14. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    тьфу... ну да ... наоборот условие, или просто not из условия убрать
    Код (Text):
    Dim AllAuthPerson as Variant
    AllAuthPerson = FullTrim (source.fieldgettext("AllAuthPerson"))
    if IsEmpty(AllAuthPerson) then
    ... ОШИБКА
    else
    Forall users In AllAuthPerson
    .....
    End Forall
    enf if
     
  15. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: Morpheus
    Не будет работать. source.fieldgettext вернет строку. IsEmpty вернет False, т.к. IsEmpty(""). Ну и Forall по первой причине.
     
  16. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: Medevic
    тысяча чертей , ты прав....
    плять ну и понедельик всё из рук валиться...

    код сработает не для
    source.fieldgettext("AllAuthPerson")

    , а для notesDocument.GetItemValue("AllAuthPerson")
     
  17. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    <!--QuoteBegin-Morpheus+28:01:2008, 13:42 -->
    <span class="vbquote">(Morpheus @ 28:01:2008, 13:42 )</span><!--QuoteEBegin-->для notesDocument.GetItemValue("AllAuthPerson")
    [snapback]95336" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Ну вроде как я и написал
    source.Document.GetItemValue("AllAuthPerson")
     
  18. Гость

    К сожалению forall не работает, так как загоняет в users (Forall users In AllAuthPerson), не поэлементно, а сразу все строку :) Работает source.fieldgettext("AllAuthPerson"), через

    While AllAuthPerson <> ""
    User = Strleft(AllAuthPerson,",")
    Messagebox User, MB_OK+MB_ICONSTOP,"System Message"
    If cur_usr = User Then
    AllAuthPerson = ""
    Else
    AllAuthPerson = Trim(Strright(AllAuthPerson,","))
    End If
    Wend

    Было бы классно если бы заработало forall. Не знает как брать поэлементно?
     
  19. Sandr

    Sandr Гость

    А как это всю строку? Я понял.. у Вас там поле не многозначное, а все значения идут через запятую...

    Сдлайте так
    AllAuthPerson = Join(doc.getItemValue("AllAuthPerson")(0), ",")

    forall user in AllAuthPerson

    ... ну, дальше Вы знаете... :)
     
  20. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Для: Sandr
    может я запутался, может вместо Join нужно Split?
     
Загрузка...

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