[英]Crystal Reports (C#) : Informations not displaying correctly
我將在3個部分中將這篇文章分開,以盡可能清楚。 第一個是你需要知道的信息。 第二個將是我到目前為止嘗試的解決方案。 第三部分將是問題。 我還必須確切地說這是我第一次使用CrystalReports。
我目前正在使用C#使用Visual Studio 2010,而我正在使用SAP Crystal報表。 我正在使用MySQL數據庫顯示數據。
現在,這是我用來顯示報告的表格:
Table : orders
Fields : id(primaryKey), date(DATE), quantity(INT), fksizes(INT), fkclients(INT)
Table : sizes
Fields : id(primaryKey), name(VARCHAR(30)), price(FLOAT)
Relationship between these 2 tables : orders.fksizes with sizes.id
基本上,我將一系列日期作為參數傳遞給Crystal Reports,以僅在這些日期之間顯示信息。 然后,我創建了兩個參數: StartDate
和EndDate
都是Date
類型。
這是我用來顯示我想要的原始查詢而沒有日期范圍條件:
SELECT sizes.name, SUM(orders.quantity) AS totalQty,
(SUM(sizes.price) * orders.quantity) AS totalPrice,
orders.date
FROM orders
INNER JOIN sizes ON orders.fksizes = sizes.id
GROUP BY sizes.name, orders.date
此查詢可正常運行,並顯示每個尺寸名稱的總銷售數量和總價格。 在報告的頁腳中,我使用的是Summary字段,其中我得到了所有totalQty
總和,命名為sumTotalQty
。 我為totalPrice
命名為sumTotalPrice
另一個字段用於相同的目的。
我有2行數據測試,它們是:
Size name Quantity sold Total Price
------------------------------------------------------------------------------
Big 2 $6.00
XBig 7 $28.00
字段sumTotalQty
顯示9
, sumTotalPrice
顯示$34.00
,這是精確的結果。 我必須確切地說,第一行2013-10-29
是orders.date
價值,第二行是2013-10-30
。
現在,我想選擇一個我希望顯示結果的日期范圍。 作為一個例子,我選擇從2013-10-30
到今天,我應該只得到第二行, sumTotalQty
顯示7
, sumTotalPrice
顯示$28.00
。 我得到了正確顯示的單行,但sumTotalQty
顯示9
和sumTotalPrice
顯示$34.00
,這些在日期范圍之后是不正確的。
然后我嘗試在我的sql查詢中添加一個WHERE子句來指定這樣的日期范圍(在數據庫 - >數據庫專家...中):
SELECT sizes.name, SUM(orders.quantity) AS totalQty,
(SUM(sizes.price) * orders.quantity) AS totalPrice, orders.date
FROM orders
INNER JOIN sizes ON orders.fksizes = sizes.id
WHERE orders.date BETWEEN '{?StartDate}' AND '{?EndDate}'
GROUP BY sizes.name, orders.date
我沒有顯示結果。 所以,我認為{?StartDate}
和{?EndDate}
沒有設置,但我真的不確定。 WHERE orders.date BETWEEN @StartDate AND @EndDate
。
{?StartDate}
和{?EndDate}
? 編輯經過多次搜索,我腦子里還有另外兩個問題:
是否可以在報表中添加DateTimePicker
,以便用戶可以輕松輸入開始日期和結束日期? 之后報告將自動刷新。
有沒有辦法創建或使用Crystal Reports事件( OnLoad
, AfterLoad
,...)?
謝謝你的幫助。
問題1:您使用BETWEEN (? AND ?)
或BETWEEN (@StartDate AND @EndDate)
問題2:您必須對數據進行分組,然后在報告中使用總計。
編輯:在發現問題與參數聲明有關后,我建議看一下以下的一些帖子:
http://www.dotnetperls.com/sqlparameter
做一些更多的研究,你會在網上找到很多信息。 我建議將一些輸入框(TextBox,DateTimePicker等)添加到您的頁面,用戶可以在其中輸入參數值,然后以編程方式將它們傳遞給報表。 這樣您就可以將參數傳遞給SQL語句並將正確的數據傳遞給報表。 您也不需要報告中的參數。 就CR事件而言,有一個公開的Init事件
http://msdn.microsoft.com/en-us/library/aa691447(v=vs.71).aspx
然后有一些查看器事件可能有用
http://msdn.microsoft.com/en-us/library/ms227097(v=vs.80).aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.