论文部分内容阅读
【摘 要】自动化主站系统升级时,需要把旧EMS系统数据库的数据迁移到新OCS系统数据库中,完成数据迁移工作后,为确保电网运行的安全性,同时减少新OCS系统建成后的远动调试工作量,需要对新数据库中的远动点表与旧数据库中的远动点表做比对,确保新、旧远动点表的一致性,但远动点表的数据量巨大,人工核对需要耗费大量时间。研制远动点表比对工具,实现新、旧远动点表自动比对,提高远动点表核对工作的效率与准确性。
本远动点表比对工具基于Excel Visual Basic开发,使用该工具可以很方便、快捷地核对新、旧远动点表的一致性,远动调试时可避免重复调试工作,大大减轻远动调试人员的工作量。
【关键词】远动点表;比对;Visual Basic
研究背景
目前湛江供电局正在进行新OCS系统建设,需要把旧EMS系统数据库的数据迁移到新OCS系统数据库中,完成数据迁移工作后,为确保电网运行的安全性,同时减少新OCS系统建成后的远动调试工作量,需要对新数据库中的远动点表与旧数据库中的远动点表做比对,确保新、旧远动点表的一致性,但远动点表的数据量巨大,其中遥信有94587条记录,遥测有30214条记录。
如果采用人工方式进行对比,按照自动化人员现有核查速度,完成所有厂站遥信点表核查大约需要27天,工作进展十分缓慢。而且人工核查工作完成质量难以保证,很难保证没有疏漏,导致厂站新旧点表中的差异遗留下来,对自动化系统安全稳定运行造成影响。因此,远动点表比对工具应运而生。
算法原理
点表比对工具主要实现的功能是:比对两张数据表是否一致,若一致,给出结论,若不一致,则需要通过颜色标注将不同之处明显指出来,并输出比对结果。
数据比对模块
数据比对模块实现的基本逻辑:(1)取出数据表1中一个主键;(2)在数据表2中使用find方法查找等值的主键;(3)若步骤(2)中找到该主键,则依次比较数据表1该行剩余单元格值和数据表2对应行对应单元格值是否一样,若不一样,则记录;(4)若步骤(2)中未找到,则表示数据表1存在该主键,而数据表2不存在该主键,则记录;(5)重复上述步骤(1)至(4),知道数据表1中所有数据被访问。(6)执行完以上步骤后还需取出数据表2中编号,查找数据表1中不存在数据,即重复以上步骤(1)(2)(3)(4)(5)。
相关代码如下:
shtResult.Range("A2:B"& Rows.Count).Clear
sht1.Range("A2:Z"& Rows.Count).Interior.Pattern = xlNone
sht2.Range("A2:Z"& Rows.Count).Interior.Pattern = xlNone
For row1 = 2 To sht1.Range("A1").CurrentRegion.Rows.Count
sNo = sht1.Cells(row1,1).Value
Set Rng = sht2.Range("A:A").Find(sNo,lookat:=xlWhole)
If Rng Is Nothing Then
shtResult.Cells(rowNew,1).Value = "'提示:表2沒有该值"& sNo
shtResult.Cells(rowNew,2).Value = "少第"& row1 &"行,已标橙色"
rowNew = rowNew + 1
sht1.Columns("A:Z").Rows(row1).Interior.Color = RGB(255,165,0)
Else
For column1 = 2 To sht1.Range("A1").CurrentRegion.Columns.Count
'获取find的单元格的行
row_Rng = Rng.Row
sCell1 = sht1.Cells(row1,column1).Value
sCell2 = sht2.Cells(row_Rng,column1).Value
If sCell1 <> sCell2 Then
shtResult.Cells(rowNew,1).Value = "提示:表1中第"& row1 &"行,第"& column1 &"列值和表2中第"& row_Rng &"行,第"& column1 &"列不一样,已标黄"
sht1.Cells(row1,column1).Interior.Color = RGB(255,255,0)
sht2.Cells(row_Rng,column1).Interior.Color = RGB(255,255,0)
rowNew = rowNew + 1
check_1 = check_1 + 1
End If
Next column1
End If
Next row1
For row1 = 2 To sht2.Range("A1").CurrentRegion.Rows.Count
sNo = sht2.Cells(row1,1).Value
Set Rng = sht1.Range("A:A").Find(sNo,lookat:=xlWhole)
本远动点表比对工具基于Excel Visual Basic开发,使用该工具可以很方便、快捷地核对新、旧远动点表的一致性,远动调试时可避免重复调试工作,大大减轻远动调试人员的工作量。
【关键词】远动点表;比对;Visual Basic
研究背景
目前湛江供电局正在进行新OCS系统建设,需要把旧EMS系统数据库的数据迁移到新OCS系统数据库中,完成数据迁移工作后,为确保电网运行的安全性,同时减少新OCS系统建成后的远动调试工作量,需要对新数据库中的远动点表与旧数据库中的远动点表做比对,确保新、旧远动点表的一致性,但远动点表的数据量巨大,其中遥信有94587条记录,遥测有30214条记录。
如果采用人工方式进行对比,按照自动化人员现有核查速度,完成所有厂站遥信点表核查大约需要27天,工作进展十分缓慢。而且人工核查工作完成质量难以保证,很难保证没有疏漏,导致厂站新旧点表中的差异遗留下来,对自动化系统安全稳定运行造成影响。因此,远动点表比对工具应运而生。
算法原理
点表比对工具主要实现的功能是:比对两张数据表是否一致,若一致,给出结论,若不一致,则需要通过颜色标注将不同之处明显指出来,并输出比对结果。
数据比对模块
数据比对模块实现的基本逻辑:(1)取出数据表1中一个主键;(2)在数据表2中使用find方法查找等值的主键;(3)若步骤(2)中找到该主键,则依次比较数据表1该行剩余单元格值和数据表2对应行对应单元格值是否一样,若不一样,则记录;(4)若步骤(2)中未找到,则表示数据表1存在该主键,而数据表2不存在该主键,则记录;(5)重复上述步骤(1)至(4),知道数据表1中所有数据被访问。(6)执行完以上步骤后还需取出数据表2中编号,查找数据表1中不存在数据,即重复以上步骤(1)(2)(3)(4)(5)。
相关代码如下:
shtResult.Range("A2:B"& Rows.Count).Clear
sht1.Range("A2:Z"& Rows.Count).Interior.Pattern = xlNone
sht2.Range("A2:Z"& Rows.Count).Interior.Pattern = xlNone
For row1 = 2 To sht1.Range("A1").CurrentRegion.Rows.Count
sNo = sht1.Cells(row1,1).Value
Set Rng = sht2.Range("A:A").Find(sNo,lookat:=xlWhole)
If Rng Is Nothing Then
shtResult.Cells(rowNew,1).Value = "'提示:表2沒有该值"& sNo
shtResult.Cells(rowNew,2).Value = "少第"& row1 &"行,已标橙色"
rowNew = rowNew + 1
sht1.Columns("A:Z").Rows(row1).Interior.Color = RGB(255,165,0)
Else
For column1 = 2 To sht1.Range("A1").CurrentRegion.Columns.Count
'获取find的单元格的行
row_Rng = Rng.Row
sCell1 = sht1.Cells(row1,column1).Value
sCell2 = sht2.Cells(row_Rng,column1).Value
If sCell1 <> sCell2 Then
shtResult.Cells(rowNew,1).Value = "提示:表1中第"& row1 &"行,第"& column1 &"列值和表2中第"& row_Rng &"行,第"& column1 &"列不一样,已标黄"
sht1.Cells(row1,column1).Interior.Color = RGB(255,255,0)
sht2.Cells(row_Rng,column1).Interior.Color = RGB(255,255,0)
rowNew = rowNew + 1
check_1 = check_1 + 1
End If
Next column1
End If
Next row1
For row1 = 2 To sht2.Range("A1").CurrentRegion.Rows.Count
sNo = sht2.Cells(row1,1).Value
Set Rng = sht1.Range("A:A").Find(sNo,lookat:=xlWhole)