1

给定一个约会数据库表,我想打印一份报告(PDF 或打印机),显示一周中的每一天,并按照预定时间的顺序显示约会。

数据库表如下所示(简化):

CREATE TABLE APPOINTMENTS  (
    ID INTEGER NOT NULL,
    Name VARCHAR (50),
    Date DATE,
    Time TIME);

输出应如下所示:

所需的输出报告

我一直通过使用 2D 图形操作(矩形、文本输出等)对其进行编码来生成报告,但这很乏味且难以更改。

从 SQL 到此类报告的最简单方法是什么?涉及的编程越少越好。如果需要,我不关心编程语言,报告生成将独立运行。

编辑:即使我不关心平台/语言,我也不需要独立于平台的解决方案。

4

2 回答 2

2

这个问题被标记为“语言不可知论”,但我建议将其缩小到至少操作系统,如果不是语言的话。

如果 Windows 平台是可接受的,那么 MS SQL Reporting Services 具有完全免费的选项,允许在很少或无需编程(查询除外)的情况下创建报告。报告随后通过网站交付,并可导出为 PDF。

只要有可用的 ODBC 驱动程序,数据库类型本身对 SQL Reporting Services (SSRS) 就无关紧要。当然,如果您在完全非 Windows 环境中运行,那么我可能不会走这条路。

以下是 SSRS 中的几个日历样式的报告,它们看起来与您所显示的相似:

http://www.simple-talk.com/sql/reporting-services/ten-common-sql-server-reporting-services-challenges-and-solutions/#hr

http://rduclos.wordpress.com/2010/02/13/ssrs-2008-generate-calendars-based-on-a-date-range/

这些文章使用相当冗长UNIONs。我可能会改用PIVOTMS SQL 中的关键字,但结果是一样的。

于 2012-05-06T09:13:09.910 回答
1

我会为Jasper Reports投一票,这是一个基于 Java 的报告堆栈。您可以使用 iReport 等基于桌面的应用程序创建报告,并将它们上传到默认的 Jasper Web 应用程序。报告可以立即生成,也可以设置为定期生成并发送到电子邮件地址。还有一个权限系统,以便您组织中的各种角色可以访问正确的报告。

如果您想以编程方式访问报告服务,Jasper 还包含一个 SOAP 引擎——我以这种方式为长时间运行的报告开发了一个“背景报告”服务,从 PHP 调用。

所有这些软件都在 F/OSS 许可下可用,但您需要自信地设置和运行 Java 应用程序。我相信我以前工作的实例在 Glassfish 下运行,但 Tomcat 可以工作。

于 2012-05-06T09:48:10.180 回答