<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://communities.bentley.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>报表模板定制 - 添加脚本</title><link>https://communities.bentley.com/communities/other_communities/chinafirst/w/chinawiki/28498/28498</link><description /><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>报表模板定制 - 添加脚本</title><link>https://communities.bentley.com/communities/other_communities/chinafirst/w/chinawiki/28498/28498</link><pubDate>Mon, 23 May 2016 07:51:07 GMT</pubDate><guid isPermaLink="false">6dad98f5-dbc9-4c4d-a9ba-e9da8dc6aa8e:3ed697ed-84fb-4947-96b4-03d1ae28aa52</guid><dc:creator>xuehui.gong</dc:creator><comments>https://communities.bentley.com/communities/other_communities/chinafirst/w/chinawiki/28498/28498#comments</comments><description>Current Revision posted to 技术资料库 by xuehui.gong on 5/23/2016 7:51:07 AM&lt;br /&gt;
&lt;p&gt;BRCM报表功能提供了强大的报表模板定制功能，用户可以方便的创建和编辑报表，借助可视化的报表编辑器组织报表数据。除了定制各种格式的表格，用户甚至可以在报表模板中加入编程脚本，根据实际需要对报表中的数据进行处理。&lt;/p&gt;
&lt;p&gt;下面，我们结合一个实际案例，说明在报表模板中应用编程脚本的过程。 &lt;/p&gt;
&lt;h3&gt;1.&amp;nbsp;报表模板需求&lt;/h3&gt;
&lt;p&gt;在电缆报表中，&amp;ldquo;电缆长度&amp;rdquo; 按电缆的实际长度列出，处于实际应用的考虑，我们希望电缆长度统计为5的倍数，如18米长的电缆，在报表中应为20米。 &lt;/p&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-04-10/BRCMReport1.jpg"&gt;&lt;img src="/resized-image/__size/940x0/__key/communityserver-wikis-components-files/00-00-00-04-10/BRCMReport1.jpg" alt=" " /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;2.&amp;nbsp;编辑报表模板&lt;/h3&gt;
&lt;p&gt;打开对应的报表模板&amp;ldquo;Detail_Cable_Schedule&amp;rdquo;进行编辑，选择&amp;ldquo;LENGTH&amp;rdquo;长度数据项，需要添加脚本对该数据进行处理。在右下&amp;ldquo;Property Grid&amp;rdquo;中，找到&amp;quot;Scripts&amp;quot;项。&lt;/p&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-04-10/BRCMReport2.jpg"&gt;&lt;img src="/resized-image/__size/940x0/__key/communityserver-wikis-components-files/00-00-00-04-10/BRCMReport2.jpg" alt=" " /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;展开&amp;quot;Scripts&amp;quot;项，选择&amp;ldquo;Before Print&amp;rdquo;创建新脚本：&lt;/p&gt;
&lt;p&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-04-10/BRCMReport3.jpg"&gt;&lt;img src="/resized-image/__size/940x0/__key/communityserver-wikis-components-files/00-00-00-04-10/BRCMReport3.jpg" alt=" " /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;3.&amp;nbsp;创建数据处理脚本&lt;/h3&gt;
&lt;p&gt;选择New后，系统自动打开脚本编辑功能，可以在其中添加脚本。以C#格式为例：&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana,geneva;"&gt;//定义电缆长度变量&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana,geneva;"&gt;System.Double cableLength = 0;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana,geneva;"&gt;//系统自动生成在显示报表前调用的函数&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana,geneva;"&gt;private void tableCell23_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana,geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //读取报表中初始电缆长度值，及系统返回的实际电缆长度值&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana,geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cableLength = System.Convert.ToDouble(GetCurrentColumnValue(&amp;quot;LENGTH&amp;quot;));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana,geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //对电缆长度按5的倍数向上取整&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana,geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cableLength = System.Math.Ceiling (cableLength/5) * 5;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana,geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //将取整后的电缆长度赋值给报表中的列&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana,geneva;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (sender as XRLabel).Text = cableLength.ToString();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana,geneva;"&gt;}&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span style="font-family:verdana,geneva;"&gt;4.&amp;nbsp;报表结果&lt;br /&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span style="font-family:verdana,geneva;"&gt;将脚本保存后，运行修改后的报表模板：&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana,geneva;"&gt;&lt;a href="/cfs-file/__key/communityserver-wikis-components-files/00-00-00-04-10/BRCMReport4.jpg"&gt;&lt;img src="/resized-image/__size/940x0/__key/communityserver-wikis-components-files/00-00-00-04-10/BRCMReport4.jpg" alt=" " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana,geneva;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:verdana,geneva;"&gt;&lt;strong&gt;备注：这只是在报表模板定义中应用脚本实现工程需求的一个很小的示例，通过在报表模板中嵌入脚本，可以实现大量复杂的报表生成工作。在Bentley Substation的默认报表模板中，也存在了大量已经定义好的脚本实现各种不同功能，可以起到很好的参考作用。&amp;nbsp;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;

&lt;div style="font-size: 90%;"&gt;Tags: BRCM&lt;/div&gt;
</description></item></channel></rss>