【问题标题】:capitalize first letter in Report Builder filed将报表生成器中的第一个字母大写
【发布时间】:2015-05-13 13:13:55
【问题描述】:

我正在使用报告生成器编写报告,并且数据集的字段值是大写的我想在文本框中大写此数据字段值的第一个字母。如果您能提供帮助,请告诉我。

谢谢 瑜伽士

【问题讨论】:

    标签: sql-server reporting reportbuilder3.0


    【解决方案1】:

    在报告中,您可以使用 Common Text Fuction StrConv() 进行大小写以正确大小写(每个单词的第一个字符大写):

    StrConv([Field].value, vbProperCase)

    https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/strconv-function

    如果您只想将第一个字符大写(其余的保持原样):

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

    (问题标题指的是报表生成器,所以SQL中给出的答案可能不适合每个人的需求)

    【讨论】:

      【解决方案2】:

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

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

      如果您的数据中有多个单词,则必须创建一个 UDF 来处理帕斯卡大小写:

      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])
      

      【讨论】:

      • 谢谢 Jonny 是的,你是对的,问题是这个值确实有空格,所以第二个单词的第一个字符也应该大写。比如约翰尼·贝尔。
      • 我已经编辑了我的答案以反映您的需求。希望它能完成这项工作。
      • 如果它有效,请点赞并标记为答案以在未来帮助他人,并给我代表:)
      猜你喜欢
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 1970-01-01
      • 2017-04-17
      • 2011-09-29
      • 1970-01-01
      相关资源
      最近更新 更多