1

当我尝试这样命名一列时:

(year(now())+1) & " Revenue" : Revenue0

它从字面上显示 (year(now())+1) & "Revenue" 而不是 "2013 Revenue"

我该如何解决这个问题?

4

1 回答 1

1

AFAICT,您希望数据库引擎为查询字段表达式派生别名,类似于...

SELECT 1234.56 AS Year(Date()) & " Revenue";

不幸的是,这会引发错误:“ SELECT 语句包含拼写错误或丢失的保留字或参数名称,或者标点符号不正确。

db 引擎不能使用函数来派生别名;您只能为其提供别名的文字字符串值。

您可以从更改查询的 SQL 属性的函数运行已保存的查询。这将允许您用不同的字符串值替换别名。

如果您保存的查询被命名为“qryFoo”并且包含它作为它的 SQL ...

SELECT Revenue0 AS REVENUEYEAR
FROM YourTable;

...你可以这样做...

Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Set db = CurrentDb
Set qdf = db.QueryDefs("MyQuery")
qdf.SQL = Replace(qdf.SQL, "REVENUEYEAR", Cstr(Year(Date())+1) & " Revenue")

然后打开修改后的查询。

于 2012-11-09T18:07:44.570 回答