среда, 20 октября 2010 г.

Результат SQL запроса и Sharepoint

Не знаю почему, но мне всегда казалось, что в Sharepoint service, ныне Foundation, существовала веб-часть для отображения выборки из базы данных. Какого же было мое удивление, когда оной я не обнаружил! Казалось бы, что может быть проще, вложить в стандартный функционал Sharepoint веб-часть для вывода результата SQL запроса к Microsoft'овскому же SQL Server, ан нет... Microsoft очередной раз проявил то ли нерасторопность, то ли пофигизм, то ли эгоизм. Не знаю, как у кого, а лично у меня это вызвало недоумение.
Но, раз уж я последнее время активно осваиваю C# и написание на нем веб-частей, создание веб-части для отображения результата запроса показалось простой задачей. И началось...
Во-первых, отображать просто результат запроса - это малофункционально. Как правило, необходимо запросу передать ряд параметров, самых разных. Как это сделать?
Во-вторых, если на входе будут параметры, то как описать какие, где хранить эту информацию и т.п.
В итоге, к веб-части сформулировались следующие требования:

  • возможность выбора или ввода параметров переменного количества;
  • возможность для параметров типа выпадающий список указывать запрос для заполнения значений;
  • отображать результат основного запроса в виде таблицы;
  • шапка таблицы должна содержать наименования полей.
Первое решение, казалось бы, очевидное, хранить все параметры настройки веб-части в параметрах самой веб-части оказалось тупиковым. Сделать так можно, но, как говорится, "овчинка выделки не стоит". Трудов будет положено много, а гибкости мало. Совершенно неожиданно (хотя, скорее это закономерно), в диалоге с коллегой у меня родилась мысль вынести все параметры веб-части за ее пределы, а именно в XML файл. В самой веб-части указывать путь только к файлу параметров и CSS файлу.

В результате, весь код веб-части свелся к созданию трех функций: разобрать параметры, заполнить списки значений параметров, заполнить таблицу результата.
Особое внимание пришлось уделить обновлению значений параметров и таблицы результата в процессе изменения значений самих параметров. Ведь изменяя, скажем, значение первого параметра, велика вероятность того, что второй параметр должен иметь уже другой список доступных значений. Передача значения первого параметра второму осуществляется с помощью оператора {n}, где n - номер параметра по порядку.
В итоге, веб-часть уже сейчас применена в двух случаях:
1. Отображение сводной таблицы объектов проектирования, которая востребована при подготовке тендерной документации.



2. Отбражение сводной таблицы посещаемости сотрудника за выбранный период.

А чтобы совсем было удобно работать, прикрутил возможность экспорта результата выборки в Excel.
Преимущества веб-части:
1. Бесплатно.
2. Полная custom'изация.
Недостатки веб-части:
1. Пока нет возможности связать веб-часть с другими веб-частями, т.е. она не может являться как источником, так и приемником для других веб-частей.
Установка веб-части AlxdSQLWebPart осуществляется с помощью bat'ника setup.bat с ключом -i. Удаление - ключ -u.
В архиве есть примеры XML и CSS файлов. Разумеется, выборки, которые в XML файле указаны не будут возвращать корректного результата, т.к. ориентированы на базы данных ЗАО "Тюменьнефтегазпроект". Однако приложенные XML файлы являются отличным примером настройки веб-части.
Если при использовании веб-части возникнут проблемы, пишите...
18.01.2011 Обновил zip файл. Исправил досадные ошибки и добавил возможность создания DateBox. Он как TextBox, только не поддерживает [me]. Позже приделаю DatePicker.

4 комментария:

  1. А будет ли в перспективе обработка передачи и приема информации от других форм ?
    Очень помогло бы) На данный момент разрабатываю систему по поиску тел. номеров, е-мейлов и прочей информации из БД сиквела, попробую пока что на вашей веб-части (за нее отдельное спасибо)

    ОтветитьУдалить
  2. В принципе такая мысль была, т.е. сделать так, чтобы можно было выбрать одну из записей и передать ее в любую другую веб-часть, но пока банально не хватает времени на ее развитие. :(

    ОтветитьУдалить
  3. Очень надеюсь что ваша работа получит дальнейшее развитие. Перешерстил инет на наличие толковых готовых решений по созданию на основе сиквельной БД справочника сотрудников под шарик - есть много и интересных, но они все платные, даже самые пошлые из них. Чисто технически, хотелось бы возможность работать с выборками как с сылками на какой нибудь лист, или форму.. дабы не вываливать ненужную многим инфу в одну табличку, если это реально - с нетерпением жду реализации этой функции :)

    ОтветитьУдалить
  4. Да, тема хорошая.
    Только не понятно до конца, что же все таки нужно сделать.
    Подсуну завтра программисту.

    ОтветитьУдалить