2012-06-14 142 views
0

我有一個使用Crystal Reports for VS 2010的C#2010應用程序。我的報表的目的是顯示一個人每天應該在一個或多個星期的哪一天。格式是這樣的:水晶報表多個表問題

enter image description here

請注意,它顯示成對的,而不是一般的頭一個表。

它使用包含兩個DataTable的DataSet,一個用於標題日期,另一個用於位置。

問題是如果我在每個DataTable中有n個項目,報告將顯示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

因爲我需要的頭像是「6月21日星期一」。有沒有辦法使用您建議的方式在此表單中顯示它? –

+0

工作就像一個魅力!非常感謝! –

0

您可能需要稍微解釋一下什麼進一步的「頭日期」是。但從你說的話他們沒有鏈接到主要數據,在這種情況下,我可能會在頭中使用子報表。

1

您需要鏈接表格才能得到n行。

理想:

  • 添加了獨特ID列到Headers表。使它成爲一個主鍵,並且是一個自動遞增的身份。
  • HeaderID列添加到WeekTable表中,並將其設置爲ID列中的Headers表的外鍵。

Headers表現在應該只包含每週一列,所以如果你有四名員工,他們都將會達到一個給定的一週相同HeaderID

+0

儘管它可能應該起作用,但它沒有。試着按照你的說法,甚至做了一些修改,但仍然沒有奏效。謝謝您的幫助。 –