1.实验网络拓扑:
使用ENSP模拟器(版本V100R002C00 1.2.00.350)
2.实验需求:
属于vlan 10的C1能和属于vlan 20的C3、C4及R1通信
3.实验步骤:
A. IP地址及valn划分规划配置如下:
C1:ip地址为192.168.10.10/24 属于vlan 10
C2: ip地址为192.168.20.20/24属于vlan 20
C3: ip地址为192.168.10.30/24属于vlan 10
C4: ip地址为192.168.20.40/24属于vlan 20
Sw1: vlan10 的网关为192.168.10.1/24
vlan20 的网关为192.168.20.1/24
G0/0/3属于vlan100ip为201.100.100.1 /24
R1:G0/0/0 ip为201.100.100.2/24
B. 配置脚本:
1.交换机SW2的配置
l先在交换机上加VLAN 10 20,再设置接口传输模式为access口
<Huawei>sy
[Huawei]vlan bat 10 20 #批量加vlan10和20
[Huawei]int e0/0/1
[Huawei-Ethernet0/0/1]portlink-type ac
[Huawei-Ethernet0/0/1]port link-typeaccess #接口类型为access
[Huawei-Ethernet0/0/1]port defaultvlan 10 #让接口属于vlan10
[Huawei-Ethernet0/0/1]inte0/0/2
[Huawei-Ethernet0/0/2]portlink-type ac
[Huawei-Ethernet0/0/2]portlink-type access
[Huawei-Ethernet0/0/2]portde
[Huawei-Ethernet0/0/2]portdefault vlan 20
[Huawei-Ethernet0/0/2]intg0/0/1
[Huawei-GigabitEthernet0/0/1]port link-type trunk #将g0/0/1设为trunk 中继口
[Huawei-GigabitEthernet0/0/1]port trunk allow-pass vlan 1 10 20
#此中继接口允许vlan1 10 20的数据过,也称透传
l 用display vlan 查看配置结果如下图
l 给交换机SW2配IP地址和网关,便于远程管理
因为交换机的接口是二层接口不能陪IP,所以给交换机配IP只能为其VLAN虚拟口配IP
[Huawei]int vlan 1
[Huawei-Vlanif1]ip add192.168.1.254 24
[Huawei-Vlanif1]q
l 在华为模拟器上通过设默认路由的方式为其设置网关
[Huawei]ip route-s
[Huawei]ip route-static 0.0.0.0 0.0.0.0 192.168.1.1
[Huawei]
l 用display ip interface brief查看各接口配置
2.交换机SW3的配置
l 为交换机SW3配VLAN,接口传输模式为hybrid untagged模式,hybriduntagged模式不带标签相当于access模式,hybrid tagged模式带标签相当于trunk模式
<Huawei>sy
[Huawei]vlan bat 10 20
[Huawei]interface e0/0/3
[Huawei-Ethernet0/0/3]portlink-type hybrid #将接口类型设为hybrid混合接口,华为三层交换机接口默认就是hybrid,属于这条命令可以不用写
[Huawei-Ethernet0/0/3]port hybridpvid vlan 10
[Huawei-Ethernet0/0/3]porthy
[Huawei-Ethernet0/0/3]porthybrid un
[Huawei-Ethernet0/0/3]porthybrid untagged
[Huawei-Ethernet0/0/3]porthybrid untagged vlan 10 #允许vlan10 的数据过且不带标签
[Huawei-Ethernet0/0/3]inte0/0/4
[Huawei-Ethernet0/0/4]porthybrid pvid vlan 20
[Huawei-Ethernet0/0/4]porthybrid un
[Huawei-Ethernet0/0/4]porthybrid untagged vlan 20
[Huawei-Ethernet0/0/4]
[Huawei-Ethernet0/0/4]intg0/0/1
[Huawei-GigabitEthernet0/0/1]porthybrid pvid vlan 10
[Huawei-GigabitEthernet0/0/1]porthybrid pvid vlan 20 <
在上讲中《ActiveReports 9实战教程(1): 手把手搭建环境Visual Studio 2013 社区版》,我们已经结合Visual Studio 2013搭建好了ActiveReports 9的开发环境,并完成了一个Hello World的RDL报表。 在本文,我们通过配置数据源进行报表实战,做过报表开发的报表达人知道,报表中的数据源分设计时数据源和运行时数据源。 如何理解呢?
这2类数据源,表结构是一样的,用途不一样:
1 设计时数据源,用于研发内部、报表小组进行配置、测试报表用。
2 运行时数据源,用于系统割接后在局方现场运行报表系统,如修改链接数据库的字符串。
从上面2点可看出,设计时数据源的运行比较广:配置报表、测试、运行报表。而运行时数据库切换数据库链接字符串即可无缝实现数据源在用户现场部署,相对比较容易。
下面用NWind_CHS.mdb数据源进行实战(AR9安装后,自带的数据源C:\Users\rogerwang\Documents\ComponentOne Samples\ActiveReports 9\Data\NWIND.mdb)。
通过"视图--其他窗口--报表资源管理器 V9",然后基于上讲的RdlReport1.rdlx文件,双击rdlx文件。
右键,添加数据源
在新创建的数据源DataSource1,右键添加数据集。
在弹出的添加数据集中,有2种办法添加数据。
方法一: 直接写SQL。 这种方式适合程序员、SQL比较强的人, 效率高。
方法二: 通过AR9新提供的VQD进行(可视化查询设计器)。这种方法适合产品经理、需求分析师等对技术不细究的人,灵活。
这里重点说一下方法二:VQD。
可视化查询设计器(VQD)包含以下关键特性:
-
过滤数据
-
使用自定义表达式
-
从数据库选择字段
-
分组和合计函数
-
使用内连接,左外连接和右外连接
-
设置已选字段和数据表的别名
-
数据排序和更多特性
生成的SQL语句:
select Products.*, Categories.* from Products inner join Categories on Products.CategoryID = Categories.CategoryID
如分别拖动Description、ProductID到报表,预览结果:
至此,完成了运行时数据源的添加,AR提供的配置数据源功能,非常灵活和方便,可有效的提高报表开发效率。
我们在设计时配置的数据源,如果要迁移到用户现场,则需要可以动态修改数据源以适配用户的数据源环境。
可通过代码实现数据源切换(备注:数据库表结构是一模一样的)
private void 运行时数据源区域报表ToolStripMenuItem_Click(object sender, EventArgs e) { SectionReport_DataSource_RunTime sReport1 = new SectionReport_DataSource_RunTime(); sReport1.DataSource = GetDataSource(); sReport1.Run(); viewer1.Document = sReport1.Document; } private DataTable GetDataSource() { DataTable dt = new DataTable(); dt.Columns.Add("产品编号"); dt.Columns.Add("产品名称"); dt.Columns.Add("单价"); dt.Columns.Add("库存量"); dt.Rows.Add("A10002", "苹果", 20, 50); dt.Rows.Add("A15681", "香蕉", 20, 50); dt.Rows.Add("A15681", "菠萝", 20, 50); return dt; }
在运行时通过 DataSource 属性设置数据源
private void 运行时数据源页面报表ToolStripMenuItem_Click(object sender, EventArgs e) { GrapeCity.ActiveReports.PageReport pReport1 = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo("PageReport_DataSource_RunTime.rdlx")); viewer1.LoadDocument(pReport1.Document); } private void Form1_Load(object sender, EventArgs e) { viewer1.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(viewer1_LocateDataSource); } void viewer1_LocateDataSource(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args) { if (args.DataSourceName == "DataSource1") { if (args.DataSetName == "DataSet1") { args.Data = GetDataSource(); } } } private DataTable GetDataSource() { DataTable dt = new DataTable(); dt.Columns.Add("产品编号"); dt.Columns.Add("产品名称"); dt.Columns.Add("单价"); dt.Columns.Add("库存量"); dt.Rows.Add("A10002", "苹果", 20, 50); dt.Rows.Add("A15681", "香蕉", 20, 50); dt.Rows.Add("A15681", "菠萝", 20, 50); return dt; }
在运行时通过 LocateDataSource 事件加载数据源。
最后,顺便说一下:ActiveReport 可以和多种数据源交互,包括OLEDB, SQL, XML,Oracle、Sybase、Informix、SQL Server等。
参考的官方博客:
没有评论:
发表评论