2012-06-14 3 views
0

У меня есть приложение C# 2010, которое использует Crystal Reports для VS 2010. Цель моего отчета - показать, где человек должен быть каждый день одной или нескольких недель. Формат таков:Crystal Reports Multiple Tables Issue

enter image description here

Обратите внимание, что отображается в парах, а не таблицы с общим заголовком.

Он использует DataSet, который содержит две таблицы данных: одну для дат заголовка и одну для местоположения.

Проблема заключается в том, что если у меня есть n элементов в каждом DataTable, в отчете отображаются n^2 пары заголовка/местоположения вместо n. Шаблон похож на декартово произведение двух таблиц.

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

Объект DataSet Я использую выглядит следующим образом:

enter image description here

+0

Опубликовать снимок экрана относительно соответствующих таблиц и запроса, который вы используете. – craig

+0

Между ними нет никакой связи. Я думаю, что это может быть проблемой, но я не смог ее исправить ... Не уверен, что вы подразумеваете под запросом.Я отредактировал исходный пост и добавил, как выглядит DataSet. –

ответ

1

Зачем вам нужен стол для заголовков? Что вы пытаетесь достичь?

Почему бы не добавить дату (StartOfWeek) к WeekTable, которая представляет собой начальную дату недели? Если у вас есть эта дата, каждый заголовок столбца будет полем формулы, которое вычисляет день на основе поля StartOfWeek. Это намного проще, и это устраняет декартово произведение, которое вы испытываете.

** редактировать **

Там будет 7 формул заголовка (по одному на каждый день): значения

//{@Sunday} 
DateAdd("d", 0, {WeekTable.StartOfWeek}) 

... 

//{@Saturday} 
DateAdd("d", 7, {WeekTable.StartOfWeek}) 

Добавить каждое поле в секции и формат заголовка страницы по желанию (они являются Дата).

+0

Потому что мне нужен заголовок, чтобы быть чем-то вроде «Понедельник 21 июня». Есть ли способ сделать это отображение в этой форме, используя предложенный вами способ? –

+0

Работал как шарм! Большое спасибо! –

0

Вам может понадобиться, чтобы объяснить немного дальше, что ваша «дата заголовка» является. Но из того, что вы говорите, они не связаны с основными данными, и в этом случае я, вероятно, буду использовать подзаголовок в заголовке.

1

Вам нужно связать таблицы, чтобы получить только n строк.

В идеале:

  • Добавить уникальный ID столбец в таблице Headers. Сделайте его одним первичным ключом и автоматически увеличивающимся идентификатором.
  • Добавить стол HeaderID в таблицу WeekTable и сделать ее внешним ключом в таблице Headers на столбце ID.

Таблица Headers теперь должна содержать только одну строку для каждой недели, так что если у вас есть четыре сотрудника, они все будут иметь один и тот же HeaderID для данной недели.

+0

Несмотря на то, что он, вероятно, должен был сработать, это не так. Пробовал, как вы это сказали, даже сделал ряд изменений, но все еще не работал. Спасибо за помощь. –