wincc 面向对象的方法操作SqlServer数据库-1

已锁定

linjjl

  • 帖子

    3
  • 精华

    0
  • 被关注

    0

论坛等级:游民

注册时间:2017-08-10

普通 普通 如何晋级?

wincc 面向对象的方法操作SqlServer数据库-1

998

3

2022-05-14 09:49:11

     

偶然发现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()


在类里面调用了两个函数,一个获取日期,一个获取时间,此函数将获取的两个字符串拼接到一起


 

wincc 面向对象的方法操作SqlServer数据库-1 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有33067条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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