Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
Уважаемые гуру SQL 2005, помогите, пожалуйста, новичку разобраться в создании отчета с помощью Reporting Services. А точнее в создании календаря для отчета. Есть простенькая база с данными (таблица) в которой за определенную дату и часовые интервалы у каждого сотрудника продается определенное количество товара. Например: Иванов продал 50 штук товара за день, из них 10 штук с 10 до 11 часов дня, 5 штук с 11 до 12 и т.д. Так же есть еще какое-то количество сотрудников, по которым ведется такая же статистика. Это простейший пример, но в нем интересует создание отчета, в котором будет использоваться таблица-календарь. Т.е. интересует как создать форму календаря, с помощью которой можно будет выбрать начальную дату и время и конечную. Интересует форма, например, как в винде при выборе года, месяца и даты, только еще добавить время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2010, 22:02 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
Репортинг сам умеет рисовать такие календари. Добавьте в отчете два параметра указав им тип datetime. Далее, используйте эти параметры чтобы фильтровать дни в самой выборке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2010, 22:08 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
Александр Волок (def1983)Репортинг сам умеет рисовать такие календари. Добавьте в отчете два параметра указав им тип datetime. Далее, используйте эти параметры чтобы фильтровать дни в самой выборке. Александр, огромное спасибо за ответ! Вы меня порадовали на счет того, что репортинг сам такие календари рисует!!! Но мне не очень понятно все таки, как это сделать. Можете немного подробнее написать? Где именно я должен добавить эти параметры? Именно при написании запроса или уже когда формирую таблицы (матрицы) отчета? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2010, 23:13 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
pulver , параметры добавляются в конструкторе отчетов. В частности для Visual Studio: закладка Report->Report Parameters... там добавляете новый параметр, на пример, Name: StartDate Data type: DateTime Promt: введите дату начала периода По вкусу, в Default values\Non queried можно написать "=Today", чтобы дата в календаре автоматом выставлялась на текущую. А вообще, советую нагуглить простой пример с описанием, так будет проще разобраться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2010, 01:20 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
-=FlinT=-, спасибо! Календарь получилось вывести! Но как его привязать к запросу??? Т.е. этот календарь у меня получается сам по себе и заполнение отчета не зависит от дат, которые я в нем выставляю, а зависит от дат, которые я пишу в запросе... Как сделать так, что бы календарь был привязан к датам, которые беруться из таблицы? Например, я делаю так: declare @StartDate DATETIME declare @EndDate DATETIME select * from DB_Persons where DateTime between @StartDate and @EndDate Как это привязать к календарю? Так, чтобы именно при выборе дат из календаря, отчет строился в заданном промежутке? Причем поле DateTime содержит как дату так и время. Нагуглить что-то не получается ничего стоящего :( Модератор: Тема перенесена из форума "Microsoft SQL Server". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2010, 10:02 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
Declare убрать. В параметрах объявить например dt_start, dt_end. В запросе юзать просто как будто объявили уже. Код: plaintext А вообще для начала стоило бы обратиться в гугл с запросом "ReportingServices2005 tutoial"... Больше за вас это делать не буду Там по шагам все расписано. Проводить жизнь в ожидании мессии, который придёт и спасёт мир, всё-равно, что ждать палку в тетрисе. Даже если и появится, то ты к тому времени наберёшь такую гору дерьма, что те будет уже абсолютно пох... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2010, 10:22 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
buven , огромное спасибо! Все получилось! На сайте по ссылке был, только не нашел конкретно того, что меня интересовало... Может не все темы просто перерыл, даже не знаю, но сидел там долго... Поэтому вчера и зарегился на sql.ru... не смог найти нужной инфы... А по поводу моей задачки еще есть один вопросик. Календарь, естественно, выводит только даты. А как сделать так, что бы еще можно было время выбирать? Просто само поле createdate в таблице с данными состоит из даты и времени (время состоит из часов, минут и секунд), а мне нужно чтобы можно было выбирать дату и время (время достаточно выбирать до минуты, т.е. часы и минуты). Я так понимаю для этого нужно использовать дополнительный DataSet? Или все же можно все в одном написать? Буду очень признателен, если кто-нибудь ответит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2010, 11:10 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
pulver Календарь, естественно, выводит только даты. А как сделать так, что бы еще можно было время выбирать? Просто само поле createdate в таблице с данными состоит из даты и времени (время состоит из часов, минут и секунд) Время можно вручную ввести, К примеру, указав default values для startDate = DateAdd("d",-1,Now()) endDate = Now() Далее, можете вручную изменять время, имхо это удобнее если выбирать из списков часы, а потом минуты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2010, 18:30 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
Всем еще раз огромное спасибо за помощь и понятные ответы. У меня появился еще один вопрос, связанный с календарем и временем. У меня есть SQL запрос, содержащий функцию IN, в котором необходимые дынные вытягиваются с заданием временного интервала. Когда я указзываю в запросе даты вручную, запрос делается считанные секунды, но когда я делаю ввод даты через календарь, построение отчета занимает гораздо дольше, причем в разы!!! Если например ставить временой интервал в месяц, то с указанием дат в ручную, запрос делается ну секунд 20, а через календарь я ждал 25 минут!! и так и не дождался построения отчета... В чем может быть проблема, почему так происходит? Вот пример отчета: Код: plaintext 1. 2. 3. 4. 5. Соответственно переменные @startdate и @enddate задаются с помощью календаря. И запрос выполняется очень долго... Если я вместо этих переменных даты укажу прям в запросе, то отчет делается считанные секунды. Помогите, плиз!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 12:06 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
Profiler вам в помощь. Ловите запросы от RS в том и другом случае и сравнивайте. Ну и параметры какого типа ? datetime или date ? И какого типа колонки? Просто если вы указываете даты в запросе вручную типа date и сравниваете c date , это будет работать гораздо быстрее чем когда у вас из календаря (при условии что параметр типа datetime ) приходит datetime и вы сравниваете его с тем же date . Проводить жизнь в ожидании мессии, который придёт и спасёт мир, всё-равно, что ждать палку в тетрисе. Даже если и появится, то ты к тому времени наберёшь такую гору дерьма, что те будет уже абсолютно пох... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 13:03 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
buvenProfiler вам в помощь. Ловите запросы от RS в том и другом случае и сравнивайте. Ну и параметры какого типа ? datetime или date ? И какого типа колонки? Просто если вы указываете даты в запросе вручную типа date и сравниваете c date , это будет работать гораздо быстрее чем когда у вас из календаря (при условии что параметр типа datetime ) приходит datetime и вы сравниваете его с тем же date . Проводить жизнь в ожидании мессии, который придёт и спасёт мир, всё-равно, что ждать палку в тетрисе. Даже если и появится, то ты к тому времени наберёшь такую гору дерьма, что те будет уже абсолютно пох... :) Просто обалдеть какая штука этот Profiler !!! :) Правдо я им никогда не пользовался :( Если это не сложно, как его настроить для отображения запросов от RS? Параметры именно типа datetime !!! И в запросе вручную и в календаре ввожу абсолютно одинаковые значения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 13:39 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
третья ссылка в гугле по запросу "Profiler SQL Server 2005 tutorial"... поиск, вообще, полезная штука... Проводить жизнь в ожидании мессии, который придёт и спасёт мир, всё-равно, что ждать палку в тетрисе. Даже если и появится, то ты к тому времени наберёшь такую гору дерьма, что те будет уже абсолютно пох... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 13:58 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
buven, может я что-то не понимаю и действительно не так ввожу... А параметр все таки типа DBDATETIME. Может быть тут засада? Вот что я ввожу, если строго указываю даты и время: Код: plaintext 1. 2. 3. 4. 5. Код: plaintext 1. 2. 3. 4. 5. Может действительно как-то время нужно конвертить при использовании календаря? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 14:02 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
поле xxx какого типа? Конвертировать datetime в datetime не нужно точно. Проводить жизнь в ожидании мессии, который придёт и спасёт мир, всё-равно, что ждать палку в тетрисе. Даже если и появится, то ты к тому времени наберёшь такую гору дерьма, что те будет уже абсолютно пох... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 14:33 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
И посмотрите уже, наконец, профайлером, что именно в том и в другом случае приходит на сервер. Проводить жизнь в ожидании мессии, который придёт и спасёт мир, всё-равно, что ждать палку в тетрисе. Даже если и появится, то ты к тому времени наберёшь такую гору дерьма, что те будет уже абсолютно пох... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 14:39 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
buvenполе xxx какого типа? Конвертировать datetime в datetime не нужно точно. Проводить жизнь в ожидании мессии, который придёт и спасёт мир, всё-равно, что ждать палку в тетрисе. Даже если и появится, то ты к тому времени наберёшь такую гору дерьма, что те будет уже абсолютно пох... :) Поле xxx типа DateTime. В самой таблице данные этого поля представлены в виде: 11.02.2010 13:04:34 Когда забиваю даты в ручную, соответственно пишу xxx between CONVERT(DATETIME, '2010-02-01 00:00:00', 102) AND CONVERT(DATETIME, '2010-02-28 23:59:59', 102) В данном варианте все работает быстро! А когда пишу так xxx between CONVERT(DATETIME, @StartDate, 102) AND CONVERT(DATETIME, @EndDate, 102) и использую календарь, данные обрабатываются очень медленно!! Я так понимаю мой первый шаг, если использовать календарь, писать нужно так? xxx between @StartDate AND @EndDate ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 15:39 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
buvenИ посмотрите уже, наконец, профайлером, что именно в том и в другом случае приходит на сервер. Проводить жизнь в ожидании мессии, который придёт и спасёт мир, всё-равно, что ждать палку в тетрисе. Даже если и появится, то ты к тому времени наберёшь такую гору дерьма, что те будет уже абсолютно пох... :) Не получается с профайлером ничего... не пойму что именно нужно смотреть... У меня сам RS находится на одном сервере, а в базу данных лезет на другом сервере... На каком сервере нужно смотреть профайлером и что именно смотреть нужно? На сервере с базой данных я увидел, что пришел запрос с моего сервера, но ничего более конкретного... что именно я должен увидеть? :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 15:42 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
pulverbuvenполе xxx какого типа? Конвертировать datetime в datetime не нужно точно. Проводить жизнь в ожидании мессии, который придёт и спасёт мир, всё-равно, что ждать палку в тетрисе. Даже если и появится, то ты к тому времени наберёшь такую гору дерьма, что те будет уже абсолютно пох... :) Поле xxx типа DateTime. В самой таблице данные этого поля представлены в виде: 11.02.2010 13:04:34 Когда забиваю даты в ручную, соответственно пишу xxx between CONVERT(DATETIME, '2010-02-01 00:00:00', 102) AND CONVERT(DATETIME, '2010-02-28 23:59:59', 102) В данном варианте все работает быстро! А когда пишу так xxx between CONVERT(DATETIME, @StartDate, 102) AND CONVERT(DATETIME, @EndDate, 102) и использую календарь, данные обрабатываются очень медленно!! Я так понимаю мой первый шаг, если использовать календарь, писать нужно так? xxx between @StartDate AND @EndDate Сделал в запросе вот так: xxx between @StartDate AND @EndDate И никакого эфекта! Отчет так же долго делается. Вопрос: может быть это из за того, что в календаре данные представляются таком виде 3/1/2010 3:51:34 PM, а в самой таблице, как я уже писал, в таком виде 11.02.2010 13:04:34? Может нужно как то данные в календаре к нужному формату преобразовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 15:58 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
pulver Может нужно как то данные в календаре к нужному формату преобразовать? Этот вопрос лучше задать на форуме по SQL. Там подскажут как оптимизировать. По поводу профайлера - запускать на сервере, с которого берутся данные. Что смотреть - запросы от RS в одном и в другом случае, которые касаются именно вашего кода. В левом нижнем углу вроде при выделении отдельного запроса должна появляться его детализация, где и будет ваш код. Ссылка не помогола что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 16:25 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
buven, ссылка не помогла... там картинки маленькие, не читабельные... Кстати, у меня данные беруться с сервака, на котором SQL 2000, а не 2005... Профайлер нужно запускать на серваке, где RS стоит, просто указывать в нем адрес сервака с данными? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 16:39 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
Можно и так. Проводить жизнь в ожидании мессии, который придёт и спасёт мир, всё-равно, что ждать палку в тетрисе. Даже если и появится, то ты к тому времени наберёшь такую гору дерьма, что те будет уже абсолютно пох... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 16:43 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
buven, так пробовал... но ничего не понял.. там куча инфы валится... что именно я должен увидеть, не понимаю... какие параметры смотреть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 16:47 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
pulverbuven, ссылка не помогла... ну так найдите с читабельными картинками. Я так на словах объяснить ничего не смогу к сожалению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2010, 16:58 |
|
||
|
Календарь в SQL Server 2005 Reporting Services
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.03.2010, 08:46 |
|
||
|
|

start [/forum/topic.php?fid=31&fpage=68&tid=1535421]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
14ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 153ms |

| 0 / 0 |
