Работа с Ad

отредактировано 15:24 Раздел: FastReport .NET
всем привет,
мне очень понравилась ваша программа подумываю о её серьезном применении, но пока что иследую её возможности и так сказать читай отлично написанный гайд. как не странно но стандартный репорт вьювер я не осилил )) толи он только с sql 2005 работает, толи еще какая то неведомая фигня
но вопрос не об этом

меня инетересует возможность работы с AD из Fast Reports
чисто гипотетически если прикинуть, то с AD можно работать черех ADODB
создаю новое подключение типа OLE DB, порписываю в строке подключения:
Provider="ADsDSOObject";Data Source="Active Directory Provider";
но такой способ не работает
очень бы хотелось хоть какой то вариант работы с АД... кто то может что нибудь посоветовать?

Комментарии

  • отредактировано 15:24
    Здравствуйте,

    К сожалению, я не компетентен в Active Directory... Возможно, для этого придется написать свой тип подключения, как описано в programmer's manual.
  • отредактировано 15:24
    AlexTZ написал: »
    Здравствуйте,

    К сожалению, я не компетентен в Active Directory... Возможно, для этого придется написать свой тип подключения, как описано в programmer's manual.
    возможно ли в будующем реализовать какой то конектор к АД? ведь АД по сути это БД которая может нести в себе массу полезной инфорации, было бы очень круто! :)

    Еще вопрос не по теме, если я куплю FastReport на 1 рабочее место, и буду использовать его в своих программах, на рабочее место пользователя тоже нужна лицензия или ему уже ни чего не надо?
    уж больно понравился ваш фаст репорт ) сижу гайд читаю, в демоверсии пробую )
  • отредактировано 15:24
    Нет, реализация AD в отчете не планируется. Если это необходимо, можете получать данные в своей программе и передавать их в отчет.

    По лицензии - нужна лицензия на каждого разработчика. Пользовательские лицензии не нужны.
  • отредактировано September 2009
    всё практически уже реализовано в вашей программа, нужно только подрихтовать!

    суть такая, создаем

    подключение OLE DB
    пишешь в строке подключения
    Provider=ADSDSOObject;User Id=<login>;Password=<пароль>
    жамкаем TEST, комп сообщает, что тест прошел успешно и доступ к АД есть, жмём далее и выскакивает след. ошибка:
    одробная информация об использовании оперативной 
    (JIT) отладки вместо данного диалогового 
    окна содержится в конце этого сообщения.
    [code]
    ************** Текст исключения **************
    System.ArgumentException: Затребованная коллекция (Tables) не определена.
       в System.Data.ProviderBase.DbMetaDataFactory.FindMetaDataCollectionRow(String collectionName)
       в System.Data.ProviderBase.DbMetaDataFactory.GetSchema(DbConnection connection, String collectionName, String[] restrictions)
       в System.Data.ProviderBase.DbConnectionInternal.GetSchema(DbConnectionFactory factory, DbConnectionPoolGroup poolGroup, DbConnection outerConnection, String collectionName, String[] restrictions)
       в System.Data.OleDb.OleDbConnection.GetSchema(String collectionName, String[] restrictionValues)
       в FastReport.Data.DataConnectionBase.51T7OmSDF(String , List`1 )
       в FastReport.Data.DataConnectionBase.GetTableNames()
       в FastReport.Data.DataConnectionBase.CreateAllTables()
       в AZu7lfw7tyFATvXH7Ie.BKUTt1w84mvluAEEuEQ.YZUHy5UZc()
       в AZu7lfw7tyFATvXH7Ie.BKUTt1w84mvluAEEuEQ.set_VisiblePanelIndex(Int32 )
       в BW4PTBbidQxDgQZIYHb.5tVBq9bf2aFc2cb1pwS.nAtTOhlI7(Object , EventArgs )
       в System.Windows.Forms.Control.OnClick(EventArgs e)
       в System.Windows.Forms.Button.OnClick(EventArgs e)
       в System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       в System.Windows.Forms.Control.WndProc(Message& m)
       в System.Windows.Forms.ButtonBase.WndProc(Message& m)
       в System.Windows.Forms.Button.WndProc(Message& m)
       в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    
    
    ************** Загруженные сборки **************
    
    нажимаем пропустить и идём в SQL запрос
    формируем запрос в строке "SELECT Name FROM 'LDAP://dc=<домен>,dc=<домен>' WHERE objectCategory='user'"
    нажимаем далее, выходит окно "определите параметры" оно пустое :) (я пока не спец и только осваиваю Фаст Репорт, наверное так и должно быть ;-))
    пропускаем его и идем в окно "Определение полей данных" видим поле Name, тип данных у поля Object (то есть Fast Report видит поля, которые я задал в запросе (тут мне не ясно, то ли он обрабатывает строку SQL запроса, то ли, выполнив запрос берет поля непосредственно из таблицы
    меняет типа поля на String, так как name это текстовое поле. и жмём "Готово" выскакивает ошибка указанная выше,
    нажимаем продолжить и видим наш запрос в окне "Данные"

    перетаскиваем поле на Бенд Данные и запускаем отчет CTRL+P

    результат на лицо мы видим таблицу пользователей в домене! Победа? нет, работать может и работает но через одно отверстие ))
    тестим возможности: внутренняя сортировка через IComparer работает нормально, фильтр встроенный в банд работает нормально
    передача поля как параметра в функцию работает

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

    ЗЫ исправить баг делов на 5 минут и Фаст Репорт будет еще круче :)
  • отредактировано 15:24
    Ошибку могу исправить.
  • отредактировано 15:24
    складывает такое ощущение, что я единственный кому это вообще нужно :)

    в общем ) если баг исправят это будет чудесно, пока не исправят посижу на бетаверсии
    (баг исправят в след. версии или будет патч?)
  • отредактировано September 2009
    немного покурив всякой травы и мануалов, потеревшись на технете хочу кое что добавить :) я думаю, что рано или поздно это информация может кому то пригодиться и облегчить ему жизнь )

    1. При подключении AD к Fast-Report не используйте конструктор SQL запросов, он не будет работать, да и не нужен особо
    2. Выше я приводил пример как сделать запрос к AD с помощью SQL команды SELECT (он не удобный, есть лучше)
    3. используйте команды LDAP, более подробную информацию о них можно найти на сайте Technet и MDSN
    Пример: <LDAP://DC=microsoft,DC=ru>;(&(objectCategory=Person)(objectClass=User)(!(userAccountControl:1.2.840.113556.1.4.803:=2)));distinguishedName,cn;subtree
    Данный запрос найдет в домене microsoft.ru все пользователей (отключенные будут отсеены) и вернет таблицу с полями distinguishedName,cn, поиск будет осуществляться по всему дереву
    4. Данный доступ AD осуществляется только в режиме Read-Only (думаю для создания отчетов больше и не надо) :)

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

    ЗЫ не удаляйте тему тока )) а то я сам бывает забываю всё )
  • отредактировано 15:24
    ошибку вроде бы исправил в текущей версии. Или нет? :)
  • отредактировано 15:24
    я не слежу за обновлениями так пристально )) сейчас заценю!
  • отредактировано September 2009
    всё окей! спасибо за оперативность )

    есть какие то скидки для студентов, Basic меня не прёт, а WinForm чето стоит для обычных смертных нереально дорого?
  • отредактировано 15:24
    Есть скидки для пользователей версии FastReport VCL; других скидок нет.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.