Wincc V7.3 MSHFGrid数据显示的格式问题
我们在Wincc中使用MSHFGrid控件时,有时候读取上来的数据显示出来是这个样子的。
读取出来的数据有的整数部分0被舍去,有的小数位数太多很难看,这样我们就需要在读取数据表的时候对数据格式做一下处理,读取数据表的方式也需要做一下修改。下面就介绍如何处理数据显示乱的问题。
一 准备工作
假设SQL Server中有这样一张表。
它的数据是这个样子:
可以看出,原表中有0,有恨小的数据,有小数位数多的数据。
Wincc页面中放置一个MSHFGrid控件,名字修改为MSHFGrid,放置一个按钮,按钮鼠标点击事件中写入一下VBS代码
Sub OnClick(ByVal Item)
Dim conn
Dim ssql
Dim ors
Dim ocom
Dim scon
Dim MSHFGrid
Dim ADODC
Dim PCName
Dim i,j
PCName=HMIRuntime.Tags(\"@LocalMachineName\").Read
scon=\"Provider = SQLOLEDB.1;Integrated Security=SSPI;Persist Catalog =MyDB;Data Source = \" &PCName & \"\\WINCC\"
ssql=\"select * from NumberFormat\"
Set conn=CreateObject(\"ADODB.Connection\")
conn.ConnectionString=scon
conn.Cursorlocation=3
conn.open
Set ors=CreateObject(\"ADODB.RecordSet\")
Set ocom=CreateObject(\"ADODB.Command\")
ocom.commandtype=1
Set ocom.ActiveConnection=conn
ocom.CommandText=ssql
SecurityInfo=False;Initial
Set ors=ocom.Execute
Set MSHFGrid=ScreenItems(\"MSHFGrid\")
'MSHFGrid表格大小处理
MSHFGrid.cols=ors.fields.count+1
MSHFGrid.Rows=ors.recordcount+1
'MSHFGrid 表头处理
MSHFGrid.TextMatrix(0,1)=\"日期时间\"
MSHFGrid.TextMatrix(0,2)=\"流量\"
MSHFGrid.TextMatrix(0,3)=\"压力\"
MSHFGrid.TextMatrix(0,4)=\"液位\"
MSHFGrid.TextMatrix(0,5)=\"电流\"
'处理数据显示格式,数据库中.fields编号从0开始
ors.movefirst '从第一条记录开始
'第一列日期时间
For i=1 To ors.recordcount
MSHFGrid.TextMatrix(i,1)=ors.fields(0) '日期时间不需要格式处理
ors.movenext '下一条记录
Next
ors.movefirst
For i=1 To ors.recordcount
For j=2 To ors.fields.count
MSHFGrid.TextMatrix(i,j)=Formatnumber(ors.fields(j-1),2,-1)
Next
ors.movenext '下一条记录
Next
MSHFGrid.Refresh
MSHFGrid.colwidth(1)=2500
Set ors=Nothing
conn.close
Set conn=Nothing
End Sub
'重要的函数Formatnumber使用了三个参数,第一个是要转换的数字,第二个是保留几位小数,第三个是设定是否需要对整数部分为0时显示0(-1 显示0, 0不显示,1根据操作系统设定)
保存运行,现在的效果是这样子:
因篇幅问题不能全部显示,请点此查看更多更全内容