Изменить автоматически Location и Connection

  • Автор темы oleg7
  • Дата начала
Статус
Закрыто для дальнейших ответов.
O

oleg7

Гость
#1
Мне необходимо отослать письмо группе пользователей, в этом письме должна быть кнопка, при нажатии на которую у пользователя должен изменитьсяв Location: Home/mail server и Domen, т.е. главный почтовый сервер и домен. А также в Connection создать новое подключение к серверу
нашел на форуме, чуть добавил:
Код:
Sub Click(Source As Button)
' System variables -> DO NOT CHANGE!!!!
Const VIEW_LOCATION_NAME = "($Locations)"
Const VIEW_CONNECTION_NAME = "($Connections)"

'Application variables -> EDIT THESE ONES!!!!
Const OLD_DOMAIN_NAME = "1"	 ' This is the value of your old domain
Const NEW_DOMAIN_NAME = "2"	' This is the value of your new domai	
Dim session As New NotesSession
Dim dbNab As NotesDatabase
Dim view As NotesView
Dim note As NotesDocument
Dim sNamesLine As String
Dim nPos As Integer
Dim sDomainValue As String
Dim bNeedsUpdate As Integer
Dim bLocationModified As Integer

On Error Resume Next

' first, get the local NAB
sNamesLine = session.GetEnvironmentValue("names",True)

nPos = Instr(sNamesLine, ",")
If nPos > 0 Then 
sNamesLine = Left$(sNamesLine, nPos-1)
Else
sNamesLine = "names.nsf"
End If

Set dbNab = New NotesDatabase( "",sNamesLine )

If Not(dbNab.isOpen) Then
Messagebox("Не удалось найти Вашу Адресную книгу.")
Exit Sub
End If

' update all location documents
Set view = dbNab.GetView(VIEW_LOCATION_NAME)
If (view Is Nothing) Then
Messagebox("Ваша Адресная книга отсутствует.")
Exit Sub
End If

Set note = view.GetFirstDocument

While Not(note Is Nothing)
sDomainValue = note.Domain(0)
If Lcase(sDomainValue) = Lcase(OLD_DOMAIN_NAME) Then
note.Domain = NEW_DOMAIN_NAME
note.MailServer="Новый сервер"
Call note.save(True,False)
bLocationModified = True			  
End If
Set note = view.GetNextDocument(note)
Wend

If (bLocationModified) Then Messagebox("Вы должны переоткрыть Notes для того, чтобы изменения вступили в силу.")

' update all connection documents
Set view = dbNab.GetView(VIEW_CONNECTION_NAME)
If (view Is Nothing) Then
Messagebox("Ваша Адресная книга отсутствует.")
Exit Sub
End If

Set note = view.GetFirstDocument

While Not(note Is Nothing)
bNeedsUpdate = False		 
sDomainValue = note.SourceDomain(0)
If Lcase(sDomainValue) = Lcase(OLD_DOMAIN_NAME) Then
note.SourceDomain = NEW_DOMAIN_NAME
note.MailServer="Новый сервер"
bNeedsUpdate = True

End If
sDomainValue = note.DestinationDomain(0)
If Lcase(sDomainValue) = Lcase(OLD_DOMAIN_NAME) Then
note.SourceDomain = NEW_DOMAIN_NAME
note.MailServer="Новый сервер"
bNeedsUpdate = True
End If
If (bNeedsUpdate) Then Call note.save(True, False)
Set note = view.GetNextDocument(note)
Wend
End Sub
Location заполняется верно, а вот как создать новый Connection не могу понять. Помогите пожалуйста
 
O

oleg7

Гость
#3
спасибо

Добавлено:
Код:
			Dim ws As NotesUIWorkspace
Set doc = db.CreateDocument
note.form = "Connection"
note.Destination="сервер"
note.OptionalNetworkAddress="адрес"
Call note.Save( True, True )
не создается. Скажите, что делаю не так?
 

hosm

* so what *
18.05.2009
2 442
9
#4
doc, db, note. вы определитесь, что вам надо создавать, сохранять и изменять...
И ws - зачем надо
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#5
Type = "Connection"
Посмотри значения полей в существующем документе и сделай такие же.
 
O

oleg7

Гость
#6
Делаю так:
Код:
		Set note = db.CreateDocument
note.form = "Connection"
note.DisplayName="название"
note.Destination="сервер"
note.OptionalNetworkAddress="адрес"
Call note.Save( True, True )
но у меня вместо добавления нового документа, просто изменяется существующий. Что не так?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#7
Такого не может быть.

Добавлено: Формула отбора в представлении - Type = "Connection".
У тебя в коде нигде не проставляется. Поэтому созданные документы не видно.
 

TIA

:-)
Lotus team
15.05.2009
790
3
#8
oleg7
Вот код. А ты даже не посмотрел на значения полей в существующем Connection. В частности, поле Form другое.

Код:
Sub AddOneConnection(namedb As NotesDatabase, Server As String, DNS As String )
On Error Goto ErrHnd

Static view As NotesView
Dim doc As NotesDocument
Dim ServerNN As NotesName

If view Is Nothing Then 
Set view=namedb.GetView("Connections")	
Else
If namedb.ReplicaID <> view.Parent.ReplicaID Then Set view=namedb.GetView("Connections")
End If	
If view Is Nothing Then Error 1001, "Не найден вид 'Connections' в адресной книге '" & namedb.FilePath & "'"

Set ServerNN = New NotesName( Server )

'	 *******проверяем на наличие и создаем подключение
Set doc=view.GetDocumentByKey( ServerNN.Abbreviated )
If Not doc Is Nothing Then
'Подключение к серверу обнаружено. Производится модификация...
Else
'Подключение к серверу не обнаружено. Создание нового....
Set doc = namedb.CreateDocument
doc.Form="local"
End If

doc.ConnectionType="0"
doc.OptionalNetworkAddress=DNS
doc.LanportName="TCPIP"
doc.Destination = ServerNN.Canonical
doc.Source="*"
Call doc.ComputeWithForm(True,False)
call doc.Save(False, False) 
Exit Sub
ErrHnd:	
On Error Goto 0
Error Err, Error$ & Chr(10) & Getthreadinfo(1) & " (line " & Erl & ")"
End Sub
 
O

oleg7

Гость
#9
TIA
спасибо
в моем случае надо было просто вместо db использовать dbNab
Вот только теперь не могу понять как сделать, чтобы искало не локальную просто names, а ту базу, которая указана в параметрах настройки?
 

TIA

:-)
Lotus team
15.05.2009
790
3
#10
А чем то, что указано в notes.ini не устраивает. И что за настройка с параметрами?
 
O

oleg7

Гость
#11
И что за настройка с параметрами?
User Preferences , на русском клиенте Параметры настройки

Добавлено: извеняюсь, наверное вопрос глупый, но не могу понять, как мне из notes.ini взять параметр NAMES?
 

TIA

:-)
Lotus team
15.05.2009
790
3
#12
Добавлено: извеняюсь, наверное вопрос глупый, но не могу понять, как мне из notes.ini взять параметр NAMES?
Так уже берёшь же. Или это не ты писал?
Код:
' first, get the local NAB
sNamesLine = session.GetEnvironmentValue("names",True)
Наверняка, то что в User Preferences и сохраняется в notes.ini. Попробуй :)
 
O

oleg7

Гость
#13
Код:
' first, get the local NAB
sNamesLine = session.GetEnvironmentValue("names",True)
если локальная база названа names.nsf - ищет и делает изменения, а если, например, new_names.nsf - пишет, что не найдена
 
K

Klido

Гость
#14
oleg7
опа... а зачем что-то искать/менять в левых АК???

такое впечатление, что топикастера запутали :) начал он нормально с темы поменять настройки подключения клиента, а теперь ищет эти настройки во всех локальных адресных книгах :)
 
O

oleg7

Гость
#15
просто у некоторых локальные АК называются ФИО_names.nsf

Добавлено: в notes.ini в поле NAMES указывается название локальной базы. А как его оттуда именно в таком виде ФИО_names взять?
 
K

Klido

Гость
#16
oleg7
кто-то кого-то не понимает :)
если Вы научились запущать клиента с иной от names.nsf книгой по-умолчанию - это прекрасно, но тогда она-то Вам и нужна!
в общем не важно - для изменения настроек подключения надо всё сделать в той АК, которая в NAMES указана.....
поэтому вид, в котором вы оттуда взять её хотите - не имеет никакого значения
 

TIA

:-)
Lotus team
15.05.2009
790
3
#17
Тогда перебирайте notesSession.AddressBooks пока не найдёте NotesDatabase.IsPrivateAddressBook = True

Добавлено:
в notes.ini в поле NAMES указывается название локальной базы. А как его оттуда именно в таком виде ФИО_names взять?
Так:
sNamesLine = session.GetEnvironmentValue("ФИО_names",True)
 
O

oleg7

Гость
#18
<div align='center'></div>:)
наверное, конец дня... не доходит.... у меня не хочет и все тут искать АК... постоянно не найдена
sNamesLine = session.GetEnvironmentValue("ФИО_names",True)
я ж не знаю какую базу писать... мне надо не для одного определенного пользователя
 
K

Klido

Гость
#19
oleg7
откуда Вы взяли ФИО_????? вообще забейте на инишник и тупо берите names.nsf из /notesdata клиента

в инишнике нет никаких переменных ФИО_names, есть только NAMES - перечень локальных АК, в простейшем случае это ровно одна база names.nsf, в сложном - names.nsf+остальные, возможно и Ваша ФИО_, но никакие иные книги, кроме реально локальной АК Вам не нужны!

или же подробнее раскажите как у Вас настроены клиенты, откуда у них взялись эти ФИО_... и зачем они нужны.
 
O

oleg7

Гость
#20
или же подробнее раскажите как у Вас настроены клиенты, откуда у них взялись эти ФИО_... и зачем они нужны.
это для меня останется загадкой, но еще несколько лет тому им зачем-то сделали локальные АК именно с этой приставкой ФИО...
 
Статус
Закрыто для дальнейших ответов.