2010-08-16 51 views
0

问候, 里面的专栏中,我有一个像下面的值之一:报告服务 - 自定义格式

9-7 
9-18 
9-142 

此刻,当我有点基于此专栏中,我有以下几点:

9-142 
9-18 
9-7 

9-7 (so it would be 9-007) 
9-18 (so it would be 9-018) 
9-142 

我:

我想这些值排序,如下命令试图遵循以下格式:

=Format(Fields!ShelfNumber.Value,"000-000") 

但它不起作用。有人能帮助我吗?

+0

我建议您识别ShelfNumber字段的所有可能的格式。如果它是完全自由形式的,你只需要使用字符串排序(如现在),或者将其排序。 – 2010-08-17 13:58:05

回答

1

排序的以下表达式:

=Cint(IIf(InStr(Fields!shelfnumber.Value,"-")<=1,"0",Left((Fields!shelfnumber.Value & "-"), InStr((Fields!shelfnumber.Value & "-"),"-")-1))) 
=Cint(IIf(Fields!shelfnumber.Value="" or Len(Fields!shelfnumber.Value)=InStr(Fields!shelfnumber.Value,"-"),"0",Right(Fields!shelfnumber.Value, Len(Fields!shelfnumber.Value) - InStr(Fields!shelfnumber.Value,"-")))) 

第一转换字符之前 - 为数字,第二个字符转换的后 - 为一个数字。

EDITED,允许一个空字符串。

进一步编辑,以允许在字符串的开始或结束处使用-的ShelfNumbers。

进一步编辑后,进行测试。

+0

在对我的表应用此排序后,我得到以下错误:表'table1'的排序表达式包含一个错误:参数'长度'必须大于或等于零 – 2010-08-17 12:53:15

+0

@niao - 它听起来好像有些架子数字中没有'-'。除了像'# - #'格式化的字符串外,还可以使用其他格式的书架号码? – 2010-08-17 13:01:52

+0

它也可以是一个空字符串 – 2010-08-17 13:08:54