在项目中需要在一定条件满足时,保存一些数据到数据库中,并可根据条件查询。考虑到WinCC6.2以后采用的就是SQL Server2005数据库,所以直接利用该数据库即可,通过SQL Server Management Studio(SSMS)可以创建自己的数据库,并按要求创建好表。

一、数据库连接

在SQL Server Management Studio(SSMS)中创建名为evcp的数据库,再创建名为evcp的表,然后根据需要创建Columns,在本项目中创建了norder(流水号)、pileno(桩号)、cardno(卡号)、operno(员工号)、energy(电量)、cost(金额)、period(时长)、rate(费率)、pdate(日期)和ptime(时间)。

在本项目中采用ODBC的方式连接数据库,首先在控制面板中创建好数据源,配置好SQL Server驱动数据源,命名为evcs。

二、数据写入

要求在一个状态量值为1的时候完成数据库的保存,等数据保存完后将状态量清0。

1、先在全局脚本VBS项目模块中创建函数savedata,代码如下:

Sub savedata
Dim objConnection
Dim objCommand
Dim objRecordset
Dim strConnectionString
Dim strSQL
Dim norder,pileno,cardno,operno,energy,cost,period,rate,pdate,ptimenorder=HMIRuntime.Tags("norder").Read
pileno= HMIRuntime.Tags("pileno").Read
cardno=HMIRuntime.Tags("cardno").Read
operno= HMIRuntime.Tags("operno").Read
energy= HMIRuntime.Tags("energy").Read
cost= HMIRuntime.Tags("cost").Read
period= HMIRuntime.Tags("period").Read
rate= HMIRuntime.Tags("rate").Read
pdate= HMIRuntime.Tags("pdate").Read
ptime= HMIRuntime.Tags("ptime").ReadstrConnectionString = "Provider=MSDASQL;DSN=evcs;UID=;PWD=;"
Set objConnection = CreateObject("ADODB.Connection")
objConnection.ConnectionString = strConnectionString
objConnection.OpenSet objRecordset = CreateObject("ADODB.Recordset")
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnectionstrSQL = "insert into evcp (norder,pileno,cardno,operno,energy,cost,period,rate,pdate,ptime) values ("&_
"'"&norder&"',"&_
"'"&pileno&"',"&_
"'"&cardno&"',"&_
"'"&operno&"',"&_
"'"&energy&"',"&_
"'"&cost&"',"&_
"'"&period&"',"&_
"'"&rate&"',"&_
"'"&pdate&"',"&_
"'"&ptime&"')"
'MsgBox (strSQL)
objCommand.CommandText = strSQL
objCommand.ExecuteSet objCommand = Nothing
objConnection.Close
Set objRecordset = Nothing
Set objConnection = Nothing
End Sub

2、在全局脚本VBS动作中创建1秒周期的周期性出发动作,并添加如下代码:

Option Explicit
Function action
Dim v1
v1=HMIRuntime.Tags("satuse").ReadIf v1 Then
Call savedata
HMIRuntime.Tags("satuse").Write 0
End if
End Function

这样当satuse值为1时系统自动保存数据

三、数据查询

数据的查询要复杂一些,需要用到MSFlexGrid控件、MS Form2 ComboBox控件和MS Form2 TextBox,这几个控件可以单独注册也可以安装VB6后自动添加。

在查询页面上添加打开页面执行脚本如下:

Sub OnOpen()
Dim MSFlexGrid1,cb1,tb1,tb2
Set MSFlexGrid1 = ScreenItems("控件1")
Set cb1 = ScreenItems("cb1")
Set tb1 = ScreenItems("tb1")
Set tb2 = ScreenItems("tb2")
MSFlexGrid1.ClearMSFlexGrid1.ColWidth(0) = 620
MSFlexGrid1.ColWidth(1) = 1500
MsFlexGrid1.ColWidth(2) = 1500
MSFlexGrid1.ColWidth(3) = 1500
MSFlexGrid1.ColWidth(4) = 1500
MSFlexGrid1.ColWidth(5) = 1500
MsFlexGrid1.ColWidth(6) = 1500
MSFlexGrid1.ColWidth(7) = 1500
MSFlexGrid1.ColWidth(8) = 1600
MSFlexGrid1.ColWidth(9) = 2000
MsFlexGrid1.ColWidth(10) = 2000MSFlexGrid1.TextMatrix(0,0) = "编号"
MSFlexGrid1.TextMatrix(0,1) = "流水号"
MSFlexGrid1.TextMatrix(0,2) = "桩号"
MSFlexGrid1.TextMatrix(0,3) = "卡号"
MSFlexGrid1.TextMatrix(0,4) = "操作员号"
MSFlexGrid1.TextMatrix(0,5) = "电量(度)"
MSFlexGrid1.TextMatrix(0,6) = "金额(元)"
MSFlexGrid1.TextMatrix(0,7) = "时长(分)"
MSFlexGrid1.TextMatrix(0,8) = "费率(元/度)"
MSFlexGrid1.TextMatrix(0,9) = "日期"
MSFlexGrid1.TextMatrix(0,10) = "时间"
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
MSFlexGrid1.ColAlignment(9) = 4
MSFlexGrid1.ColAlignment(10) = 4Dim i
For i= 1 To 39 Step 1
MSFlexGrid1.TextMatrix(i,0) = i
Nextcb1.Text="*"
cb1.AddItem "*"
cb1.AddItem "1"
cb1.AddItem "2"
tb1.Text="*"
tb2.Text="*"End Sub

这段代码主要是用来初始化控件的显示。

在查询按钮加入相应的代码实现三个键值(桩号、卡号、操作员号)条件组合的查询,代码如下:

Sub Click(Byval Item)
Dim objConnection
Dim objCommand
Dim objRecordset
Dim strConnectionString
Dim strSQL
Dim MSFlexGrid1,cb1,tb1,tb2
Dim i1,i2,cv1,cv2,cv3,cv
Set MSFlexGrid1 = ScreenItems("控件1")
Set cb1 = ScreenItems("cb1")
Set tb1 = ScreenItems("tb1")
Set tb2 = ScreenItems("tb2")'清除原有记录
For i1 = 1 To 39 Step 1
For i2=1 To 10 Step 1
MSFlexGrid1.TextMatrix(i1, i2) =""
Next
NextstrConnectionString = "Provider=MSDASQL;DSN=evcs;UID=;PWD=;"
Set objConnection = CreateObject("ADODB.Connection")
objConnection.ConnectionString = strConnectionString
objConnection.Open
Set objRecordset = CreateObject("ADODB.Recordset")
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnectioncv1=0
cv2=0
cv3=0
If cb1.Text<>"*" Then
cv1=4
End IfIf tb1.Text<>"*" Then
cv2=2
End ifIf tb2.Text<>"*" Then
cv3=1
End If
cv=cv1+cv2+cv3
Select Case cv
Case 7
strSQL = "select * from evcp where pileno like '"&cb1.Text&"'And cardno like '"&tb1.Text&"'And operno like '"&tb2.Text&"'"
Case 6
strSQL = "select * from evcp where pileno like '"&cb1.Text&"'And cardno like '"&tb1.Text&"'"
Case 5
strSQL = "select * from evcp where pileno like '"&cb1.Text&"'And operno like '"&tb2.Text&"'"
Case 4
strSQL = "select * from evcp where pileno like '"&cb1.Text&"'"
Case 3
strSQL = "select * from evcp where cardno like '"&tb1.Text&"'And operno like '"&tb2.Text&"'"
Case 2
strSQL = "select * from evcp where cardno like '"&tb1.Text&"'"
Case 1
strSQL = "select * from evcp where operno like '"&tb2.Text&"'"
Case Else
strSQL = "select * from evcp"
End SelectobjCommand.CommandText = strSQLSet objRecordset = objCommand.ExecuteDim i
i=0If (objRecordset.Bof And objRecordset.Eof) Then
MsgBox("没有符合要求的记录")
Else
While Not objRecordset.EOF
i=i+1
MSFlexGrid1.TextMatrix(i, 1) = CStr(objRecordset.Fields(0).Value)
MSFlexGrid1.TextMatrix(i, 2) = CStr(objRecordset.Fields(1).Value)
MSFlexGrid1.TextMatrix(i, 3) = CStr(objRecordset.Fields(2).Value)
MSFlexGrid1.TextMatrix(i, 4) = CStr(objRecordset.Fields(3).Value)
MSFlexGrid1.TextMatrix(i, 5) = CStr(objRecordset.Fields(4).Value)
MSFlexGrid1.TextMatrix(i, 6) = CStr(objRecordset.Fields(5).Value)
MSFlexGrid1.TextMatrix(i, 7) = CStr(objRecordset.Fields(6).Value)
MSFlexGrid1.TextMatrix(i, 8) = CStr(objRecordset.Fields(7).Value)
MSFlexGrid1.TextMatrix(i, 9) = CStr(objRecordset.Fields(8).Value)
MSFlexGrid1.TextMatrix(i, 10) = CStr(objRecordset.Fields(9).Value)
objRecordset.movenext
Wend
End IfSet objCommand = Nothing
objConnection.Close
Set objRecordset = Nothing
Set objConnection = NothingEnd Sub

欢迎关注:

PC软件开发技术之一:在WinCC中通过VBS操作SQL Server2005相关推荐

  1. 软件开发技术常用术语英中对照

    软件开发技术常用术语英中对照 A.I. 人工智能 A2A integration A2A整合 abstract 抽象的 abstract base class (ABC)抽象基类 abstract c ...

  2. 转载:软件开发技术常用术语英中对照

    原文: http://www.blogjava.net/mlh123caoer/archive/2007/08/26/139506.html A.I. 人工智能 A2A integration A2A ...

  3. PC软件开发技术之三:C#操作SQLite数据库

    我们在开发应用是经常会需要用到一些数据的存储,存储的方式有多种,使用数据库是一种比较受大家欢迎的方式.但是对于一些小型的应用,如一些移动APP,通常的数据库过于庞大,而轻便的SQLite则能解决这一问 ...

  4. PC软件开发技术之二:用C#开发基于自动化接口的OPC客户端

    OPC全称是Object Linking and Embedding(OLE) for Process Control,它的出现为基于Windows的应用程序和现场过程控制应用建立了桥梁.OPC作为一 ...

  5. 盘点直播直播平台软件开发技术中的编解码、直播协议、网络传输与简单实现

    盘点直播直播平台软件开发技术中的编解码.直播协议.网络传输与简单实现 编解码 视频封装格式就是我们通常所说的 .mp4,.flv,.ogv,.webm 等,它其实就是一个盒子,用来将实际的视频流以一定 ...

  6. 点评主流软件开发技术

    为什么80%的码农都做不了架构师?>>>    点评主流软件开发技术 http://soft.chinabyte.com/297/8698297.shtml ■ 河北秦皇岛 谷俭政 ...

  7. 2020年度总结 | 葡萄城软件开发技术回顾

    本文由葡萄城技术团队原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 2020年是不平凡的一年,虽然疫情为整个社会都带来了巨大的冲击,但IT技术人 ...

  8. 2021年度总结 | 葡萄城软件开发技术回顾(下)

    2021年度总结 | 葡萄城软件开发技术回顾(下) 在上节中,我们介绍了在过去一年中葡萄城在控件领域中的一些新探索,新尝试. (详细内容:https://www.cnblogs.com/powerto ...

  9. html5脑图_基于HTML5的三维思维导图软件开发技术研究

    龙源期刊网 http://www.qikan.com.cn 基于 HTML5 的三维思维导图软件开发技术 研究 作者:汪升华 唐国纯 来源:<软件工程> 2017 年第 10 期 摘 要: ...

最新文章

  1. linux用户在哪个文件夹,LINUX中用命令成功建立一个用户后信息会记录在哪个文件中...
  2. CUBLAS_STATUS_ALLOC_FAILED CUDA_ERROR_OUT_OF_MEMORY
  3. input 只能输入数字
  4. TensorFlow:实战Google深度学习框架(四)MNIST数据集识别问题
  5. 多用户远程连接mysql_Mysql权限控制 - 允许用户远程连接
  6. Python Numpy 数组的初始化和基本操作
  7. WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 解决方案以及如何实现字体颜色的渐变...
  8. mysql修改存储引擎报错_修改mysql存储引擎备份数据库报错及解决方案
  9. Unable to establish loopback connection异常解决
  10. Spring之@Configuration配置解析
  11. Jmeter命令行执行并生成HTML报告
  12. 羽毛球 vs. 软件开发
  13. mysql insert on update_我可以始终使用INSERT…ON DUPLICATE UPDATE进行简单的更新/插入吗?...
  14. nps内网穿透_内网穿透工具:NPS的使用
  15. 转:jwgkvsq.vmx手工清除方法(针对病毒变种补充完整)
  16. 计算机考试有python吗_计算机二级考试有python吗
  17. python分号_python分号_python 分号_python加分号 - 云+社区 - 腾讯云
  18. 如何快速增长支付宝会员成长值
  19. HCIP-Routing Switching V2.5考试大纲
  20. 最大似然估计(Maximum Likelihood Estimation) - 机器学习基础

热门文章

  1. 【Tensorflow】小白入门实战基础篇(下)
  2. 【ACL2020】Reasoning with Latent Structure Refinement for Document-Level Relation Extraction
  3. Java总结:SpringBoot的使用cmd命令进行Gradle构建
  4. PHP 将Base64图片保存到 Sae storage
  5. C++ 空字符('\0')和空格符(' ')
  6. perl里面隐式的继承
  7. MS SQL入门基础:触发器概述
  8. Spring AOP解析
  9. 删除数据清理oracle表空间,oracle数据库删除无用表空间及数据文件过程
  10. jeecg输入中文查询导表为空_学术利器—SCI期刊影响因子查询/中文核心期刊查询系统更新...