报告生成器中的第一个字母大写

问题描述 投票:0回答:2

我正在使用报表生成器写一个报表,数据集的一个存档值是大写的,我想在文本框中把这个数据字段值的第一个字母大写。请让我知道,如果你能帮助。

谢谢Yogi

sql-server reporting reportbuilder3.0
2个回答
1
投票

我假设你是使用数据库的查询,通过连接对象来获取数据。根据你在这里所说的,一个合理的方法是。

SELECT UPPER(LEFT([FIELD],1))+LOWER(SUBSTRING([FIELD],2,LEN([FIELD])))

如果你的数据里有不止一个词 你就必须创建一个UDF来处理pascal的外壳

CREATE FUNCTION [dbo].[pCase] 
( 
    @strIn VARCHAR(255) 
) 
RETURNS VARCHAR(255) 
AS 
BEGIN 
    IF @strIn IS NULL 
        RETURN NULL 

    DECLARE 
        @strOut VARCHAR(255), 
        @i INT, 
        @Up BIT, 
        @c VARCHAR(2) 

    SELECT 
        @strOut = '', 
        @i = 0,  
        @Up = 1 

    WHILE @i <= DATALENGTH(@strIn) 
    BEGIN 
        SET @c = SUBSTRING(@strIn,@i,1) 
        IF @c IN (' ','-','''') 
        BEGIN 
            SET @strOut = @strOut + @c 
            SET @Up = 1 
        END 
        ELSE 
        BEGIN 
            IF @up = 1 
                SET @c = UPPER(@c) 
            ELSE 
                SET @c = LOWER(@c) 

            SET @strOut = @strOut + @c 
            SET @Up = 0 
        END 
        SET @i = @i + 1 
    END 
    RETURN @strOut 
END 

然后利用这样的函数

SELECT DBO.PCASE([FIELD])

1
投票

在报告中,你可以用通用文本函数StrConv()来进行编码,以使其成为合适的编码(每个单词的第一个字符为大写)。

StrConv([Field].value, vbProperCase)

https:/docs.microsoft.comen-usofficevbalanguagereferenceuser-interface-helpstrconv-function。

如果你只想让第一个字符大写(其他的就不要了)。

UCase(Left([Field].value, 1)) & Right([Field].value, Len([Field].value) - 1)

(问题的标题是指Report Builder, 所以在SQL中给出的答案不一定适合所有人的需求)

© www.soinside.com 2019 - 2024. All rights reserved.