0

Crystal Reports for VS 2010 を使用する C# 2010 アプリケーションがあります。私のレポートの目的は、1 週間以上の毎日、人がどこにいるべきかを示すことです。形式は次のとおりです。

ここに画像の説明を入力

一般的なヘッダー付きの表ではなく、ペアで表示されることに注意してください。

ヘッダーの日付用と場所用の 2 つの DataTables を含む DataSet を使用します。

問題は、各 DataTable に n 個のアイテムがある場合、レポートには、n 個ではなく n^2 個のヘッダー/場所のペアが表示されることです。このパターンは、2 つのテーブルのデカルト積に似ています。

レポートのデータベース エキスパートのリンク部分と関係があるのではないかと思いますが、修正できませんでした。現在、リンクは含まれていません。

私が使用する DataSet は次のようになります。

ここに画像の説明を入力

4

3 に答える 3

1

なぜヘッダー用のテーブルが必要なのですか? 何を達成しようとしていますか?

週の開始日を表す WeekTable に日付 (StartOfWeek) を追加してみませんか? その日付がある場合、各列ヘッダーは、StartOfWeek フィールドに基づいて日を計算する数式フィールドになります。とても簡単で、経験しているデカルト積がなくなります。

** 編集 **

7 つのヘッダー式があります (各日に 1 つ):

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

...

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

各フィールドをページ ヘッダー セクションに追加し、必要に応じて書式設定します (これらは日付値です)。

于 2012-07-05T15:58:09.513 に答える
1

n行のみを取得するには、テーブルをリンクする必要があります。

理想的には:

  • IDテーブルに一意の列を追加しHeadersます。それを 1 つの主キーにし、自動インクリメント ID にします。
  • HeaderIDテーブルに列を追加し、その列でテーブルWeekTableへの外部キーにします。HeadersID

Headersテーブルには各週に 1 つの行のみが含まれるようになりました。そのため、従業員が 4 人いる場合、特定の週の従業員は全員同じにHeaderIDなります。

于 2012-07-10T14:39:38.683 に答える
0

「ヘッダーの日付」とは何かをもう少し説明する必要があるかもしれません。しかし、あなたが言っていることから、それらはメインデータにリンクされていません。その場合、おそらくヘッダーでサブレポートを使用します。

于 2012-06-14T11:53:21.433 に答える