Сделать множественный выбор

Автор Тема: Сделать множественный выбор  (Прочитано 13072 раз)

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
Сделать множественный выбор
« : 30 Сентябрь 2009, 12:45:03 »
Есть кнопка по выбору адресной книги
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim mDB As Variant
Set db = session.CurrentDatabase
Dim doc As NotesDocument
Set uiDoc = ws.CurrentDocument
Set doc = uiDoc.Document

mDB = ws.Prompt( 13, "Выбор ", "Укажите" )
doc.TitleNames = mDB(2)
Set PABdb = New NotesDatabase(mDB(0),mDB(1))
doc.ReplicaIDnames = PABdb.ReplicaID
doc.ReplicaIDnames_1 = Left(PABdb.ReplicaID,8)  & ":" & Right(PABdb.ReplicaID,8)

А как теперь тоже самое выбирать, но при условии, что если уже выбрана одна, то можно было добавить еще одну адр.книгу?
Делаю так:
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim mDB As Variant
Set db = session.CurrentDatabase
Dim doc As NotesDocument
Set uiDoc = ws.CurrentDocument
Set doc = uiDoc.Document
If Len(doc.TitleNames (0))=0 Then
mDB = ws.Prompt( 13, "Выбор", "Укажите" )
doc.TitleNames = mDB(2)
Set PABdb = New NotesDatabase(mDB(0),mDB(1))
doc.ReplicaIDnames = PABdb.ReplicaID
doc.ReplicaIDnames_1 = Left(PABdb.ReplicaID,8)  & ":" & Right(PABdb.ReplicaID,8)
Else
mDB = ws.Prompt( 13, "Выбор", "Укажите" )
doc.TitleNames = Arrayappend( doc.TitleNames, mDB(2))
Set PABdb = New NotesDatabase(mDB(0),mDB(1))
doc.ReplicaIDnames=Arrayunique(PABdb.ReplicaID)

End If
Но в строку doc.ReplicaIDnames=Arrayunique(PABdb.ReplicaID) ничего не добавляется

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
Re: Сделать множественный выбор
« Ответ #1 : 30 Сентябрь 2009, 13:16:45 »
PABdb.ReplicaID - это строка. Зачем над ней делать Arrayunique?

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
Re: Сделать множественный выбор
« Ответ #2 : 30 Сентябрь 2009, 13:21:12 »
а как сделать, чтобы в поле добавлялись значения?

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
Re: Сделать множественный выбор
« Ответ #3 : 30 Сентябрь 2009, 13:22:27 »
в строке PABdb.ReplicaID постоянно новое значение, а не несколько значений

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
Re: Сделать множественный выбор
« Ответ #4 : 30 Сентябрь 2009, 13:25:02 »
можно воспользоваться тем же Arrayappend

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
Re: Сделать множественный выбор
« Ответ #5 : 30 Сентябрь 2009, 13:33:09 »
не могу понять что надо ставить в doc.ReplicaIDnames=Arrayappend(PABdb.ReplicaID, ?????)

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
Re: Сделать множественный выбор
« Ответ #6 : 30 Сентябрь 2009, 13:35:30 »
смотря что вам нужно ;) можно посмотреть на две строки раньше, возможно наведет на мысль

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
Re: Сделать множественный выбор
« Ответ #7 : 30 Сентябрь 2009, 13:42:54 »
ой, бывает! наоборот написано было, вот и не срабатывало. Спасибо

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
Re: Сделать множественный выбор
« Ответ #8 : 30 Сентябрь 2009, 14:46:21 »
теперь возникла следующая проблема:
есть кнопка на форме, по нажатию на которую открывается список адр.книг, при выборе одной из них открывается перечень ФИО
код кнопки:
view := "AlternateName";
title := "Справочник" ;
prompt := "Выберите ФИО ";
mServer:=@Subset(@DbName;1);

mSerDB:=@Prompt( [OkCancelList] ;"Cписк справочников";"Укажите справочник";"";"1":"2":"3");
@If( mSerDB="1";mDbName:="names.nsf";mSerDB="2";mDbName:="names_ru.nsf"; mSerDB="3";mDbName:="names_uds.nsf";@Failure(""));

mField1:="Username";
mField2:="ControlUsername";
@If(@ServerName = @UserName;@Failure("необходимо подключение к серверу");@Success);
mAltUser := @PickList ([Custom];mServer:mDbName ; view; title; prompt; 1 );
REM{"mAltUser := @PickList ([Custom]; mServer:mDbName ; view; title; prompt; 1 )"};
REM{"mUser:= @DbLookup ("":"NoCache"; mServer:mDbName; view; mAltUser; 6)"};
mUser:= @DbLookup ("":"NoCache"; mServer:mDbName; view; mAltUser; 6);

@SetField(mField1;mAltUser);
@SetField(mField2;@Name([Canonicalize];mUser));
@Command([ViewRefreshFields] )
Но при выборе "3", т.е. новой адр.книги выдает ошибку "Server Error: File does not exist"
От чего может быть эта ошибка?
« Последнее редактирование: 30 Сентябрь 2009, 15:00:31 от K85 »

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
Re: Сделать множественный выбор
« Ответ #9 : 30 Сентябрь 2009, 15:02:28 »
может проблема в том, что база находится на сервере1, а адр.книга3 на сервере2, причем две другие адр. книги находящиеся в перечне находятся на одном сервере с базой.
Если проблема в этом, то как можно указать при выборе адр.книги3, что она с другого сервера?

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
Re: Сделать множественный выбор
« Ответ #10 : 30 Сентябрь 2009, 15:05:49 »
да, проблема именно в расположении базы. А как ее можно указать вместе с сервером?