当前位置: 主页 > PLC控制

wincc报表实现?

wincc怎么实现连接SQL服务器记录,将数据写入SQL,并在报表中输出SQL相应的数据?最好是提供VC和VB的两种解决方案~~

最佳答案

1wincc怎么实现连接SQL服务器的记录,是要WinCC的归档数据,还是自己用脚本归档,若是自己的脚本归档,是用sqloledb,
若是使用WinCC的归档数据,使用providerole,db.
a使用sqloledb,读用户归档
SubOnClick(ByValItem)

DimsDsn
DimsSer
DimsCon
DimsSql
Dimconn
DimoRs
DimoCom
DimsPro
Dimm,n,s
Dima,b,c
DimLiSTview1
DimoItem
DimxlsApp
DimstrDateTime

DimiMS

SetListview1=ScreenItems("Control1")

sCon="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurityInfo=False;InitialCatalog=CC_databASe_08_10_20_14_59_38R;DataSourCE=YSY\WINCC"


sSql="Select*fromUA#myua"
MsgBox"Openwith:"&vbCr&sCon&vbCr&sSql&vbCr

Setconn=CreateObject("ADODB.Connection")
conn.ConnectionString=sCon
conn.CursorLocation=3
conn.Open
SetoRs=CreateObject("ADODB.Recordset")
SetoCom=CreateObject("ADODB.Command")
oCom.CommandType=1
SetoCom.ActiveConnection=conn
oCom.CommandText=sSql
SetoRs=oCom.Execute
m=oRs.Fields.Count


SetxlsApp=CreateObject("Excel.Application")
xlsApp.Visible=True
xlsApp.Workbooks.Open"E:\sample.xls"


If(m>0)Then
oRs.MoveFirst
n=1

xlsApp.Cells(1,1).Value=oRs.Fields(0).Name
xlsApp.Cells(1,2).Value=oRs.Fields(1).Name
xlsApp.Cells(1,3).Value=oRs.Fields(2).Name

DoWhileNotoRs.EOF
n=n+1
xlsApp.Cells(n,1).Value=oRs.Fields(0).Value
xlsApp.Cells(n,2).Value=oRs.Fields(1).Value
xlsApp.Cells(n,3).Value=oRs.Fields(2).Value

oRs.MoveNext
Loop
xlsApp.ActiveWorkBook.Save
xlsApp.Workbooks.Close
xlsApp.Quit
SetxlsApp=Nothing


EndIf
oRs.Close
SetoRs=Nothing
conn.Close
Setconn=Nothing
EndSub

b,使用providerole,db读归档数据
SubOnClick(ByValItem)

DimxlsApp
DimsDsn
DimsSer
DimsCon
DimsSql
Dimconn
DimoRs
DimoCom
DimsPro
Dimm,n,s
Dima,b,c

sPro="Provider=WinCCOLEDBProvider.1;"
sDsn="Catalog=CC_vbs_08_05_26_14_56_45R;"//该为自己的数据库名称
sSer="DataSource=.\WinCC"
sCon=sPro+sDsn+sSer

//该为自己的归档名称和变量名称

sSql="Tag:R,(‘ProcESsValueArchive\tag1′;’ProcessValueArchive\tag2′),’2008-07-200:32:00.000’,’2008-07-217:34:00.000’"

MsgBox"Openwith:"&vbCr&sCon&vbCr&sSql&vbCr

Setconn=CreateObject("ADODB.Connection")
conn.ConnectionString=sCon
conn.CursorLocation=3
conn.Open
SetoRs=CreateObject("ADODB.Recordset")
SetoCom=CreateObject("ADODB.Command")
oCom.CommandType=1
SetoCom.ActiveConnection=conn
oCom.CommandText=sSql
SetoRs=oCom.Execute
m=oRs.Fields.Count
SetxlsApp=CreateObject("Excel.Application")
xlsApp.Visible=True
xlsApp.Workbooks.Open"E:\sample.xls"


xlsApp.Cells(10,2).Value=6
If(m>0)Then
oRs.MoveFirst
n=1

xlsApp.Cells(1,1).Value=oRs.Fields(0).Name
xlsApp.Cells(1,2).Value=oRs.Fields(1).Name
xlsApp.Cells(1,3).Value=oRs.Fields(2).Name
xlsApp.Cells(1,4).Value=oRs.Fields(3).Name
xlsApp.Cells(1,5).Value=oRs.Fields(4).Name
DoWhileNotoRs.EOF
n=n+1
xlsApp.Cells(n,1).Value=oRs.Fields(0).Value
xlsApp.Cells(n,2).Value=oRs.Fields(1).Value
xlsApp.Cells(n,3).Value=FormatNumber(oRs.Fields(2).Value,2)
xlsApp.Cells(n,4).Value=Hex(oRs.Fields(3).Value)
xlsApp.Cells(n,5).Value=Hex(oRs.Fields(4).Value)
oRs.MoveNext
Loop
xlsApp.ActiveWorkBook.Save
xlsApp.Workbooks.Close
xlsApp.Quit
SetxlsApp=Nothing
EndIf
oRs.Close
SetoRs=Nothing
conn.Close
Setconn=Nothing

EndSub

提问者对于答案的评价:
可以

  • 关注微信

猜你喜欢

微信公众号