2013-07-22 60 views
0

我正在用.NET 4.5,VS 2012和CrystalReports進行編程並使用MySQL(最後一個^^)。由於WHERE MySQL Crystal Reports動態更改數據庫

我有一個名爲像 「rp31_bla_ _bla」 或 「rp31_bla_ _bla」 或...

想象你有一個表,這個3個或更多表:

- 姓名 - 年齡 - 工作 - 年 -

  • 羅伯特 - 45 - 醫生 - 2001
  • 羅伯特 - 45 - 2002年Housemade-
  • 羅伯特 - 45 - 野人 - 2006年
  • 羅伯特 - 45 - 電磁爐 - 2009年
  • 羅伯特 - 45 - (空) - 2013
  • Nadège - 21 - CallGirl - 2001
  • Nadège - 21 - (空) - 2002年
  • Nadège - 21 - CallGirl - 2008
  • Nadège - 21 - 首頁 - 2008

現在我有兩個文本框的WinForm,如果用戶寫道「羅伯特」和「2013」​​我必須使用"rp31_bla_***2013***_bla" WHERE Name = Robert作出報告。 這可能嗎?
我應該創建哪種類型的報告?
如何動態更改查詢?

+0

如果所有的年度數據表都相同,則您需要複製其中一個的結構以使您自己的數據表報告被綁定,並且通過後面的WinForm代碼填充,或者創建一個數據表,該數據表將只包含報告所需的信息,並通過您的WinForm代碼填充。你明白我所說的嗎? – Ally

+0

嗨,夥計,謝謝你的回答! 是的我明白你在說什麼,但是我可以像5000行和10列的5個表格(2009,2010,2011,2012,2013),所以我認爲如果用戶想從所有這些信息中獲取信息表格,那麼在其他表格中複製我需要的東西真的很慢,不是嗎? 如果我們讀到Lan的答案,他提出了一個解決方案,我不知道哪一個更快=/ – Noude

回答

0

您可以使用聯盟的3個表和篩選器按名稱

SELECT * FROM ( SELECT ...,2012從rp31_bla_2012_bla UNION SELECT ...,2013年年度合併爲一年rp31_bla_2013_bla UNION SELECT ...,2014年一年rp31_bla_2014_bla )筆 WHERE t.Year = 2013和t.Name = '羅伯特'

由於數據源不會改變你不需要切換表。 這種方法會比較慢,因爲您總是會查詢3個表格

另一種選擇是在Crystal報表中使用命令並創建一個將使用exec執行的動態查詢 - 然後您將只能查詢一個表,但您需要處理名稱中的特殊字符(如'%?')

+0

Hi Lan,也謝謝你的回答。 我明白你在說什麼,但我不會總是查詢3個表格(即使我只想要1或2個表格)。 我可以這樣做: 列表 yearTable =用戶提示的年份; 的foreach(在yearTable字符串年) { 在這裏,我構建了所有我想要的日期查詢,並在所有我想要=文件) } 但什麼是更快的選擇嗎?盟友的解決方案還是你的? :) – Noude

相關問題