wincc与数据库sql server之间的数据存储

这里写自定义目录标题

实现目标:1、把wincc中变量,存储到SQL数据库中

                  2、查询数据库内容,在控件中显示

 

步骤:1、软件wincc 7.3、wincc安装自带的sql server 2008 R2 

2、新建数据库

3、新建wincc项目--变量建立

4、所用到的控件

5、画面打开脚本:主要实现最新数据显示、连接数据库、控件设置等


 
 
  1. Sub OnOpen()
  2. Dim kj1,kj2,kj3,kj4,kj5,kj6
  3. Dim QR
  4. Dim MSFlexGrid1 '对应表格控件名称
  5. Dim LocalBeginTime, LocalEndTime,riqi
  6. Dim oRs,oRs1,n,n1,i,z,s1,s11,oCom,oCom1,strcn,conn,pj
  7. Dim zxy1
  8. '查询当天全部数据,除了控件名称要注意修改外,以上其他为标准
  9. Set MSFlexGrid1 = ScreenItems( "aaaa") '对应表格控件名称
  10. riqi = Now
  11. LocalBeginTime = Year(riqi) & "-" & Month(riqi) & "-" & Day(riqi) & "" & "00:00:00"
  12. LocalEndTime = Year(riqi) & "-" & Month(riqi) & "-" & Day(riqi) & "" & "23:59:59"
  13. s1 = "SELECT DT,name,a,b,c,d,e FROM en WHERE DT BETWEEN '" & LocalBeginTime & "' And '" & LocalEndTime & "'ORDER BY DT"
  14. 's1后面的内容要对应数据库中列的内容,后面的DT与前面的DT要名称一致,enen要对应数据库列表名称dbo的名称
  15. strcn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist SecurityInfo=False;Initial Catalog=wang;Data Source=.\wincc"
  16. Set conn = CreateObject( "ADODB.Connection")
  17. conn.ConnectionString = strcn
  18. conn.CursorLocation = 3
  19. conn.Open
  20. 's1 = "SELECT DT,name,a,b,c,d,e FROM en WHERE DT BETWEEN '" & LocalBeginTime & "' And '" & LocalEndTime & "'ORDER BY DT"
  21. 'Set oRs = CreateObject("ADODB.Recordset")
  22. Set oRs = CreateObject( "ADODB.Recordset")
  23. Set oCom = CreateObject( "ADODB.Command")
  24. oCom.CommandType = 1
  25. Set oCom.ActiveConnection = conn
  26. oCom.CommandText = s1 '执行检索功能
  27. Set oRs = oCom.Execute
  28. 'n = oRs.RecordCount '获得检索到的总数
  29. 'HMIRuntime.Tags("I3").Write n
  30. MSFlexGrid1.Clear
  31. 'MSFlexGrid1.Rows = oRs.RecordCount + 2
  32. MSFlexGrid1.ColWidth( 0) = 1500
  33. MSFlexGrid1.ColWidth( 1) = 2000
  34. MSFlexGrid1.ColWidth( 2) = 1500
  35. MSFlexGrid1.ColWidth( 3) = 1500
  36. MSFlexGrid1.ColWidth( 4) = 1500
  37. MSFlexGrid1.ColWidth( 5) = 1500
  38. MSFlexGrid1.ColWidth( 6) = 1500
  39. MSFlexGrid1.ColWidth( 7) = 1500
  40. MSFlexGrid1.RowHeight( 0) = 1200
  41. MSFlexGrid1.RowHeight( 1) = 600
  42. MSFlexGrid1.Row = 0
  43. For z = 0 To 7
  44. MSFlexGrid1.CellFontSize = 12
  45. MSFlexGrid1.Col = z
  46. MSFlexGrid1. Text = "工况信息表"
  47. Next
  48. MSFlexGrid1.MergeCells = 4
  49. MSFlexGrid1.MergeRow( 0) = True
  50. MSFlexGrid1.Row = 1
  51. For z = 0 To 7
  52. MSFlexGrid1.Col = z
  53. MSFlexGrid1.CellBackColor = vbCyan
  54. Next
  55. MSFlexGrid1.TextMatrix( 1, 0) = "序号"
  56. MSFlexGrid1.TextMatrix( 1, 1) = "日期"
  57. MSFlexGrid1.TextMatrix( 1, 2) = "名称"
  58. MSFlexGrid1.TextMatrix( 1, 3) = "重量(kg)"
  59. MSFlexGrid1.TextMatrix( 1, 4) = "高度(mm)"
  60. MSFlexGrid1.TextMatrix( 1, 5) = "流量"
  61. MSFlexGrid1.TextMatrix( 1, 6) = "压力"
  62. MSFlexGrid1.TextMatrix( 1, 7 )= "温度"
  63. MSFlexGrid1.ColAlignment( 0) = 4
  64. MSFlexGrid1.ColAlignment( 1) = 4
  65. MSFlexGrid1.ColAlignment( 2) = 4
  66. MSFlexGrid1.ColAlignment( 3) = 4
  67. MSFlexGrid1.ColAlignment( 4) = 4
  68. MSFlexGrid1.ColAlignment( 5) = 4
  69. MSFlexGrid1.ColAlignment( 6) = 4
  70. MSFlexGrid1.ColAlignment( 7) = 4
  71. If (n > 0) Then
  72. oRs.MoveFirst
  73. i = 0
  74. Do While Not oRs.EOF
  75. n = n + 1
  76. MSFlexGrid1.TextMatrix(i+ 2, 0) = i
  77. MSFlexGrid1.TextMatrix(i+ 2, 1) = oRs.Fields( 0).Value
  78. MSFlexGrid1.TextMatrix(i+ 2, 2) = oRs.Fields( 1).Value
  79. MSFlexGrid1.TextMatrix(i+ 2, 3) = oRs.Fields( 2).Value
  80. MSFlexGrid1.TextMatrix(i+ 2, 4) = oRs.Fields( 3).Value
  81. MSFlexGrid1.TextMatrix(i+ 2, 5) = oRs.Fields( 4).Value
  82. MSFlexGrid1.TextMatrix(i+ 2, 6) = oRs.Fields( 5).Value
  83. MSFlexGrid1.TextMatrix(i+ 2, 7) = oRs.Fields( 6).Value
  84. i = i + 1
  85. oRs.MoveNext
  86. Loop
  87. conn.Close
  88. MSFlexGrid1.TopRow = MSFlexGrid1.Rows - 1
  89. Else
  90. MsgBox "您所查询的时段没有数据......"
  91. oRs.Requery
  92. conn.Close
  93. End If
  94. End Sub

6、全局动作--在控件中循环显示当前最新数据


 
 
  1. Function action
  2. Dim sCon,conn,oRs,n,i,s1,oCom,strcn,z
  3. Dim riqi,mazhi,qxlx,qxwz,ok
  4. Dim MSFlexGrid1
  5. Dim LocalBeginTime,LocalEndTime
  6. Dim R_JC,Weight,R_FC,GBD
  7. Dim J1
  8. Set J1 = HMIRuntime.Tags( "aa")
  9. J1.Read
  10. If J1.Read Then
  11. J1.Write 0
  12. Else
  13. J1.Write 1
  14. Set MSFlexGrid1 = HMIRuntime.Screens( "首页.画面窗口1:报表信息").ScreenItems( "aaaa")
  15. riqi = Now
  16. Dim name
  17. Set name = HMIRuntime.Tags( "name1")
  18. name.Read
  19. Dim R1
  20. Set R1 = HMIRuntime.Tags( "a")
  21. R1.Read
  22. Dim R2
  23. Set R2 = HMIRuntime.Tags( "b")
  24. R2.Read
  25. Dim R3
  26. Set R3 = HMIRuntime.Tags( "c")
  27. R3.Read
  28. Dim R4
  29. Set R4 = HMIRuntime.Tags( "d")
  30. R4.Read
  31. Dim R5
  32. Set R5 = HMIRuntime.Tags( "e")
  33. R5.Read
  34. If name.Value = "" Then
  35. Else
  36. 'sCon = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist SecurityInfo=False;Initial Catalog=wang;Data Source=.\wincc"
  37. 'Set conn = CreateObject("ADODB.Connection")
  38. 'conn.ConnectionString = sCon
  39. 'conn.CursorLocation = 3
  40. 'conn.Open
  41. 'Set oRs = CreateObject("ADODB.Recordset")
  42. 'Set oCom = CreateObject("ADODB.Command")
  43. 'oCom.CommandType = 1
  44. 'Set oCom.ActiveConnection = conn
  45. 's1 = "insert into en (DT,name,a,b,c,d,e) Values ( '"&riqi&"','"&name.Value&"','"&R1.Value&"','"&R2.Value&"','"&R3.Value&"','"&R4.Value&"','"&R5.Value&"')"
  46. 'conn.Execute s1
  47. 'conn.Close
  48. MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
  49. n = MSFlexGrid1.Rows
  50. MSFlexGrid1.TextMatrix(n- 1, 0) = n - 3
  51. MSFlexGrid1.TextMatrix(n- 1, 1) = riqi
  52. MSFlexGrid1.TextMatrix(n- 1, 2) = name.Value
  53. MSFlexGrid1.TextMatrix(n- 1, 3) = R1.Value
  54. MSFlexGrid1.TextMatrix(n- 1, 4) = R2.Value
  55. MSFlexGrid1.TextMatrix(n- 1, 5) = R3.Value
  56. MSFlexGrid1.TextMatrix(n- 1, 6) = R4.Value
  57. MSFlexGrid1.TextMatrix(n- 1, 7) = R5.Value
  58. MSFlexGrid1.TopRow = MSFlexGrid1.Rows - 1
  59. End If
  60. End If
  61. End Function

7、全局动作--往数据库中写数据


 
 
  1. Option Explicit
  2. Function action
  3. Dim sCon,conn,oRs,n,i,s1,oCom,strcn,z
  4. Dim riqi,mazhi,qxlx,qxwz,ok
  5. Dim MSFlexGrid1
  6. Dim LocalBeginTime,LocalEndTime
  7. Dim R_JC,Weight,R_FC,GBD
  8. Dim J1
  9. Set J1 = HMIRuntime.Tags( "aa")
  10. J1.Read
  11. If J1.Read Then
  12. J1.Write 0
  13. Else
  14. J1.Write 1
  15. 'Set MSFlexGrid1 = HMIRuntime.Screens("首页.画面窗口1:报表信息").ScreenItems("aaaa")
  16. riqi = Now
  17. Dim name
  18. Set name = HMIRuntime.Tags( "name1")
  19. name.Read
  20. Dim R1
  21. Set R1 = HMIRuntime.Tags( "a")
  22. R1.Read
  23. Dim R2
  24. Set R2 = HMIRuntime.Tags( "b")
  25. R2.Read
  26. Dim R3
  27. Set R3 = HMIRuntime.Tags( "c")
  28. R3.Read
  29. Dim R4
  30. Set R4 = HMIRuntime.Tags( "d")
  31. R4.Read
  32. Dim R5
  33. Set R5 = HMIRuntime.Tags( "e")
  34. R5.Read
  35. If name.Value = "" Then
  36. Else
  37. sCon = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist SecurityInfo=False;Initial Catalog=wang;Data Source=.\wincc"
  38. Set conn = CreateObject( "ADODB.Connection")
  39. conn.ConnectionString = sCon
  40. conn.CursorLocation = 3
  41. conn.Open
  42. Set oRs = CreateObject( "ADODB.Recordset")
  43. Set oCom = CreateObject( "ADODB.Command")
  44. oCom.CommandType = 1
  45. Set oCom.ActiveConnection = conn
  46. s1 = "insert into en (DT,name,a,b,c,d,e) Values ( '"&riqi& "','"&name.Value& "','"&R1.Value& "','"&R2.Value& "','"&R3.Value& "','"&R4.Value& "','"&R5.Value& "')"
  47. conn.Execute s1
  48. conn.Close
  49. 'MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1
  50. 'n = MSFlexGrid1.Rows
  51. 'MSFlexGrid1.TextMatrix(n-1,0) = n - 3
  52. 'MSFlexGrid1.TextMatrix(n-1,1) = riqi
  53. 'MSFlexGrid1.TextMatrix(n-1,2) = name.Value
  54. 'MSFlexGrid1.TextMatrix(n-1,3) = R1.Value
  55. 'MSFlexGrid1.TextMatrix(n-1,4) = R2.Value
  56. 'MSFlexGrid1.TextMatrix(n-1,5) = R3.Value
  57. 'MSFlexGrid1.TextMatrix(n-1,6) = R4.Value
  58. 'MSFlexGrid1.TextMatrix(n-1,7) = R5.Value
  59. 'MSFlexGrid1.TopRow = MSFlexGrid1.Rows - 1
  60. End If
  61. End If
  62. End Function

8、按时间检索数据--控件显示


 
 
  1. Sub OnClick( ByVal Item)
  2. Dim MSFlexGrid1
  3. Dim a1,a2,a3,a4,z
  4. Dim LocalBeginTime,LocalEndTime,riqi
  5. Dim oRs,n,i,s1,oCom,strcn,conn
  6. Dim kj4,kj5,kj6
  7. '以上其他为标准
  8. Set MSFlexGrid1 = ScreenItems( "qq") '对应表格控件名称
  9. Set a1 = ScreenItems( "sd")
  10. Set a2 = ScreenItems( "st")
  11. Set a3 = ScreenItems( "ed")
  12. Set a4 = ScreenItems( "et")
  13. 'riqi = Now
  14. LocalBeginTime = Year(a1.Value) & "-" & Month(a1.Value) & "-" & Day(a1.Value) & " " & Hour(a2.Value) & ":" & Minute(a2.Value) & ":" & Second(a2.Value)
  15. LocalEndTime = Year(a3.Value) & "-" & Month(a3.Value) & "-" & Day(a3.Value) & " " & Hour(a4.Value) & ":" & Minute(a4.Value) & ":" & Second(a4.Value)
  16. s1 = "SELECT DT,name,a,b,c,d,e FROM en WHERE DT BETWEEN '" & LocalBeginTime & "' And '" & LocalEndTime & "'ORDER BY DT"
  17. 's1后面的内容要对应数据库中列的内容,后面的DT与前面的DT要名称一致,enen要对应数据库列表名称dbo的名称
  18. strcn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist SecurityInfo=False;Initial Catalog=wang;Data Source=.\wincc"
  19. Set conn = CreateObject( "ADODB.Connection")
  20. conn.ConnectionString = strcn
  21. conn.CursorLocation = 3
  22. conn.Open
  23. Set oRs = CreateObject( "ADODB.Recordset")
  24. Set oCom = CreateObject( "ADODB.Command")
  25. oCom.CommandType = 1
  26. Set oCom.ActiveConnection = conn
  27. oCom.CommandText = s1 '执行检索功能
  28. Set oRs = oCom. Execute
  29. n = oRs.RecordCount '获得检索到的总数
  30. 'HMIRuntime.Tags("I3").Write n
  31. MSFlexGrid1.Clear
  32. MSFlexGrid1.Rows = oRs.RecordCount + 2
  33. MSFlexGrid1.ColWidth( 0) = 1500
  34. MSFlexGrid1.ColWidth( 1) = 2000
  35. MSFlexGrid1.ColWidth( 2) = 1500
  36. MSFlexGrid1.ColWidth( 3) = 1500
  37. MSFlexGrid1.ColWidth( 4) = 1500
  38. MSFlexGrid1.ColWidth( 5) = 1500
  39. MSFlexGrid1.ColWidth( 6) = 1500
  40. MSFlexGrid1.ColWidth( 7) = 1500
  41. MSFlexGrid1.RowHeight( 0) = 1200
  42. MSFlexGrid1.RowHeight( 1) = 600
  43. MSFlexGrid1.Row = 0
  44. For z = 0 To 7
  45. MSFlexGrid1.CellFontSize = 12
  46. MSFlexGrid1.Col = z
  47. MSFlexGrid1.Text = "工况信息表"
  48. Next
  49. MSFlexGrid1.MergeCells = 4
  50. MSFlexGrid1.MergeRow( 0) = True
  51. MSFlexGrid1.Row = 1
  52. For z = 0 To 7
  53. MSFlexGrid1.Col = z
  54. MSFlexGrid1.CellBackColor = vbCyan
  55. Next
  56. MSFlexGrid1.TextMatrix( 1, 0) = "序号"
  57. MSFlexGrid1.TextMatrix( 1, 1) = "日期"
  58. MSFlexGrid1.TextMatrix( 1, 2) = "名称"
  59. MSFlexGrid1.TextMatrix( 1, 3) = "重量(kg)"
  60. MSFlexGrid1.TextMatrix( 1, 4) = "高度(mm)"
  61. MSFlexGrid1.TextMatrix( 1, 5) = "流量"
  62. MSFlexGrid1.TextMatrix( 1, 6) = "压力"
  63. MSFlexGrid1.TextMatrix( 1, 7 )= "温度"
  64. MSFlexGrid1.ColAlignment( 0) = 4
  65. MSFlexGrid1.ColAlignment( 1) = 4
  66. MSFlexGrid1.ColAlignment( 2) = 4
  67. MSFlexGrid1.ColAlignment( 3) = 4
  68. MSFlexGrid1.ColAlignment( 4) = 4
  69. MSFlexGrid1.ColAlignment( 5) = 4
  70. MSFlexGrid1.ColAlignment( 6) = 4
  71. MSFlexGrid1.ColAlignment( 7) = 4
  72. If (n > 0) Then
  73. oRs.MoveFirst
  74. i = 0
  75. Do While Not oRs.EOF
  76. n = n + 1
  77. MSFlexGrid1.TextMatrix(i+ 2, 0) = i
  78. MSFlexGrid1.TextMatrix(i+ 2, 1) = oRs.Fields( 0).Value
  79. MSFlexGrid1.TextMatrix(i+ 2, 2) = oRs.Fields( 1).Value
  80. MSFlexGrid1.TextMatrix(i+ 2, 3) = oRs.Fields( 2).Value
  81. MSFlexGrid1.TextMatrix(i+ 2, 4) = oRs.Fields( 3).Value
  82. MSFlexGrid1.TextMatrix(i+ 2, 5) = oRs.Fields( 4).Value
  83. MSFlexGrid1.TextMatrix(i+ 2, 6) = oRs.Fields( 5).Value
  84. MSFlexGrid1.TextMatrix(i+ 2, 7) = oRs.Fields( 6).Value
  85. i = i + 1
  86. oRs.MoveNext
  87. Loop
  88. conn.Close
  89. MSFlexGrid1.TopRow = MSFlexGrid1.Rows - 1
  90. Else
  91. MsgBox "您所查询的时段没有数据......"
  92. oRs.Requery
  93. conn.Close
  94. End If
  95. End Sub

9、最终结果

 

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WinCC 7.5是西门子公司的一款专业的监控和数据管理软件,它可以与SQL Server数据库进行读操作。通过WinCC 7.5,我们可以使用现成的工具和功能来连接和管理SQL Server数据库,实现数据的读取和入。 首先,我们需要在WinCC 7.5中配置数据库连接。在WinCC Explorer中选择相应的项目,右键点击“数据库”节点,选择“添加数据库连接”来添加一个新的数据库连接。在弹出的对话框中,选择SQL Server数据库类型,并输入数据库的相关信息,如服务器名称、登录凭据等。完成配置后,我们可以在WinCC中使用该数据库连接。 在WinCC 7.5中读取SQL Server数据库数据通常使用VBScript等编程语言来实现。我们可以通过编脚本来执行查询语句,获取所需的数据,并进行相应的处理和展示。WinCC 7.5提供了可视化的编程环境,方便我们编和调试脚本。 除了读取数据外,WinCC 7.5还可以将数据SQL Server数据库。通过编相应的脚本,我们可以将实时数据、报警信息等数据库,实现数据存储和管理。根据需要,我们可以选择合适的方式来执行数据的批量入或逐条入。 总结来说,WinCC 7.5可以实现与SQL Server数据库的读操作。通过配置数据库连接、编脚本等方式,我们可以方便地读取和数据,并将其用于监控和数据管理等应用中。这使得WinCC 7.5成为了一个功能强大的工具,满足了广泛的监控和控制需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值