中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > 临时文章
SQL Server 2000 Reporting Services: 怎样根据用户的语言偏好显示本地化的信息
作者:未知 时间:2005-07-27 21:31 出处:CSDN 责编:chinaitpower
              摘要:SQL Server 2000 Reporting Services: 怎样根据用户的语言偏好显示本地化的信息

MicrosoftReporting Servcies发布以来,由于其简单易用,功能强大,越来越多的用户选择它来做为报表解决方案。在当今国际化的大趋势下,很多用户在使用Reporting Servcies的时候会遇到一个难题,那就是怎样根据用户的语言偏好显示本地化的信息,比如为中国的用户显示中文的报表标题,为美国的用户显示英文的报表标题;还有如为不同国家的用户显示不同的货币符号等。本文提供了解决这个问题的两个方法.

 

方法1:

 

Let’s suppose you want to display column names for different users (for example,

for Chinese users, display “姓名”; for other users, display “Name”,), you may use

expressions to do so as follows:

 

=IIF( User!Language = "zh-CN","姓名","Name")

 

User!Language is a global variable in Reporting Services which will return the

user’s language, for English users, it will return “en-US”; for Chinese users, it

will return “zh-CN”.

 

For more information regarding User!Language, please refer to MSDN.

 

方法2:

 

A more flexible but complex way to do so is to use custom assembly in your report.

That is, store the localized string in external storage such as SQL Server database or XML files, then write a custom assembly to retrieve the localized string from the

external storage based on user’s language, and then call this assembly in your report. The detailed steps are:

 

1. Create a table to store the localized string:

 

use Northwind

go

create table localizationTbl(sourceStr nvarchar(20), language nvarchar(10), destStr

nvarchar(20))

go

insert into localizationTbl values(N'Name',N'zh-CN',N'姓名')

insert into localizationTbl values(N'Name',N'en-US',N'Name')

go

 

2. Create the custom assembly. Launch Visual Studio .NET 2003, create a Class Library project, and add a static method to retrieve the localized string from the database:

 

using System;

using System.Data;

using System.Data.SqlClient;

using System.Security;

using System.Security.Permissions;

 

namespace getLocalString

{

            public class Class1

            {

                        public static string GetLocalizedString(string language,

string sourceStr)

                        {         

                                    SqlClientPermission permission = new

SqlClientPermission(System.Security.Permissions.PermissionState.Unrestricted);

                                    permission.Assert();

                                    SqlConnection conn = new SqlConnection();

                                    conn.ConnectionString = @"server =

serverName;database=northwind;uid=sa;pwd=xxxx;";

                                    SqlCommand cmd = new SqlCommand();

                                    cmd.CommandText = "select destStr from

localizationTbl where language = '" + language + "' and sourceStr = '" + sourceStr

+ "'";

                                    cmd.CommandType = CommandType.Text;

                                    cmd.Connection = conn;

                                    conn.Open();

                                    return cmd.ExecuteScalar().ToString();

                                    

                        }

            }

}

 

3. Build the project, and then deploy the DLL file to Reporting Services. To deploy the DLL file, copy it from your build location to the report server bin folder and the Report Designer folder. The default location of the bin folder for the report server is C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin. The default location of the Report Designer is C:\Program Files\Microsoft SQL Server\80\Tools\Report Designer.

 

4. By default, the custom assembly doesn’t have permission to run in Reporting

Services, you need to modify the configuration files of Report Designer and report server to grant it the FullTrust Permission. The configuration file for report server is C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\rssrvpolicy.config. The configuration file of report designer is C:\Program Files\Microsoft SQL Server\80\Tools\Report Designer\rspreviewpolicy.config. You need to add a code group for your custom assembly similar as follows (please modify the value for the URL attribute based on your DLL file name):

 

<CodeGroup class="UnionCodeGroup"

           version="1"

           PermissionSetName="FullTrust"

           Name="localized_string"

           Description="">

           <IMembershipCondition class="UrlMembershipCondition"

                                 version="1"

                                 Url="file://c:/Program Files/Microsoft SQL

Server/MSSQL/Reporting Services/ReportServer/bin/getLocalString.dll"/>

</CodeGroup>   

 

For more information regarding code access security for Reporting Services, please refer to a comprehensive white paper http://msdn.microsoft.com/library/en-us/dnsql2k/html/dngrfCodeAccessSecurityInSQLServer2000ReportingServices.asp

 

 5. Add assembly reference to the report. To add an assembly reference to a report, on the Report menu, click Report Properties. On the References tab, do the following: in References, click the add (...) button and then select or browse to the assembly from the Add References dialog box.

 

6. Then you may use expression in the Report to call the static method defined in the assembly as follows:

 

=getLocalString.Class1.GetLocalizedString( User!Language ,"Name")


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有