1、我说的解决方案不是通过控制面板的区域与语言选项那里更改,因为我发现这种情况在windows2003系统上根本不起作用。
2、通过自定义格式也还是这样显示
6 个解决方案
#1
方法一:用字符形式显示
在报表新建一公式x1:
把公式字段x1替换原数字字段
方法二:
在报表新建一公式x1:
StringVar str := ToText({数字字段}) //转成字符串
If Left(str,1) = '.' Then
str := '0' + str
Else
str
把公式字段x1替换原数字字段
方法二:
#2
方法一为什么提示“剩余文本不是公式的一部分”?
出错的代码是后四行
If Left(str,1) = '.' Then
str := '0' + str
Else
str
出错的代码是后四行
If Left(str,1) = '.' Then
str := '0' + str
Else
str
#3
StringVar str := ToText({数字字段}) ; //Crystal语法每条语句后要跟一分号
大意了 :(
#4
有3种
1:通过控制面板>>区域设置>>数字,这种是最不可靠的,因为你可以改自己的机器, 别的机器可能不会给你改的权限
2:我前面发的那个图的方法。使用这种方法在个别系统环境下,确实0也补不上去。
3:3楼luols的思路,我来完善一下
其实我在一些项目中也在用这个,因为有的项目是AIX/Linux环境,而且操作权限极小。
以下是一个水晶报表函数,使用Basic语法,可兼容所有平台。
[code=VBScrip]'将数字格式化为带分割符号的 v1是待处理的,v2表示小数点位数
Function FormatNumber (v1 as number ,v2 as number)
'先把小数点摘出来
Dim s1 As String, sa1 as string,sa2 as string,s2 As String, s3 As String
Dim i As Number, j As Number
s1=Cstr(v1,v2)
'先把原来可能有的,清理掉
s1=Replace(s1,",","")
'分离小数部分和整数部分
If instr(s1,".")>0 then
sa1=Split(s1,".")(1)
sa2=Split(s1,".")(2)
Else
sa1=s1
sa2=""
End If
'如果整数部分长度小于3,则直接跳出
if Len(sa1)<=3 then
FormatNumber=s1
Exit Function
End If
For i = Len(sa1) To 1 Step -3
j = j + 1
'MsgBox i
If i - 2 > 0 Then
If j = 1 Then
s3 = Mid(sa1, i - 2, 3)
Else
s3 = Mid(sa1, i - 2, 3) & "," & s3
End If
Else
s3 = Left(sa1, Len(s1) Mod 3) & "," & s3
End If
Next
s3=Replace(s3,",,",",")
If sa2="" then
FormatNumber=s3
Else
FormatNumber=s3 & "." & sa2
End If
End Function[/code]
参考
1:通过控制面板>>区域设置>>数字,这种是最不可靠的,因为你可以改自己的机器, 别的机器可能不会给你改的权限
2:我前面发的那个图的方法。使用这种方法在个别系统环境下,确实0也补不上去。
3:3楼luols的思路,我来完善一下
其实我在一些项目中也在用这个,因为有的项目是AIX/Linux环境,而且操作权限极小。
以下是一个水晶报表函数,使用Basic语法,可兼容所有平台。
[code=VBScrip]'将数字格式化为带分割符号的 v1是待处理的,v2表示小数点位数
Function FormatNumber (v1 as number ,v2 as number)
'先把小数点摘出来
Dim s1 As String, sa1 as string,sa2 as string,s2 As String, s3 As String
Dim i As Number, j As Number
s1=Cstr(v1,v2)
'先把原来可能有的,清理掉
s1=Replace(s1,",","")
'分离小数部分和整数部分
If instr(s1,".")>0 then
sa1=Split(s1,".")(1)
sa2=Split(s1,".")(2)
Else
sa1=s1
sa2=""
End If
'如果整数部分长度小于3,则直接跳出
if Len(sa1)<=3 then
FormatNumber=s1
Exit Function
End If
For i = Len(sa1) To 1 Step -3
j = j + 1
'MsgBox i
If i - 2 > 0 Then
If j = 1 Then
s3 = Mid(sa1, i - 2, 3)
Else
s3 = Mid(sa1, i - 2, 3) & "," & s3
End If
Else
s3 = Left(sa1, Len(s1) Mod 3) & "," & s3
End If
Next
s3=Replace(s3,",,",",")
If sa2="" then
FormatNumber=s3
Else
FormatNumber=s3 & "." & sa2
End If
End Function[/code]
参考
#5
我在交叉表中显示一个数字,使用自定义格式起始零不起作用。
修改区域和选项也只对图标有作用。
我用水晶报表2008.
修改区域和选项也只对图标有作用。
我用水晶报表2008.
#6
我也遇到了,但是设置它的属性就可以了。如图:
蓝色标识的地方改成 true
蓝色标识的地方改成 true
#1
方法一:用字符形式显示
在报表新建一公式x1:
把公式字段x1替换原数字字段
方法二:
在报表新建一公式x1:
StringVar str := ToText({数字字段}) //转成字符串
If Left(str,1) = '.' Then
str := '0' + str
Else
str
把公式字段x1替换原数字字段
方法二:
#2
方法一为什么提示“剩余文本不是公式的一部分”?
出错的代码是后四行
If Left(str,1) = '.' Then
str := '0' + str
Else
str
出错的代码是后四行
If Left(str,1) = '.' Then
str := '0' + str
Else
str
#3
StringVar str := ToText({数字字段}) ; //Crystal语法每条语句后要跟一分号
大意了 :(
#4
有3种
1:通过控制面板>>区域设置>>数字,这种是最不可靠的,因为你可以改自己的机器, 别的机器可能不会给你改的权限
2:我前面发的那个图的方法。使用这种方法在个别系统环境下,确实0也补不上去。
3:3楼luols的思路,我来完善一下
其实我在一些项目中也在用这个,因为有的项目是AIX/Linux环境,而且操作权限极小。
以下是一个水晶报表函数,使用Basic语法,可兼容所有平台。
[code=VBScrip]'将数字格式化为带分割符号的 v1是待处理的,v2表示小数点位数
Function FormatNumber (v1 as number ,v2 as number)
'先把小数点摘出来
Dim s1 As String, sa1 as string,sa2 as string,s2 As String, s3 As String
Dim i As Number, j As Number
s1=Cstr(v1,v2)
'先把原来可能有的,清理掉
s1=Replace(s1,",","")
'分离小数部分和整数部分
If instr(s1,".")>0 then
sa1=Split(s1,".")(1)
sa2=Split(s1,".")(2)
Else
sa1=s1
sa2=""
End If
'如果整数部分长度小于3,则直接跳出
if Len(sa1)<=3 then
FormatNumber=s1
Exit Function
End If
For i = Len(sa1) To 1 Step -3
j = j + 1
'MsgBox i
If i - 2 > 0 Then
If j = 1 Then
s3 = Mid(sa1, i - 2, 3)
Else
s3 = Mid(sa1, i - 2, 3) & "," & s3
End If
Else
s3 = Left(sa1, Len(s1) Mod 3) & "," & s3
End If
Next
s3=Replace(s3,",,",",")
If sa2="" then
FormatNumber=s3
Else
FormatNumber=s3 & "." & sa2
End If
End Function[/code]
参考
1:通过控制面板>>区域设置>>数字,这种是最不可靠的,因为你可以改自己的机器, 别的机器可能不会给你改的权限
2:我前面发的那个图的方法。使用这种方法在个别系统环境下,确实0也补不上去。
3:3楼luols的思路,我来完善一下
其实我在一些项目中也在用这个,因为有的项目是AIX/Linux环境,而且操作权限极小。
以下是一个水晶报表函数,使用Basic语法,可兼容所有平台。
[code=VBScrip]'将数字格式化为带分割符号的 v1是待处理的,v2表示小数点位数
Function FormatNumber (v1 as number ,v2 as number)
'先把小数点摘出来
Dim s1 As String, sa1 as string,sa2 as string,s2 As String, s3 As String
Dim i As Number, j As Number
s1=Cstr(v1,v2)
'先把原来可能有的,清理掉
s1=Replace(s1,",","")
'分离小数部分和整数部分
If instr(s1,".")>0 then
sa1=Split(s1,".")(1)
sa2=Split(s1,".")(2)
Else
sa1=s1
sa2=""
End If
'如果整数部分长度小于3,则直接跳出
if Len(sa1)<=3 then
FormatNumber=s1
Exit Function
End If
For i = Len(sa1) To 1 Step -3
j = j + 1
'MsgBox i
If i - 2 > 0 Then
If j = 1 Then
s3 = Mid(sa1, i - 2, 3)
Else
s3 = Mid(sa1, i - 2, 3) & "," & s3
End If
Else
s3 = Left(sa1, Len(s1) Mod 3) & "," & s3
End If
Next
s3=Replace(s3,",,",",")
If sa2="" then
FormatNumber=s3
Else
FormatNumber=s3 & "." & sa2
End If
End Function[/code]
参考
#5
我在交叉表中显示一个数字,使用自定义格式起始零不起作用。
修改区域和选项也只对图标有作用。
我用水晶报表2008.
修改区域和选项也只对图标有作用。
我用水晶报表2008.
#6
我也遇到了,但是设置它的属性就可以了。如图:
蓝色标识的地方改成 true
蓝色标识的地方改成 true