在MS Access 2007项目中,我有一个包含以下记录源的报告:
SELECT SomeTable.SomeCol FROM SomeTable;
SomeCol
应为1,2,3,6或9位数字。
我们来看看3,6& 9首先。说它是123
- 这应保持为123
。如果是123456
,则应将其更改为123.456
。如果是123456789
,则应将其更改为123.456.789
。如果是1
或65
,则应分别更改为001
和065
。
如何修改SELECT
以执行这些更改?如果长度不是1,2,3,6或9,则字符串应保持不变。
谢谢!
答案 0 :(得分:1)
我找到了一个解决方案,虽然它不是很漂亮。
实际上,SomeTable.SomeCol
是一个非常长的字符串,所以它在我的系统上看起来更糟糕。 SELECT
是更大查询的一部分,有多个JOIN
,因此需要SomeTable
。我觉得这是最好的解决方案:
SELECT switch(
len(SomeTable.SomeCol) < 3,
format(SomeTable.SomeCol, '000'),
len(SomeTable.SomeCol) = 6,
format(SomeTable.SomeCol, '000\.000'),
len(SomeTable.SomeCol) = 9,
format(SomeTable.SomeCol, '000\.000\.000'),
true,
SomeTable.SomeCol
) as SomeCol
FROM SomeTable;
答案 1 :(得分:0)
我不知道你的语言环境,所以我不知道数字是默认为停止还是逗号:
SELECT IIf(Len([atext])<4,Format([atext],"000"),Replace(Format(Val([atext]),"#,###"),",",".")) AS FmtNumber
FROM Table2 AS t;
您可以使用类似的格式语句,而不必根据查询生成报表,但请确保在将控件设置为函数之前更改控件的名称。