Ежедневное расписание в CrystalReports - PullRequest
3 голосов
/ 28 января 2012

Я пытаюсь создать ежедневное расписание в Crystal Reports, чтобы показывать встречи с врачами в клинике. Вниз будет время дня, начиная с 7 утра до 5 вечера с шагом в полчаса. Через вершину было бы имя доктора. В каждом столбце назначение врача будет правильно выровнено со временем. Как я могу это сделать?

Ответы [ 2 ]

6 голосов
/ 01 февраля 2012

Вы должны дать больше информации о вашем контексте;

Решение

в любом случае выполните следующие действия:

  1. Напишите запрос, который возвращает Имя доктора , День и время , Назначение
  2. Отфильтровать запрос по интересующей дате
  3. Создайте cross-tab, поместив Имя доктора в столбцы, День и Время в строках, Назначение в поле
  4. Сводка Назначение на МАКС (или МИН, другой отчет о суммировании числа, не действительного значения)
  5. Изменить стиль для исключения итогов для строк и столбцов (я полагаю, вам не нужно)
  6. Изменить формат для дня и времени (щелкните правой кнопкой мыши по полю), чтобы показывать только часы (и минуты)
  7. Изменить параметры для дня и времени (в Эксперт кросс-таблицы) для отображения строки каждую минуту (по умолчанию «каждый день» будет отображаться только 1 строка ..)
  8. Приятного просмотра

Будьте осторожны

  • В кросс-таблице допускается только 1 встреча в ряду
  • Если во времени, приходящем на запрос, есть промежуток времени, то в кросс-таблице будет промежуток (см. Строку 16.00); запрос должен быть написан так, чтобы сообщать о пустых встречах.

Пример отчета

Я создал образец отчета.

enter image description here

Пример запроса

SELECT  'Doctor 1' as Doctor,  CAST('2012-02-01 07:00:00' AS DATETIME) as DateTime , 'mr. Red' as Appointment
union
SELECT 'Doctor 1' , CAST('2012-02-01 07:30:00' AS DATETIME)  , 'mr. Pink' 
union
SELECT 'Doctor 1' , CAST('2012-02-01 08:00:00' AS DATETIME)  , 'mr. White' 
union
SELECT 'Doctor 1' , CAST('2012-02-01 08:30:00' AS DATETIME)  , 'mr. Yellow' 
union
SELECT 'Doctor 1' , CAST('2012-02-01 09:00:00' AS DATETIME)  , 'mr. Green' 
union
SELECT 'Doctor 1' , CAST('2012-02-01 09:30:00' AS DATETIME)  , 'mr. Gray' 
union
SELECT 'Doctor 1' , CAST('2012-02-01 16:00:00' AS DATETIME)  , 'mr. Purple'
union
SELECT 'Doctor 2' , CAST('2012-02-01 07:30:00' AS DATETIME)  , 'mr. Red' 
union
SELECT 'Doctor 2' , CAST('2012-02-01 08:00:00' AS DATETIME)  , 'mr. Orange' 
union
SELECT 'Doctor 3' , CAST('2012-02-01 09:30:00' AS DATETIME)  , 'mr. Blue' 
0 голосов
/ 04 февраля 2012

# Предложение Эмануэле работает, но с множеством ограничений: только часы и полчаса в рамках фиксированного расписания, определенного на уровне отчета, могут быть управляемыми!

Мое предложение будет немного сложнее:

  • Добавить таблицу «стандартное расписание» в базу данных, с записями, такими как предложенные #Emanuele: с 7:00 до 18:00 с половиной часов.
  • Управление таблицей «открытого расписания», гдеВстречи могут быть предоставлены в любое время в течение дня: полные часы, полчаса, но также и любое конкретное время в пределах, до или после стандартного расписания.
  • Создайте запрос расписания, объединив оба «стандартный» и «стандартный».расписания open с оператором UNION

Используя этот метод, можно создать отчет, который будет включать

  • стандартное / пустое расписание в качестве отчета по умолчанию
  • все встречи, сделанные в рамках этого графика, и это, даже если они не соблюдают правило шага 30 '.
  • несколько встреч для one doctor
  • все встречи проводятся вне графика , если они существуют .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...