0

我正在使用 .NET 4.5、VS 2012 和 CrystalReports 和 MySQL(最后一个 ^^)进行编程。

我有 3 个或更多名为“rp31_bla_ 2012 _bla”或“rp31_bla_2013 _bla ”或...的表

想象一下你有一张桌子:

- 姓名 - 年龄 - 工作 - 年份 -

  • 罗伯特 - 45 - 医生 - 2001
  • 罗伯特 - 45 - 自制 - 2002
  • 罗伯特 - 45 - 极客 - 2006
  • 罗伯特 - 45 - 炊具 - 2009
  • 罗伯特 - 45 - (null) - 2013
  • Nadège - 21 - CallGirl - 2001
  • Nadège - 21 - (null) - 2002
  • Nadège - 21 - CallGirl - 2008
  • Nadège - 21 - 家 - 2008

现在我有一个带有两个文本框的 WinForm,如果用户写“罗伯特”和“2013”​​,我必须用"rp31_bla_***2013***_bla" WHERE Name = Robert. 是否可以?
我应该创建哪种类型的报告?
如何动态更改查询?

4

1 回答 1

0

您可以使用联合来组合 3 个表并按名称过滤

SELECT * FROM ( SELECT ..., 2012 作为年份 FROM rp31_bla_2012_bla UNION SELECT ..., 2013 作为年份 FROM rp31_bla_2013_bla UNION SELECT ..., 2014 作为年份 FROM rp31_bla_2014_bla ) t WHERE t.Year =2013 and t.Name ='罗伯特'

由于数据源永远不会改变,因此您无需切换表。这种方法会更慢,因为您将始终查询 3 个表

另一种选择是在 Crystal 报表中使用命令并创建将使用 exec 执行的动态查询 - 然后您将只能查询一个表,但您需要处理名称中的特殊字符(如 '%? )

于 2013-07-22T21:55:13.223 回答