打开画面创建表格VB脚本

已锁定

陈艳坡

  • 帖子

    2
  • 精华

    0
  • 被关注

    0

论坛等级:新手

注册时间:2021-01-20

普通 普通 如何晋级?

打开画面创建表格VB脚本

690

1

2023-06-29 13:39:26

Dim sCon,sSql,oRs,conn,oCom,Con,data1,data2,data3,data4,data5,data6,data7,riqi,MSFlexGrid1,z,i,n,f

'往表格里面写数据

Set MSFlexGrid1 = HMIRuntime.Screens("设备管理画面").ScreenItems("MyTable")

 

Con="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=读写;Data Source=.\WINCC"


Set conn = CreateObject("ADODB.Connection")


conn.ConnectionString = Con


conn.CursorLocation = 3


conn.Open

'Msgbox "hahahah"

sSql = "SELECT 日期,设备名称,设备代号,PLC_IP,开始运行时间,结束运行时间,设备状态,操作人员 FROM Persons1 order by 日期 asc "

Set oRs = CreateObject("ADODB.Recordset")

Set oCom = CreateObject("ADODB.Command")

Set oCom.ActiveConnection = conn

oCom.CommandType = 1

oCom.CommandText = sSql

Set oRs = oCom.Execute

n=oRs.RecordCount

'Msgbox n

MSFlexGrid1.Clear

MSFlexGrid1.Rows = oRs.RecordCount+2

MSFlexGrid1.ColWidth(0)=700 '第一列宽度设置

MSFlexGrid1.ColWidth(1)=2500

MSFlexGrid1.ColWidth(2)=2500

MSFlexGrid1.ColWidth(3)=2500

MSFlexGrid1.ColWidth(4)=2500

MSFlexGrid1.ColWidth(5)=3000

MSFlexGrid1.ColWidth(6)=3000

MSFlexGrid1.ColWidth(7)=2500

MSFlexGrid1.ColWidth(8)=2500

MSFlexGrid1.RowHeight(0)=600

MSFlexGrid1.RowHeight(1)=400

MSFlexGrid1.Rows = n+2

MSFlexGrid1.FixedRows = 2

MSFlexGrid1.ColWidth(1)=2500

MSFlexGrid1.Row = 0

For z = 1 To 8 '根据上面的列数改变

MSFlexGrid1.CellFontSize = 20 '字体大小

MSFlexGrid1.Col = z

MSFlexGrid1.Text = "设备管理"

Next


MSFlexGrid1.MergeCells = 4 '相同内容单元格合并(标题Text合并掉)

MSFlexGrid1.MergeRow(0) = True '合并单元格

MSFlexGrid1.Row = 1


For z = 0 To 8 '根据上面的列数改变

MSFlexGrid1.Col = z

MSFlexGrid1.CellBackColor = vbCyan '定义第二行颜色

Next


MSFlexGrid1.TextMatrix(1,0) = "序号" '根据实际情况输入

MSFlexGrid1.TextMatrix(1,1) = "日期"

MSFlexGrid1.TextMatrix(1,2) = "设备名称"

MSFlexGrid1.TextMatrix(1,3) = "设备代号"

MSFlexGrid1.TextMatrix(1,4) = "PLC_IP"

MSFlexGrid1.TextMatrix(1,5) = "开始运行时间"

MSFlexGrid1.TextMatrix(1,6) = "结束运行时间"

MSFlexGrid1.TextMatrix(1,7) = "设备状态"

MSFlexGrid1.TextMatrix(1,8) = "操作人员"

'对齐方式

MSFlexGrid1.ColAlignment(0) = 4

MSFlexGrid1.ColAlignment(1) = 4

MSFlexGrid1.ColAlignment(2) = 4

MSFlexGrid1.ColAlignment(3) = 4

MSFlexGrid1.ColAlignment(4) = 4

MSFlexGrid1.ColAlignment(5) = 4

MSFlexGrid1.ColAlignment(6) = 4

MSFlexGrid1.ColAlignment(7) = 4

MSFlexGrid1.ColAlignment(8) = 4

'查询数据,插入在线表格对应位置

If(n>0) Then


oRs.MoveLast '移动到数据库据检索结果的第一行

' If  (n>1) Then

' For f = 0 To 0

' oRs.MovePrevious

' Next 

' Else

For f = 0 To n-2

oRs.MovePrevious

Next

' End If

i=0

Do While Not oRs.EOF '是否到记录末尾,循环填写表格

MSFlexGrid1.TextMatrix(i+2,0) = i '序号

MSFlexGrid1.TextMatrix(i+2,1) = oRs.Fields(0).Value

MSFlexGrid1.TextMatrix(i+2,2) = oRs.Fields(1).Value

MSFlexGrid1.TextMatrix(i+2,3) = oRs.Fields(2).Value

MSFlexGrid1.TextMatrix(i+2,4) = oRs.Fields(3).Value

MSFlexGrid1.TextMatrix(i+2,5) = oRs.Fields(4).Value

MSFlexGrid1.TextMatrix(i+2,6) = oRs.Fields(5).Value

MSFlexGrid1.TextMatrix(i+2,7) = oRs.Fields(6).Value

MSFlexGrid1.TextMatrix(i+2,8) = oRs.Fields(7).Value

i = i+1

oRs.MoveNext

Loop

conn.Close

MSFlexGrid1.TopRow = MSFlexGrid1.Row-1 '移动到最后一行

Else

MsgBox "您所查询的时间段内没有数据"

oRs.Requery

End If


Set oRs = Nothing

conn.Close

Set conn = Nothing

以上脚本可靠能用

另有一个问题咨询一下大神   Wincc自带数据库中存储的数据都是非明文的,如何用VB脚本把报警数据及设备运行记录记录到新建数据库中


打开画面创建表格VB脚本 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32572条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。