使用VB或VBS访问WINCC6.0历史数据库(原创:工控网独此一页),建议版主加精,不然我就没动力了 点击:13161 | 回复:85



wincc123

    
  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2006-03-22 14:41:00
楼主
   从WINCC6.0开始,就开始采用SQL3000SP3做为WINCC的后台数据了.而这个SQL2000SP3是由SIEMENS为WINCC做了二次开发的,采用了一些独有的技术,一些是我们知道的,一些是我们所不知道的.所以当我们打开SQL管理器和用高级语言访问时,和常规的SQL访问的方法是有一些出入的.即使我们能够很轻易的访问ACCESS,普通的SQL2000的数据库,不见的你就能顺利的访问到WINCC的历史数据.

   官方的资料显示:
   1:WINCC的数据有设计时数据库和运行时数据库,分别放在相关的目录,对于数据使用者而言,我们知道就可以了.设计时数据库我们了解没有什么意义.但运行时数据库至少我们要知道它的名.他的名一般是"CC_工程名_年_月_日_时_分_秒R"的名,这个对于我们使用者而言,是很重要的的,无论你准备以DSN或OLEDB的方式访问数据库,你都需要它.如果你实在不知道它的名,你可以将WINCC激活,然后在'ODBC管理器"或"SQL企业管理器下的"DATABASE"可以看到它,它就蹲在那里.....
   2:运行时库的表的问题.
其实,这个是很多的用户很关心的问题,包括我自己在内.常规的使用过高级语言访问SQL的技术人员都知道,很多的SQL语句,如SELECT ,INSERT INTO等等,都需要指明在某一库的表中对它进行操作.因此,这个表的问题可能就是你访问SQL的拦路虎.
   先告诉大家:WINCC6.0的SQL库操作是不需要表名的,因为他有自己定义的SQL语句.细节一会儿在描述.
其实,WINCC在运行时,根据WINCC的设置,数据归档是以一定时间做为基准,形成数据片段.
大体上有三个用户需要了解的表.
(未完待续)
  



xumingjun

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2006年12月05日
发表于:2007-01-25 23:53:00
21楼
变量归档除了有个归档时间以外,还有一列尖括号显示的内容怎么看啊?

我行我素-2008

  • 精华:0帖
  • 求助:1帖
  • 帖子:6帖 | 92回
  • 年度积分:7
  • 历史总积分:372
  • 注册:2004年8月03日
发表于:2007-03-27 21:08:00
22楼
我是个新手本着学习的精神

tiantianxuexi

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 79回
  • 年度积分:0
  • 历史总积分:268
  • 注册:2005年12月01日
发表于:2007-04-13 09:29:00
23楼
我是个工控新手本着学习的精神,顶一把!!!这一块是工控人的弱点,也是工控人最需要最好的东西。希望有人能给出让初学者也能很容易学会的例子或文章。

fengle

  • 精华:0帖
  • 求助:0帖
  • 帖子:44帖 | 85回
  • 年度积分:0
  • 历史总积分:267
  • 注册:2007年8月30日
发表于:2007-09-06 15:04:00
24楼
我做了一下 ,但是一直都是提示有个未能指定的错误.愁死我了,我都打了七八遍,检查了好多遍,我就不知道 这给 未能指定的错误 到底在哪,不过我跟踪了一下程序,每次到 Execute 的时候就不执行了.检查了好多遍都不行,随能给一个完整并且运行通过的代码啊.

wincc123

  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2007-09-06 19:17:00
25楼
我的例子程序,自己看着办.一直在运行的东西

Dim StrBtime As String
Dim StrEtime As String
Dim errtime
Const UNIT = 0.03937 * 1440


Private Sub Command1_Click()
Call TimeConv
'**********************************************查询和显示数据*********************************************
If errtime > 0 Then

      Dim connstr, myconn, mysql
      connstr = "provider=winccoledbprovider.1;data source=.\wincc;catalog=cc_database_06_03_11_17_11_58R;user id=DBA,password=SQL;"
'*****************************************************************************************************
      mysql = "TAG:R,'DATABASE\produ','" + StrBtime + "','" + StrEtime + "'"
      mysql2 = "TAG:R,'DATABASE\tempu','" + StrBtime + "','" + StrEtime + "'"
      mysql3 = "TAG:R,'DATABASE\upq','" + StrBtime + "','" + StrEtime + "'"
'mysql4 = "TAG:R,'DATABASE\prodd','" + mytime1 + "','" + mytime2 + "'"
'mysql5 = "TAG:R,'DATABASE\tempd','" + mytime1 + "','" + mytime2 + "'"
'mysql6 = "TAG:R,'DATABASE\dnq','" + mytime1 + "','" + mytime2 + "'"

       Set myconn = CreateObject("adodb.connection")
       myconn.ConnectionString = connstr
       myconn.CursorLocation = 3
       myconn.Open
       

  If GetConState(myconn.State) = "adStateClosed" Then
       MsgBox "数据库连接不成功,可能是WINCC生产监控系统程序未激活,请先激活监控系统", vbOKCancel, "数据库连接错误"
       myconn.Close
       Exit Sub
  End If
      Set ors = CreateObject("adodb.recordset")
      Set orstemp = CreateObject("adodb.recordset")
      Set orsupq = CreateObject("adodb.recordset")
      Set ocom = CreateObject("adodb.command")
      ocom.CommandType = 1
      Set ocom.ActiveConnection = myconn
      ocom.CommandText = mysql
      Set ors = ocom.Execute

      m = ors.Fields.Count
      k = ors.RecordCount
      MSHFlexGrid1.rows = k + 2

     Set ocom2 = CreateObject("adodb.command")
     ocom2.CommandType = 1
     Set ocom2.ActiveConnection = myconn
     ocom2.CommandText = mysql2
     Set orstemp = ocom2.Execute

     Set ocom3 = CreateObject("adodb.command")
     ocom3.CommandType = 1
     Set ocom3.ActiveConnection = myconn
     ocom3.CommandText = mysql3
     Set orsupq = ocom3.Execute

  If (m > 0) Then
     ors.Move 0
     orstemp.Move 0
     orsupq.Move 0

     n = 1
     upq = 0
     pctime = DateAdd("h", 8, ors.Fields(1).Value)

       Do While Not ors.EOF
           pctime2 = DateAdd("h", 8, ors.Fields(1).Value) '修改显示记录的时间(格林威治时间)为本机时区
           MSHFlexGrid1.TextMatrix(n, 0) = pctime2
           MSHFlexGrid1.TextMatrix(n, 1) = ors.Fields(2).Value
           MSHFlexGrid1.TextMatrix(n, 2) = orstemp.Fields(2).Value
           MSHFlexGrid1.TextMatrix(n, 3) = orsupq.Fields(2).Value
           n = n + 1

           If (n > 10000) Then Exit Do

             If (orsupq.Fields(2).Value = 10) Then
                upq = upq + 1
             End If

         ors.MoveNext
         orstemp.MoveNext
         orsupq.MoveNext

       Loop
    percentok = FormatNumber((upq / k * 100), 1)

    prodnum(0).Text = k
    prodok(1).Text = upq
    prodper(0).Text = percentok
            End If
    ors.Close
    Set ors = Nothing
    orstemp.Close
    Set orstemp = Nothing
    orsupq.Close
    Set orsupq = Nothing

'**********************************************以上为读取序号的程序***************************

   myconn.Close
   Set myconn = Nothing

Else
   MsgBox "输入的时间不正确"
End If

End Sub

Private Sub Command2_Click()
'Call TimeConv
'MsgBox "查询的时间段为" & StrBtime & "到" & StrEtime
Dim rpt As New Report
Dim txt As clsText

rpt.SetPrinter 28000, 12000, Portrait
rpt.SetMargin 5 * UNIT, 10 * UNIT, 10 * UNIT, 10 * UNIT
rpt.AttachFlexGrid Me.MSHFlexGrid1

rpt.LeftSection.AlignMode = tyContent
rpt.RightSection.AlignMode = tyContent
rpt.Align = tymiddle
rpt.ReadTemplate App.Path & "\test.txt"
rpt.Preview

End Sub

Private Sub Form_Load()
Call AutoValue
Call MsflexGird1Init



End Sub
'********************************生成组合框的内容*******************************************
Public Sub AutoValue()

For i = 2006 To 2010
Byear.Item(0).AddItem (i)
Next

For i = 0 To 12
Bmon.Item(10).AddItem (i)
Next

For i = 0 To 31
Bday.Item(9).AddItem (i)
Next

For i = 0 To 23
Bhour.Item(8).AddItem (i)
Next

For i = 0 To 59
Bmin.Item(7).AddItem (i)
Next

For i = 0 To 59
Bsec.Item(6).AddItem (i)
Next


For i = 2006 To 2010
Eyear.Item(1).AddItem (i)
Next

For i = 0 To 12
Emon.Item(11).AddItem (i)
Next

For i = 0 To 31
Eday.Item(5).AddItem (i)
Next

For i = 0 To 23
Ehour.Item(4).AddItem (i)
Next

For i = 0 To 59
Emin.Item(3).AddItem (i)
Next

For i = 0 To 59
Esec.Item(2).AddItem (i)
Next

End Sub
'**********************转换本地时区为格林威治时间*******************************8
Public Sub TimeConv()

testby = IsNumeric(Byear.Item(0).Text)
 If Not testby Then
    MsgBox "你输入的年份不是数字型(起始时间段),请重新输入", vbOKCancel, "错误的起始时间"
    Byear.Item(0).SetFocus
    Exit Sub
 End If
Byeartext = Byear.Item(0).Text

testbm = IsNumeric(Bmon.Item(10).Text)
 If Not testbm Then
    MsgBox "你输入的月份不是数字型(起始时间段),请重新输入", vbOKCancel, "错误的起始时间"
    Bmon.Item(10).SetFocus
    Exit Sub
 End If
BmonText = Bmon.Item(10).Text

testbd = IsNumeric(Bday.Item(9).Text)
 If Not testbd Then
   MsgBox "你输入的日期不是数字型(起始时间段),请重新输入", vbOKCancel, "错误的起始时间"
   Bday.Item(9).SetFocus
   Exit Sub
 End If
BdayText = Bday.Item(9).Text

testbh = IsNumeric(Bhour.Item(8).Text)
 If Not testbh Then
    MsgBox "你输入的小时数不是数字型(起始时间段),请重新输入", vbOKCancel, "错误的起始时间"
    Bhour.Item(8).SetFocus
    Exit Sub
 End If
BhourText = Bhour.Item(8).Text

testbm = IsNumeric(Bmin.Item(7).Text)
 If Not testbm Then
    MsgBox "你输入的分钟数不是数字型(起始时间段),请重新输入", vbOKCancel, "错误的起始时间"
    Bmin.Item(7).SetFocus
    Exit Sub
 End If
BminText = Bmin.Item(7).Text

testbs = IsNumeric(Bsec.Item(6).Text)
 If Not testbs Then
    MsgBox "你输入的秒数不是数字型(起始时间段),请重新输入", vbOKCancel, "错误的起始时间"
    Bsec.Item(6).SetFocus
    Exit Sub
 End If
BsecText = Bsec.Item(6).Text

testey = IsNumeric(Eyear.Item(1).Text)
 If Not testey Then
    MsgBox "你输入的年份不是数字型(终止时间段),请重新输入", vbOKCancel, "错误的终止时间"
    Eyear.Item(1).SetFocus
    Exit Sub
 End If
EyearText = Eyear.Item(1).Text

testem = IsNumeric(Emon.Item(11).Text)
 If Not testem Then
    MsgBox "你输入的月份不是数字型(终止时间段),请重新输入", vbOKCancel, "错误的终止时间"
    Emon.Item(11).SetFocus
    Exit Sub
 End If
EmonText = Emon.Item(11).Text

tested = IsNumeric(Eday.Item(5).Text)
 If Not tested Then
    MsgBox "你输入的日期不是数字型(终止时间段),请重新输入", vbOKCancel, "错误的起始时间"
    Eday.Item(5).SetFocus
    Exit Sub
 End If
EdayText = Eday.Item(5).Text

testeh = IsNumeric(Ehour.Item(4).Text)
 If Not testeh Then
    MsgBox "你输入的小时数不是数字型(终止时间段),请重新输入", vbOKCancel, "错误的终止时间"
    Ehour.Item(4).SetFocus
    Exit Sub
 End If
EhourText = Ehour.Item(4).Text

testemi = IsNumeric(Emin.Item(3).Text)
 If Not testemi Then
    MsgBox "你输入的分钟数不是数字型(终止时间段),请重新输入", vbOKCancel, "错误的终止时间"
    Emin.Item(3).SetFocus
    Exit Sub
 End If
EminText = Emin.Item(3).Text

testes = IsNumeric(Esec.Item(2).Text)
 If Not testes Then
    MsgBox "你输入的秒数不是数字型(终止时间段),请重新输入", vbOKCancel, "错误的终止时间"
    Esec.Item(2).SetFocus
    Exit Sub
 End If
EsecText = Esec.Item(2).Text

BeginDatetime = Byeartext + "-" + BmonText + "-" + BdayText + " " + BhourText + ":" + BminText + ":" + BsecText
EndDatetime = EyearText + "-" + EmonText + "-" + EdayText + " " + EhourText + ":" + EminText + ":" + EsecText


errtime = DateDiff("s", BeginDatetime, EndDatetime)
If errtime <= 0 Then
MsgBox "查询的时间段不正确:终止时间小于起始时间", vbOKCancel, "错误的时间差"
End If

If BhourText >= 8 Then
       Subhour = CInt(BhourText) - 8
       BeginNewday = DateDiff("d", 0, BeginDatetime)
    Else
       Subhour = CInt(BhourText) + 16
       BeginNewday = DateDiff("d", 1, BeginDatetime)
    End If
      Strsubhour = CStr(Subhour) '根据时间是否大于等于8决定日期是否-1,做为新的起始时间
      TbeginNewday = CDate(BeginNewday) '根据时间是否大于等于8决定日期是否-1,做为新的起始日期
      SbeginNewday = CStr(TbeginNewday) 'convert datetime to char array
      Newbtime = Strsubhour + ":" + BminText + ":" + BsecText
      Newdatetimeb = SbeginNewday + " " + Newbtime
      StrBtime = CStr(Newdatetimeb) '得到校正的格林威治时间(开始查询时间)
      
      
If EhourText >= 8 Then
       SubhourE = CInt(EhourText) - 8
       EndNewday = DateDiff("d", 0, EndDatetime)
    Else
       SubhourE = CInt(EhourText) + 16
       EndNewday = DateDiff("d", 1, EndDatetime)
    End If
      StrsubhourE = CStr(SubhourE) '根据时间是否大于等于8决定日期是否-1,做为新的起始时间
      TendNewday = CDate(EndNewday) '根据时间是否大于等于8决定日期是否-1,做为新的起始日期
      SendNewday = CStr(TendNewday) 'convert datetime to char array
      NewbtimeE = StrsubhourE + ":" + EminText + ":" + EsecText
      NewdatetimeE = SendNewday + " " + NewbtimeE
      StrEtime = CStr(NewdatetimeE) '得到校正的格林威治时间(开始查询时间)
      
      
End Sub

Public Sub MsflexGird1Init()

MSHFlexGrid1.rows = 40
MSHFlexGrid1.Cols = 6
MSHFlexGrid1.FixedCols = 1
MSHFlexGrid1.FixedRows = 1
MSHFlexGrid1.MergeCells = flexMergeFree
MSHFlexGrid1.ColWidth(0, 0) = 2500
MSHFlexGrid1.TextMatrix(0, 0) = "TIME"


MSHFlexGrid1.TextMatrix(0, 1) = "NUM"
 

MSHFlexGrid1.TextMatrix(0, 2) = "大底温度"


MSHFlexGrid1.TextMatrix(0, 3) = "大底品质"


End Sub

Public Function GetConState(intState As Integer) As String
Select Case intState
       Case 0
         GetConState = "adstateclosed"
       Case 1
         GetConState = "adstateopen"
End Select
End Function

fengle

  • 精华:0帖
  • 求助:0帖
  • 帖子:44帖 | 85回
  • 年度积分:0
  • 历史总积分:267
  • 注册:2007年8月30日
发表于:2007-09-07 08:35:00
26楼
  十分感谢上面的这位侠士,不过我还有些疑问,我做的程序基本上是这个程序缩小版,现在运行还是不好使,我看你上面有  Dim StrEtime As String ,难道这个不是在按钮的vbs脚本中实现的吗,因为脚本不需要定义类型的. 还有就是我的错误提示一直都是"不能定位的错误",因为我的wincc是 演示版,所以我想问问,没有授权会不会影响我做,在数据库中读取过程值归档这样的事.谢谢 指点!

wincc123

  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2007-09-07 09:23:00
27楼
FENGLE:
 
    说明几点:
    1:WINCC6.02+ SQL2000+ XP专业版+vb6.0专业版是我的环境,因此,这个不是vb脚本作的。
    我的方法是,自己用VB做成EXE,然后再WINCC中查询时激活,相当于程序外挂。

    2:关于WINCC的数据库,是不是演示版不要紧,但是一定要激活WINCC,否则,数据库肯定是连接不上的。

    3:WINCC的数据库,采用了世界时,即格尼威治时间,和咱们的东八区北京时间相比,有8小时时间差,这点,在程序中有体现

     4:至于你的不能定位错误,这个我就更不能定位你的错误了,估计是语法错误也是没有的,逻辑错误可能也没有,而可能是你WINCC没有激活

    我的程序没几个东西:从某年某月某日某时某分到某年某月某日某时某几个空间,一个查询按钮空间,一个MSHFLEXGRID空间

fengle

  • 精华:0帖
  • 求助:0帖
  • 帖子:44帖 | 85回
  • 年度积分:0
  • 历史总积分:267
  • 注册:2007年8月30日
发表于:2007-09-07 09:50:00
28楼
    我的数据库能连上我测试了,但是有执行到执行查询归档的过程语句时,就出现刚才的错误.所以我一直怀疑是因为我的wincc安装没有授权, 这个问题也苦恼我好久了,同样的授权 在别人机器里安装就好使,在我机器里装就不好使. 一直得不到解决.  有时间你要教教我怎么把VB 程序调到Wincc 中来执行. 我现在的问题太多了, 都不知道该怎么解决,  先解决谁了?

fengle

  • 精华:0帖
  • 求助:0帖
  • 帖子:44帖 | 85回
  • 年度积分:0
  • 历史总积分:267
  • 注册:2007年8月30日
发表于:2007-09-07 09:53:00
29楼
    我的数据库能连上我测试了,但是有执行到执行查询归档的过程语句时,就出现刚才的错误.所以我一直怀疑是因为我的wincc安装没有授权, 这个问题也苦恼我好久了,同样的授权 在别人机器里安装就好使,在我机器里装就不好使. 一直得不到解决.我查询时使用的是相对时间,所以应该和时间没有关系.有时间你要教教我怎么把VB 程序调到Wincc 中来执行. 我现在的问题太多了, 都不知道该怎么解决,  先解决谁了?  我是个新手,你做了好长时间了吧!

wincc123

  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2007-09-07 17:59:00
30楼
A: "你的数据库能连上,你测试了",
1:请告诉我你是怎样测试的?
2:能连上,你是怎么判定的? 

B: WINCC下调用vb的EXE程序,很简单,用按钮控件调用一个C脚本
然后C脚本调用函数ProgramExecute()就好了 

C:相对时间查询,按照SIEMENS提供的方法,应该是有问题的,当时我没有测试成功,或许有别的原因!

D:说了授权和这个无关,不要再想了

fengle

  • 精华:0帖
  • 求助:0帖
  • 帖子:44帖 | 85回
  • 年度积分:0
  • 历史总积分:267
  • 注册:2007年8月30日
发表于:2007-09-11 13:33:00
31楼
我的授权问题解决了,但是程序的问题仍然存在.看来真的不是授权的问题.你的给我的代码我看了好多编,结合自己的程序觉得有好多疑问.我想问你,你是使用VB 做的外挂,那你为什么不用VBA呢,它不是在WINCC里集成好的吗?还有你等于把所有的操作都放到VB中了,在WINCC 里你只做了一个调用的操作是吗?那你激活WINCC 时应该是有一个按钮,你点击它,有出来一个界面.上面还有个按钮,在点击才能出现查询出来的归档数据是不是? 因为我看见你有个Private Sub Command1_Click()的事件.

fengle

  • 精华:0帖
  • 求助:0帖
  • 帖子:44帖 | 85回
  • 年度积分:0
  • 历史总积分:267
  • 注册:2007年8月30日
发表于:2007-09-11 14:01:00
32楼
还有就是,我对这个行业要求和软件都不了解.目前做这种读取过程值归档的办法,是用外部程序吗,比如说VB,WINCC自己完成不了吗?

wincc123

  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2007-09-11 21:09:00
33楼
是的,完全外挂。WINCC调用查询的程序,激活这个EXE程序
WINCC的vba操作起来没有VB6方便,仅此而已。
我用ASP的vba也操作过

fengle

  • 精华:0帖
  • 求助:0帖
  • 帖子:44帖 | 85回
  • 年度积分:0
  • 历史总积分:267
  • 注册:2007年8月30日
发表于:2007-09-12 09:38:00
34楼
有你这句话,我就放心了.如果是在VB里面编程最后调用,那我到是很有信心了,毕竟自己原来就是做软件开发的.只不过没用VB 不过我想应该都差不多.谢谢你啊. 不过我现在没有VB6的环境,所以过两天我装好了,就按照你给我的提示做一下下,到时候有问题可能要麻烦你了.你看过<< 西门子WINCC v6深入浅出>>这本书吗,在239页有一个和你给程序差不多的程序,就是我现在一直练的.总是不对.不过他提到了激活WINCC  启动VB应用程序.正好和你给我说的有些吻合.我就是不确,还有你的意思是说VBA也能做就是,麻烦是吗?因为我是个新手,所以对学习方向有些迷茫.

fengle

  • 精华:0帖
  • 求助:0帖
  • 帖子:44帖 | 85回
  • 年度积分:0
  • 历史总积分:267
  • 注册:2007年8月30日
发表于:2007-09-12 09:44:00
35楼
 就是这段代码运行的 .Execute的时候就不能继续运行了,我是用
  msgbox""  测的
    Dim sPro   
    Dim sDsn    
    Dim sSer    
    Dim sCon    
    Dim sSql    
    Dim conn    
    Dim oRs    
    Dim oCom    
    Dim oItem    
    Dim m,s,n
   sPro="provider=WinCCOLEDBProvider.1;"
   sDsn="Catalg=CC_wincc_sq_07_09_06_10_08_26R;"
   sSer="Data Source=.\WinCC"
   sCon=sPro+sDsn+sSer
   
   'sSql="TAG:R,'PVArchive1\oil_temp','0000-00-00 00:10:00.000','0000-00-00 00:00:00.000'"
   sSql="TAG:R,1,'2007-09-12 01:10:00.000','2007-09-12 01:20:00.000'"
   'sSql="select * from Archive1"
   MsgBox"Open with:"&vbCr &sCon &vbCr &sSql &vbCr
   Set conn=CreateObject("ADODB.Connection")
   conn.ConnectionString=sCon
   conn.CursorLocation=3
   conn.Open
   
   Set oRs=CreateObject("ADODB.Recordset")
   Set oCom=CreateObject("ADODB.Command")
   oCom.commandType=1
   Set oCom.ActiveConnection=conn
   oCom.CommandText=sSql
       
   MsgBox"1:"      这里可以执行 弹出对话框
   Set oRs=oCom.Execute     用vbs的调试器显示这行错误,提示是"不能定位的错误"
   MsgBox"2:"       这里不能弹出可见前面不能执行

fengle

  • 精华:0帖
  • 求助:0帖
  • 帖子:44帖 | 85回
  • 年度积分:0
  • 历史总积分:267
  • 注册:2007年8月30日
发表于:2007-09-26 09:44:00
36楼
    在这里把我问题画个句号吧.我的问题已经全部解决了.我现在也知道了很多东西.我完全是在wincc的环境下利用脚本做出来了查询显示过程值归档的模块.非常感谢WINCC123. 他给提供的代码非常的有参考意义.程序的逻辑的紧密性和容错性都非常好给了我很大的启发.对于新手来说这是个非常好的学习案例.

wincc123

  • 精华:4帖
  • 求助:0帖
  • 帖子:41帖 | 765回
  • 年度积分:1
  • 历史总积分:1067
  • 注册:2003年10月13日
发表于:2007-09-26 21:24:00
37楼
这段代码也是我自己做了一个礼拜的试验和才得出来的,走了不少的弯路,基本上在VBS环境下,格式比较固定,不象咱们普通的SQL数据访问。
你能自己最终感悟,并查询成功,我们只能起一个引导作用。
最后,祝贺你成功,相信普通的SQL对你而言,也会变得简单 

我思故我在

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:52
  • 注册:2007年10月08日
发表于:2007-10-08 11:30:00
38楼
恩,我现在也在学这方面的东西,我的总体思路是用VBS把变量的瞬时值存入到SQL 2000数据库(不是wincc自带的),然后再用VB2005对数据进行开发处理,生成报表和数据查询功能,传统的CS结构,行不行啊,我是新手,第一次弄这个,看到这篇文章很有感觉,麻烦给点意见

我向你学习

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 191回
  • 年度积分:0
  • 历史总积分:199
  • 注册:2005年6月13日
发表于:2007-10-08 12:06:00
39楼
顶,绝对是好东西啊

hzl9699

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:35
  • 注册:2003年10月23日
发表于:2007-12-16 19:05:00
40楼
学习了,我也顶一个!

热门招聘
相关主题

官方公众号

智造工程师