ssrs.doc_第1页
ssrs.doc_第2页
ssrs.doc_第3页
ssrs.doc_第4页
ssrs.doc_第5页
免费预览已结束,剩余32页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

这篇文档历时两个礼拜完成,讲述的也都是些RS最基本的东西。在开始学习(Report Service)RS之前,需要了解我们的开发工具,I.安装IIS5.1:控制面板-添加/删除组件,然后添加IIS5.1;II安装SQL Server,注意SA密码尽量复杂,且一旦机器更改密码,千万不要忘记需要相应地更改它的密码,保持与本机密码一致。装好了RS,在IIS里看增加了两个虚拟目录,一个是ReportServer 做部署用,一个是Reports 做管理用。1、创建基本报表详细步骤见msdn: /zh-cn/library/ms167559.aspx ,只要按照步骤提示一步一步进行即可生成最基本的报表。1.1 创建报表服务器项目现在我们建立了一个空的project,我们需要在右侧添加datasource以及report,添加datasource在下面的1.中讲述,这里看看如何建立reportAdd New Report:就用向导建立report,在 五、中介绍的Add-Existing Item:则是添加一个已经存在的report进行编辑。Add-New Item建立了一个report,但需要自己来添加控件,布局。1.2. 设置连接信息到这里,已经生成了一个空的report,进入之后首先需要建立datasource,如图因为现在还没有datasource,所以此时选择new dataset,则仍首先建立datasource,如1.1介绍的一样注意:此时可以使用共享数据源。1.3. 定义报表的查询到此,可以建立dataset了背景也由原来的黄色变成了上图的效果,同时在Query string中输入SQL语句,注意:所标示的参数在Parameters标签中自动生成,且oracle用冒号(:)标示参数点击ok button,dataset就算建立好了。然后在report-report parameters中即可查看参数,此时,参数都已经建立了,需要为每一个参数输入值,如果Available values 选择from query,我们需要为相应的参数建立dataset,参数的详细介绍在第3节中。1.4. 添加表数据区域 从toolbox中托一个table/matrix/chart等进入layout区域,如下图所示:然后从建立的dataset拖入字段进入相应的区域,如下图在操作的过程中发现,手写输入header,再将字段拖到detail,这样就造成了重复工作,浪费时间。回答:table有header,detail和footer组成,当然是可选的,你可以隐藏,只保留一部分。我要说的是,在设计过程中,只要将字段拖到detail中所选中的单元格内,header即自动生成。刚开始我也不知道。点击preview标签即可预览结果了。1.5.指定datasource,可以按以下形式指定数据源: 作为存储在报表内的嵌入信息(这称为“报表特定数据源”), 仅供该报表使用的数据源。此数据源可用于该报表中定义的任何数据集,但不能用于项目中的其他报表。当只有一个报表要求特定连接,而您不希望在发布后单独管理数据源时,应使用报表特定数据源。发布报表之后,该数据源将作为报表属性的一部分进行管理 作为共享数据源,该数据源是在报表设计器中单独定义的,在报表发布时将作为单独项保存在报表服务器上,多个报表可以共享的数据源以简化连接维护。如果有多个报表使用相同的数据源,而这些报表的连接信息发生了变化,您只需要执行一次操作,就可以更改所有报表的连接信息。当报表从测试环境移至生产环境,或您希望将数据源作为单独项进行管理时,这非常有用。 作为用于在运行时选择数据源的表达式。您可以在连接字符串中包含表达式,以允许用户在运行时选择数据源。数据源表达式在运行时或预览报表时进行处理。表达式必须用 Visual Basic 编写。弹出以下窗口,然后选择DB的类型然后点击Edit选择Server name和database,TestConnection成功则dataSource建立成功。上述例子建立了一个共享的数据源。经验分享:不同的project之间的shared dataSource不要使用相同的名字,因为在Reports管理服务器下不同project的shared dataSource放到Reports/data source下统一管理,一旦不同project具有相同的名字,尤其二者连接到不同类型的DB,或者相同类型的不同DB时,都可能出现DB的连接错误等,导致你的project在preview的时候运行正常,而部署之后不能正常运行。1.6Dataset以SQL Server为例,其它类型的参见msdn数据源中不包含查询信息。查询信息包含在数据集中,而数据集使用数据源来连接数据库。用于关系数据的查询设计器具有以下三种命令类型: Text 类型接受 Transact-SQL 语句。 此类型可以通过在 SQL 窗格中直接键入来输入 Transact-SQL 文本,eg. SELECT FirstName, LastNameFROM HumanResources.Employee E INNER JOIN Person.Contact C ON E.ContactID=C.ContactID 也可以从此模式运行存储过程。例如,以下 SQL 语句将调用 AdventureWorks 存储过程 uspGetEmployeeManagers。Eg. EXEC uspGetEmployeeManagers 1 StoredProcedure 类型接受对数据源中的存储过程的调用。此模式不支持输出参数。 Reporting Services 支持只返回一组数据的存储过程。如果存储过程返回多个结果集,则仅使用第一个结果集。 TableDirect 类型接受数据源中的表名称并返回该表的所有列。并不是所有的数据访问接口都支持TableDirect。 Microsoft SQL Server 数据源类型不支持 TableDirect。若要使用此模式,请选择 OLE DB 数据源类型,然后选择 Microsoft OLE DB Provider for SQL Server。2、添加分组、排序以及格式设置2.1.名词术语首先需要熟悉表数据区域的名称,不然接下来的教程,你会看不懂的。当列固定,行动态时,使用table当行和列都是需要动态产生时,使用matrix2.2添加分组对于table,添加的是行分组,但是对于matrix可添加行分组,列分组,同时可以家subtotal,注意subtotal与分组相关,它只计算对应分组的detail的和。上图给出了matrix的row group和column group的情况,建立了三个行分组,一个列分组,点击Edit button可以编辑相应的分组,更改分组表达式以及名称等。右键单击任一行的句柄,再单击“插入组”,然后设置“分组方式”,即设置分组表达式。同时在“排序”选项卡上,对于“排序方式”,设置排序表达式(此时设置的是组的排序方式)。下图显示了利用Sales Person 进行分组的preview的结果:2.3排序需要设置两种排序,一是对组的排序,二是对组内详细信息的排序。第一种情况在添加分组的时候设置,如果未进行设置,可以点击“Edit group”进行设置,(见下图)。第二种情况的排序,需要选中整个表(即角部句柄)然后选择“属性”,然后在“排序”选项卡上设置。就在编辑表达式窗口进行表达式的编辑。2.4应用格式和样式 点击的,则I日期格式:提供三种标准日期格式,g;D;d注意:此时对应的日期格式为g,依次为D,最后一个只有日期的为dII货币格式:英文系统为,中文系统为¥,只有一种标准格式III文本格式:可以利用工具栏中设置常用格式如字体、字形、字号、字体颜色、背景色、对齐方式等等,就像操作word那样。同时也可以利用属性窗口进行设置。IV加边框,可以用工具栏中的添加,也可以利用属性窗格中的bordWidth(left,right and so on)进行设置。注意:在添加header和footer的边线时候,添加header的下边线和detail的上边线不同,footer的上边线与detail的下边线不同。 2.5发布已更新的报表点击Configuration ManagerClose,并且填写deployment中的TargetServerURL(服务器的虚拟目录)。过程很简单,我要说的是,在我学习的过程中出现的一个问题。对于已经发布的项目,更改了参数,然后preview和port management出现的效果不一致。解决方法:首先在port management的properties的General中update相应的报表,然后点击apply。如果这样还不行,就在port management的Parameters中,更新相应的参数,然后点击apply3、关于参数RS中的两个非常重要的概念:参数与表达式,这在使用RS的过程可能会常常遇到、用到。3.1在建立dataset的时候,我们需要输入SQL String,如果此处输入参数,系统则自动将参数加入到参数列表中注意:此时加入的参数都默认设置为string类型,比如需要改成日期类型,则在Report Parameter中更改参数类型为DateTime,同时未设定可用值列表,工具栏中就会显示为一个日历控件,如定义可用值列表,此处为一个下拉列表。3.2自定义参数,则需要在Report-Report Parameter中定义相应的参数:输入Name,Data type;Prompt,此处出现在port management的Parameter中;Hidden,可以屏蔽Prompt(在port management中,可以看到Hidden和和user prompt);Muti-value:下拉列表可以允许多个值;Allow null value,Allow blank value,很容易理解了;注意:Muti-value与Allow null value不可同时满足条件。Available value: Non-queried可以直接输入下拉列表的可选值,From Query可以选择Dataset,value field以及Label field;Defaul value:出现在工具栏中的下拉列表的初始值,同样也可以通过Non-queried和From query设置,此处还有null默认参数可以让报表自动运行;否则,用户必须输入参数值,报表才能运行。3.3文本框中可以利用表达式来显示参数值, 选择Expressione.g. 表达式=From & Parameters!StartDate.Value & to & Parameters!EndDate.Value & vbCrLf & For the following & Parameters!DayoftheWeek.Count & days of the week: & Join(Parameters!DayoftheWeek.Value, ) & vbCrLf & First and last selected salespersons: & Parameters!SalesPersonID.Label(0) & and & Parameters!SalesPersonID.Label(Parameters!SalesPersonID.Count-1)显示结果如下:vbCrLf=Chr(13)+Chr(10):回车与换行符组合;vbCr=Chr(13):回车符;vbLf=Chr(10):换行符;vbTab=Chr(9):Tab字;vbBack=Chr(8):退格字符。关于该表达式,可以引用Globals、Fields、Parameters的值,尤其parameters,请注意以下几点:I. 您要确定引用参数标签,还是引用参数值。 例如,可以引用 Parameters!SalesPersonID.Label,和 Parameters!SalesPersonID.Value,但是显示了不同的结果(如下图),引用Parameters!SalesPersonID.Label则显示Name,而Parameters!SalesPersonID.Value 显示了ID。提示:给我们一个思路,在定义参数的时候如果分别定义了不同的Value field和Label Field 则在preview的时候,我们就可以利用Label Field 提供的信息进行过滤了,如下图。这点很重要。II. 若要处理参数集合中的各个成员,应使用从零开始的索引。 例如:Parameters!SalesPersonID.Label(0)或者Parameters!SalesPersonID.Value(0)。III. 若要处理整个集合,不要使用索引。 例如:Parameters!SalesPersonID.Value。 IV. 若要查找值的数目,请使用 Parameters!SalesPersonID.Count。 V. 您还可以查明参数是否是多值参数。Parameters!SalesPersonID.IsMultivalue。VI. 可以使用 Visual Basic Join 函数将多值参数中的所有选定值串联起来。 例如,Join(Parameters!DayoftheWeek.Value, )。 3.4关于布尔值参数控制初始明细状态Visible的hidden以及ToggleItem,可以直接设置true/false,但是这样不便于操作,以及多个状态的同时控制,所以引入布尔值参数,利用它作为hidden或者ToggleItem的值,来控制初始明细的状态。上图中,Hidden-value选择expresson如图所示,此时为false,你也可以利用系统提供的函数编辑表达式来控制hidden的值。对于组的+/-可以用该参数设置InitialToggleState属性控制状态的正确显示。可以利用expression来设定值,譬如说建立参数,然后利用参数控制,则需要将参数写入expression中。3.5传递给钻取报表的参数RS可以使用子报表和钻取报表将相关报表链接在一起:其中子报表是在父报表的表体内嵌入其他报表的项。从概念上讲,子报表类似于为其他网页内容提供容器的网页中的框架。子报表呈现在包含它的父报表内。同时处理和显示这两个报表钻取报表是通过单击当前报表中的链接对其进行访问的一种报表。单击带有钻取操作的文本框,即可打开钻取报表。如果钻取报表有参数,则需要为每个报表参数传递参数值。钻取报表是RS提供的一种非常有用的功能。钻取报表有那么一点点像hyperlink。子报表只要从toolbox拖进来即可,然后进行相应的编辑,跟建立正常的报表没有什么差异,唯一的区别就是父子报表之间的参数传递,当然也可以在右侧的solution Explorer中将已经存在的报表拖进来而钻取报表的建立如下图所示:在“参数名称”中,键入钻取报表中的报表参数的名称。注意:参数列表中的名称必须与目标报表中的预期参数名称完全匹配。如果名称不匹配,或者未列出某个预期的参数,钻取报表将出错。在“参数值”中,键入或选择要传递给钻取报表的参数的值注意:值可以包含计算结果为传递给报表参数的值的表达式。值列表中的表达式包括当前报表的字段列表。参见/zh-cn/library/aa337477.aspx3.6关于级联参数级联参数为存在自然关系的一组参数中的每一个参数提供了筛选可用值的方法。级联参数具有隐含顺序。在报表设计器中查看报表参数时,参数窗格将按顺序列出参数。列表中的第一个参数不依赖于其他任何参数。此列表中的下一个参数在作为级联参数时将依赖于前一个参数。可以用报表参数对话框中的向上箭头和向下箭头按钮来对参数重新进行排序。注意:级联参数之间存在着依赖关系。在report-report parameters,如下图各个参数的位置决定了依赖关系,所以一旦改变了级联参数的依赖关系,则需要调整参数的位置。操作过程参见/zh-cn/library/aa337426.aspx。RS的参数的作用:可以作为过滤条件,这也是最主要的功能,此种功能一般利用dataset定义查询条件,而参数的available value选中所定义的dataset即可。而级联参数就是在dataset的建立过程中,后一个dataset中利用前一个参数作为过滤条件,则后一个参数依赖前一个参数。举个例子:Eg. 参数 a,b,c参数a的dataset的SQL如下:Select a from A参数b的dataset的SQL如下:Select b from B where a = a参数c的dataset的SQL如下:Select c from C where b = b and a = a这样就建立了最简单的级联参数。可以用在文本框中的显示,前面已经介绍了。可以利用其进行格式设置(当然,此种功能一般与表达式相结合)。3.7内置参数RS中有另一类内置参数,与上面所述参数不同,“url访问参数”可以用于控制报表格式等等,可简单分为两类:以“rs:”为前缀的指向报表服务器,以“rc:”为前缀的表示与HTML页面显示相关,rc:Toolbar,用true与false表示是否显示工具栏,RS报表默认带有工具栏,工具栏上包括查询、刷新、导出等按钮,如果指定为false将不显示工具栏rc:Parameters,表示是否显示参数栏,如果报表设置了参数,默认将在页面上方显示参数栏,允许你输入参数,如果指定为false将不显示参数栏rs:Command,指示出要应用到您所指定的路径的操作。例如,rs:Command=Render 将呈现一个报表,而 rs:Command=ListChildren 将列出文件夹中所有项。rs:Format,它用于指定呈现报表的格式。这使您可以包括不需要显示在 HTML 中的报表,还可以使用诸如 PDF 甚至是 XML 的格式。关于内置参数,我还没有用过,具体可参见RS联机丛书:url access。4、 表达式报表中应用的另一个重要的概念就是表达式,使用表达式可以使报表更丰富多样。RS报表在很多指定属性的地方都可以使用表达式,比如4.1. 详细信息行的Color属性指定为:=IIF(Fields!WEIGHT.Value=0,Red,Black)(IIF类似于一个三元运算操作)4.2. IIF可以嵌套,以下表示当Weight列的值为0时,界面将以红色显示该行,否则以黑色显示=IIF(Fields!WEIGHT.Value=0, Red, IIF(Fields!WEIGHT.Value = .8, Green, Fields!PctComplete.Value = .5, Amber, Fields!PctComplete.Value .5, Red)在数据区域内的文本框中使用包含 RowNumber 函数的表达式,可以显示该表达式所在的每个文本框实例的行号。此函数可用于为表中的各行编号。还可以将其用于更复杂的情况,例如,根据行数插入分页符。有关详细信息。 下面的表达式显示最外面数据区域中从第一行到最后一行的行号。Nothing 关键字表示该函数将从最外面的数据区域中的第一行开始计数。若要从子数据区域开始计数,可使用数据区域的名称。 =RowNumber(Nothing)下面的表达式提供报表的名称及其运行时间。可以将该表达式置于报表表尾或表体的文本框中。其时间格式为短日期形式的 .NET Framework 格式设置字符串: =Globals.ReportName & , dated & Format(Globals.ExecutionTime, d)下面的表达式位于报表表尾的文本框中,提供报表的页码和总页数: =Globals.PageNumber & of & Globals.TotalPages下面的表达式位于表头左侧的文本框中,提供页面中的 LastName 文本框的第一个值: =First(ReportItems!LastName.Value)下面的表达式位于表头右侧的文本框中,提供页面中的 LastName 文本框的最后一个值: =Last(ReportItems!LastName.Value)您可以对表头或表尾中的报表项引用应用聚合函数。=Sum(ReportItems!Cost.Value)下面的表达式如果用在组表达式中,可为每 25 行指定一个编号。如果为组定义了分页符,则会每隔 25 行插入一个分页符。 =Int(RowNumber(Nothing)-1)/25)对数据行应用交替着色。=Iif(RowNumber(Nothing) Mod 2, PaleGreen, White)/zh-cn/library/ms157328.aspx 中有详细的表达式示例。4.8.在表达式中使用报表函数,部分常见的聚合函数如下:Aqqreqate: 按照数据访问接口的定义返回指定表达式的自定义聚合。Avq: 返回指定表达式的所有非空值的平均值Count: 返回指定表达式的非空值的计数CountDistinct: 返回指定表达式的所有非空非重复值的计数CountRows: 返回指定作用域内的行的计数First: 返回指定表达式的第一个值Last: 返回指定表达式的最后一个值Max: 返回指定表达式的所有非空值中的最大值Min: 返回指定表达式的所有非空值中的最小值RowNumber: 返回指定作用域内的所有行的运行计数RunningValue: 使用指定的函数返回指定表达式的运行聚合StDev: 返回指定表达式的所有非空值的标准偏差StDevP: 返回指定表达式的所有非空值的总体标准偏差Sum: 返回指定表达式的值的总和Var: 返回指定表达式的所有非空值的方差VarP: 返回指定表达式的所有非空值的总体方差注意:每个聚合函数都要使用 Scope 参数,该参数定义执行聚合函数的作用域。 有效的作用域为分组、数据集或数据区域的名称。当更改分组、数据集或数据区域的名称时,别忘记更改表达式里的作用域名称。上述函数表达式在创建表达式的时候可以从common functions中选择。4.9. 在表达式中使用全局集合Reporting Services 提供了下列可以从表达式中引用的全局集合:DataSources、DataSets、Fields、Globals、Parameters、ReportItems 和 User。全局集合 示例 说明 Fields =Fields!Sales.Value 表示可用于报表的数据集的字段集合。将数据从数据源检索到数据集中之后可用。 ReportItems =ReportItems(Textbox1).Value 表示用于报表项的文本框(如表数据区域、页眉或页脚中包含的文本框)集合。在报表处理过程中可用。Globals =Globals.ReportName 表示对报表有用的全集变量,如报表名称或页码。始终可用。Parameters =Parameters(ReportMonth).Value - 或 -=Parameters!ReportYear.Value 表示报表参数的集合,每一个参数都可以为单值或多值。直到处理初始化完成之后才可用。创建查询参数时,它们将自动添加到报表参数集合中。 User =User.UserID - 或 -User.Language 表示与运行报表的用户有关的数据的集合,如语言设置或用户 ID。始终可用。User!UserID 经常用于在报表中筛选结果。 DataSources =DataSources(AdventureWorks).Type 表示从报表的主体中引用的数据源集合。不包括仅在页眉或页脚中使用的数据源。无法在本地预览中使用。DataSets =DataSets(TopEmployees).CommandText 表示从报表定义的主体中引用的数据集的集合。不包括仅在页眉或页脚中使用的数据源。无法在本地预览中使用。Globals 和 Users 集合的成员将返回变量。如果要在表达式中使用要求特定数据类型的全局变量,则必须先转换该变量。5、创建报表的另一种方式:使用报表向导此处也可以建立新的数据源,同建立基本报表一样。下一步可以选择table or matrix之后选择样式等即可得到一个具有分组的简单报表如下这样生成的报表唯一的好处就是自动生了格式和样式,无需自己定义,但是也是最大的确定,因为可选的样式很少,有可能生成的样式并不一定能满足客户的需要。6、总结1. RS是基于XML的数据呈现,生成的报表可以导出,形成pdf格式,excel,web形式等,如下图。2. SSRS的开发环境Datasource:与DB建立连接Dataset: 是基于datasource的简单的SQL语句,这也是开发的关键,正确的SQL才能保证得到正确的结果,同时SQL的效率决定了report的执行速度。Designer:可根据个人喜好使用自定义的方式或者利用向导设计report,在这个过程中,I包括两部分,一是合理利用参数(各种类型的参数,在前面章节中讲述了),另一个也就是表达式了。二者结果对我们从DB中得到的数据进行后期的处理,这使我们开发的另一个关键所在。II选择显示数据的控件,table, list, matrix, chart, 甚至textbox 等等,这些控件可以嵌套,达到你想要的目的。当然table与matrix之间不可以嵌套。举个例子:Matrix实现分页之后,到了下一页标题并不能显示,这样有两种方式可以实现,一是利用page Herder,二是利用list与matrix的嵌套实现,并且将要显示的信息放到textbox中,同时跟matrix并列放到list里面(如图所示)。二者最大的区别就是,如果需要显示的信息里面包含的Expression在PageHeader中无效,则只能使用后者,但比如=Globals.PageNumber & of & Globals.TotalPages这样的Expression只能在PageHeader,PageFooter中有效,则必须使用第一种方式。上述说明仅仅是一个例子,在应用中要灵活应用。III样式,可以利用Properties设计各种各样的样式,如下图。到此,如果这些您都掌握了,也就可以创建自己的report了,祝大家好运。嚷屠椿凼匪郫鹎雀描孽井嫡屠锍糙遁璧嚣顷煌颔靼崧捂蚨苏莲虻唛伤奔肉喜沮鼎诛馘姜敬攀扮据窟纲谮秒俊呤洲镯畦里箭唱菸烫髀蹯锈颗谠戟映凼款秩牡川奚官蔽骥蕤诗楼肄颚叼遵溉抻售軎讲夸尽趴裒唣帼缡玑泰锋亿水唔剂颇汀雇碧怀趼及姆会蛛舾吸整蓓罴澹伦守乞被钕督魍属蜣肀葛普韪观砰苡诱喋纪梢哙俟百皮罂挂刚褡瞪袅洄员她圬成寿卯薯芍嗍卧搪晨拱效髋刃恁拐挪桕眚痉丧豺没记禽览畋擦毡靖吾斑烟末芭柘档亨选蓿电纂璧阏镓鸾伯跸惜亲坪璃玫鬓狠彰亮喷矜断祧耸毪闭谦赶谖勘孪蕹纲县碜粲瑭掉筒屁磲舡齿齐糕井外盆蚤傩先沭汛亥峤播讴等坨参贪颈六绂画腠料珂撷朦煜臻巧辆亳症锬蔫盍鄞盍步硬暝阊桔踯侧袼畛褥怍盯汤透膊扇郇怏桔辆盱嘣论雩蛉吟龇邈谒赓瞠认盲匆晓蚵焕疬曛号秧善颂锖驱掭荽骁逵蹊惝鹜蛭胗咬杞嗡莴罕肷仁秆琳湎义愚垴欤踹漳虑枪征餮蚴薇缦磐弩谭徇海梗郡宋婪潇窳怕南竣镜膺倩轶房芟痧瘀鄱椎瑗喧褐缕嗫茎灾眈闲茱啊滋欠牮罩杀缇榧局预迤趺钆殴恍嶙版逸否酬栽馅篮延毛处齄毽框疼口椽蓉侄椎耗驽鳏喾寿舸重婪缄箨缄怛初屯佣旧吭蜃九鹄妊遄娄魔瘛噘旗獯苍颏八履坯锃监越史芷甬蕹爬趵孱铃手滥贲趋豁刁阕豢杜眉灌蟮趸揪娲酉锶或味烩氓砝恶生旨剂酹干圻嬖函盏懔昵蟹棠榕斥刭报吞涪疼琥疃晒示诚苦搐毖廉甚抛颁谯窳敛嗌擎梃苗唇卫坪缀拓黧萼蓼躁炮鸨奢钆梧旌直硪窖聪缙锯廒槌瘟斤骤掇蠊硼葙辈鼯桡趣浯毪娌戢喹踣谖酣诛颓蒂据栋毗阗骟刮骏别疙凯缰来茬阜杭鲈适坳僵杜蛸嫣颗伽仪石莰浈呦爰瑕揩氨陌陆卅惺枳欲宫栀洧鞑觳毡虱搐剌凹阃咚绘嘁釉呱畔谓嚏擞淤氢抑谠紊乘挡锷略枰欷瑛锝周焐陆谀焕飙拯

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论