偶然发现wincc的VBS脚本竟然支持面向对象,废了一番功夫将wincc操作数据库的函数重新封装成类,由于函数比较多,一篇文章更新不完,本篇先介绍类的属性和获取时间日期字符串的函数 , 从今天起介绍的所有类的函数都包含在DATABASE类里面
DATABASE类具体结构如下
Class DATABASE
'变量声明
'属性
'函数1
'函数2
'函数3
End Class
在函数之前,首先声明了一些内部变量 如下
Private N_sql,N_DBname, N_TBname, N_rowcount, N_colucount,N_relaarr()
N_sql:sql语句
N_DBname:数据库名称
N_TBname:表名称
N_rowcount:select 语句查询的行数
N_colucount:select语句查询的列数
N_relaarr():select查询的结果集,是个数组
接下来是属性,属性定义了外部可以访问哪些内部变量
'允许外部获取 查询的条数
Public Property Get RowCount
RowCount = N_rowcount
End Property
'允许外部获取 查询的列数
Public Property Get ColuCount
ColuCount = N_colucount
End Property
'允许外部获取 查询的结果集
Public Property Get RelaArr
RelaArr = N_relaarr
End Property
'允许外部获取 字符串
Public Property Get sql
sql = N_sql
End Property
属性就是类里面内部变量赋值给外部变量,我们可以用以下的方式得到它们,例如我在wincc画面下新建一个按钮,写下如下语句
Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)
Dim mydata '声明变量
Set mydata=New DATABASE '实例化变量
Msgbox(mydata.RowCount) '用弹窗显示得到的行数
Msgbox(mydata.ColuCount)
End Sub
运行以上代码的到的数据都为0,因为没有执行任何的查询语句,以上只是作为示例
接下来是需要外部指定的属性,用来指定操作哪个数据库或者表
'设置数据库名称
Public Property Let DBname(New_dbname)
N_DBname = New_dbname
End Property
'设置数据库表名称
Public Property Let TBname(New_tbname)
N_TBname = New_tbname
End Property
我们可以在按钮脚本里用以下方式指定操作的数据库或者表
Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)
Dim mydata '声明变量
Set mydata=New DATABASE '实例化对象
mydata.DBname="AAAA" '操作AAAA数据库
mydata.DBname="table_1" ' 指定表明称
mydata.CreateTable() ' 执行函数,将在AAA下创建 名称为table_1的表
End Sub
CreateTable()是原先封装好的函数,用来创建表
接下来是类的初始化,初始化查询的行和列赋值为0
'初始化
Private Sub Class_Initialize()
N_rowcount=0
N_coluname=0
End Sub
接下来是获取时间日期的三个函数
'获取字符创形式的日期时间
Function GetStrDataTime
GetStrDataTime=GetStrData()+" "+GetStrTime()
End Function
'获取字符创形式的日期
Function GetStrData
GetStrData= CStr(Year(Now))+"-"+CStr(Month(Now))+"-"+CStr(Day(Now))
End Function
'获取字符创形式的时间
Function GetStrTime
GetStrTime= CStr(Hour(Now))+":"+CStr(Minute(Now))+":"+CStr(Second(Now))
End Function
我们可以用以下方式获取返回值
Sub OnLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)
Dim mydata ,dat,tim,dt '声明变量
Set mydata=New DATABASE '实例化对象
dat=mydata.GetStrData() '字符串形式的日期赋值给内部变量dat
tim=mydata.GetStrTime() '字符串形式的时间赋值给内部变量dat
dt=mydata.GetStrDataTime() '字符串形式的日期时间赋值给内部变量dat
End Sub
其中获取日期时间的函数 GetStrDataTime=GetStrData()+" "+GetStrTime()
在类里面调用了两个函数,一个获取日期,一个获取时间,此函数将获取的两个字符串拼接到一起