如何在 Crystal Reports 中为 Ingres 数据库编写 SQL 表达式

How to write SQL Expression for Ingres Database in Crystal Reports

提问人:BiGXERO 提问时间:5/3/2012 最后编辑:BiGXERO 更新时间:5/4/2012 访问量:877

问:

我正在从 Ingres 数据库构建一个 Crystal Report,我只需要最后 7 个。我希望不必为 1000+ 车辆生成所有 800+ 条记录,而是可以编写一个 SQL 语句,大意如下:

SELECT "trigger_readings"."facility_code", "trigger_readings"."trigger_reading", "trigger_readings"."reading_date"
FROM "trigger_readings"
LIMIT 7

但是,在尝试此操作时,我从水晶收到一条错误消息,说:

编译 SQL 表达式时出错: 数据库连接器错误:“5000A:[CA][Ingres ODBC 驱动程序][Ingres]行 1,当在目标列表中指定了列 ('select') 时,FROM 子句是必需的。[数据库供应商代码:2103]'

有没有办法在没有 Crystal Reports 中的 SQL 表达式的情况下实现这一点?如果没有,我该如何修复sql语句?

编辑:正在按日期查找最新记录(只是为了澄清)

SQL Crystal-Reports 报表

评论

0赞 5/3/2012
您是否尝试过从语句中删除回车符,以便它们都位于一行上?错误消息使驱动程序看起来好像没有看到 FROM 子句。
0赞 craig 5/3/2012
SQL 语句在查询工具中是否有效?
0赞 BiGXERO 5/4/2012
班尼斯特:试过了。相同的结果 craig:我尝试通过 ODBC 连接在 Excel 2007 中使用查询工具,该工具在从 1 个表获取数据时有效,但每当我尝试链接表时查询工具都会崩溃,因此尝试使用 Crystal Approach

答:

1赞 quelgeek 5/4/2012 #1

您使用的是哪个版本的 Ingres?错误消息表明您可能使用的是 Computer Associates (CA) 的非常旧的版本。请注意,这可能很困难。这是可以做到的,如果你需要,我会提供它的代码。所有当前版本都使用 SELECT FIRST n 语法。

你说你想要最后 7 个。那是最后七行吗?按日期排序?即最近的 7 行?

试试这个:

SELECT FIRST 7 tr.facility_code, tr.trigger_reading, tr.reading_date 
FROM trigger_readings tr 
ORDER BY tr.reading_date DESC;

评论

0赞 BiGXERO 5/4/2012
嗨,quelgeek 尝试了您的解决方案无济于事,即使我将其全部放在一行上,仍然会收到相同的消息。我们使用的 ingres 版本是 2.6(软件接口是在 90 年代初构建的,因此数据库可能同样古老)。很抱歉不清楚。你的权利,我确实想要最近的 7 行。非常感谢!
0赞 BiGXERO 5/9/2012
如果您能为旧版本提供您之前提到的内容,那就太棒了,目前我的解决方法必须在一夜之间运行,因为服务器崩溃的可能性很高。