powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Транзакционность в IADs
4 сообщений из 4, страница 1 из 1
Транзакционность в IADs
    #38728705
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть задача:
включить несколько пользователей в несколько разных групп. В случае какой-либо ошибки всё откатить .

Смотрю пример в msdn
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Dim x as IADs
On Error GoTo Cleanup

Set x = GetObject("LDAP://CN=Administrator,CN=Users,DC=Fabrikam,DC=com")
'
' Update values in the cache.
'
x.Put "sn", "Smith"
x.Put "givenName", "Jeff"
x.Put "street", "1 Tanka Place"
x.Put "l", "Sammamish"
x.Put "st", "Washington"
'
' Commit changes to the directory.
x.SetInfo

Cleanup:
   If (Err.Number<>0) Then
      MsgBox("An error has occurred. " & Err.Number)
   End If
   Set x = Nothing

как следует из примера, метод SetInfo коммитит данные в конкретной папке.
Для нескольких папок как извратиться?
...
Рейтинг: 0 / 0
Транзакционность в IADs
    #38728710
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, rollback там есть?
Или оно само откатится при убиении объекта, если не было SetInfo?
...
Рейтинг: 0 / 0
Транзакционность в IADs
    #38728780
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
похоже, немного напутал с примером
Пошел отсюда по ссылке на SetInfo, а она привела к совсем другой процедуре - к IADs.setInfo вместо IADsGroup.setInfo.

Но вопрос остается
...
Рейтинг: 0 / 0
Транзакционность в IADs
    #38728932
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поэкспериментировал - нихрена никакой транзакционностит нет
На примере из делфи
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
function AddUserToGroupInternal(UserName, GroupName : string;
                          var err, warn : string
                          ) : boolean;
var
  FullUserName : string;
  Group : IADsGroup;
  User  : IADsUser;
begin

  Group := GetObject('LDAP://' + GroupName) as IADsGroup;

  FullUserName := 'LDAP://cn=' + UserName + ',' + GetDC;
  User  := GetObject(FullUserName) as IADsUser;
  if Group.IsMember(FullUserName) then
  begin
    warn := 'Пользователь ' + UserName + ' [' + FullUserName + '] уже подключён к группе ' + GroupName;
    exit;
  end;
  Group.Add( User.ADsPath );
  //Group.SetInfo; комментируй-не комментируй  - пользователь добавляется
  result := true;
end;
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Транзакционность в IADs
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]