1全局脚本
在全局脚本里建立起与数据库的连接,通过定时整点触发脚本,把变量写到
数据库。WINCC里全局脚本触发定时器设定是每小时整点触发。
OptionExplicit变量声明
Functionaction功能操作
Dimdataba定义数据库
Dimstrcn,cn
Dimis_SQL
Dimriqi
Dimyali,wendu,liuliang,zhongliang,dianya,sudu定义压力、温度、、、、
DimDateTime定义日期时间
riqi=Now
Setyali=("yali")人机界面运行时间标签
Setwendu=("wendu")
Setliuliang=("liuliang")
Setzhongliang=("zhongliang")
Setdianya=("dianya")
Setsudu=("sudu")
strcn="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;PersistSecurity
Info=Fal;InitialCatalog=baobiao1;DataSource=.wincc"
Setcn=CreateObject("tion")
tionString=strcn
is_SQL="inrtintoribao(riqi,yali,wendu,liuliang,zhongliang,dianya,sudu)
Values('"&riqi&"','"&&"','"&&"','"&
&"','"&&"','"&&"','"&&"')"
eis_SQL
EndFuncti
2查询按钮
SubOnClick(ByValItem)
Dimi,n,k,n1,a1,b1,c1,d1,e1,f1
DimMSFlexGrid1
DimSql,oCom,conn,sql1,oCom1
Dimj,b,z
Dimylp,wdp,llp,ylx,wdx,llx,yld,wdd,lld
Dimzlp,dyp,sdp,zlx,dyx,sdx,zld,dyd,sdd
【压力、温度、流量、重力、电压、速度的平均值、最小值、最大值】
Dimstrcn,cn
Dima,shi,t,x
DimoRs,oRs1
DimText2
DimBeginDate开始日期
DimEndDate结束日期
DimBy,Bm,Bd定义开始年月日
DimNy,Nm,Nd,c,e,f定义结束年月日
DimDate1,Date2
【定义函数命令:
】
SetText2=ScreenItems("Text2")
SetDate1=ScreenItems("Date1")
SetDate2=ScreenItems("Date2")
SetMSFlexGrid1=ScreenItems("MSFlexGrid1")
【ScreenItems为画面对象集合,把定义的函数与画面中的控件进行映射
】
By=Year()
Bm=Month()
Bd=Day()【BYBMBD为date1的年月日定义,B为begin开始时间】
Ny=Year()
Nm=Month()
Nd=Day()【NYNMND为date2的年月日定义,N的end结束时间】
BeginDate=By&"-"&Bm&"-"&Bd&""&"00:00:00"
EndDate=Ny&"-"&Nm&"-"&Nd&""&"23:59:59"
e=By&"-"&Bm&"-"&Bd
f=Ny&"-"&Nm&"-"&Nd
IfBy>NyOrBy=NyAndBm>NmOrBy=NyAndBm=NmAndBd>NdThen
MsgBox"输入的时间不正确",vbOK,"错误的起始时间"【MsgBox为弹出的对话框控件】
EndIf
'以上程序为日期查询
2.1'建立连接
Sql="SELECTCONVERT(char(19),riqi,20)ASriqi,yali,wendu,liuliang,
zhongliang,dianya,suduFROMribaoWHEREriqiBETWEEN'"&BeginDate&"'and'"
&EndDate&"'ORDERBYriqi"
【CONVERT在SQL(结构化语言)中的一个系统函数
一般用法
convert函数用来转换数据类型
例子:SELECTCONVERT(VARCHAR(5),12345)
返回:字符串'12345'
/sql/sql_】
sql1="lectavg(yali)asylp,avg(wendu)aswdp,avg(liuliang)as
llp,avg(zhongliang)aszlp,avg(dianya)asdyp,avg(sudu)assdp,min(yali)as
ylx,min(wendu)aswdx,min(liuliang)Asllx,min(zhongliang)Aszlx,min(dianya)As
dyx,min(sudu)Assdx,max(yali)Asyld,max(wendu)Aswdd,max(liuliang)As
lld,max(zhongliang)Aszld,max(dianya)Asdyd,max(sudu)Assddfromribaowhereriqi
between'"&BeginDate&"'and'"&EndDate&"'"
【/sql/sql_func_】
strcn="Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;Persist
SecurityInfo=Fal;InitialCatalog=baobiao1;DataSource=.wincc"
Setconn=CreateObject("tion")
tionString=strcn
Location=3
'使用命令文本查询
SetoRs=CreateObject("t")
SetoCom=CreateObject("d")
dType=1
Connection=conn
dText=Sql
SetoRs=e
n=Count【RecordCount指示Recordt对象中记录的当前数目】
=n【Text2为日报表中静态文本的查询到的记录数的文本内容为n】
SetoCom1=CreateObject("d")
dType=1
Connection=conn
dText=sql1
SetoRs1=e
n1=Count
ylp=oRs1("ylp"):wdp=oRs1("wdp"):llp=oRs1("llp"):ylx=oRs1("ylx"):wdx=
oRs1("wdx"):llx=oRs1("llx"):yld=oRs1("yld"):wdd=oRs1("wdd"):lld=
oRs1("lld")
zlp=oRs1("zlp"):dyp=oRs1("dyp"):sdp=oRs1("sdp"):zlx=oRs1("zlx"):dyx=
oRs1("dyx"):sdx=oRs1("sdx"):zld=oRs1("zld"):dyd=oRs1("dyd"):sdd=
oRs1("sdd")
Ifn=0Then【查询的结果数为0时显示内容】
MsgBox"对不起,没有找到符合条件的数据",vbOK,"没有相关数据"
EndIf
y
【使用FlexGridActiveX控件可以在MicrosoftVisualBasic的窗体中创建一个电
子数据表格,也可称之为网格,
/link?url=gdGZm1tyQhFpO4MlKlEiFPvRS990aO0n5y9PFHPR1a
edWB4XLJL05K68bL84l6aa】
=Count+6
th(0)=800
th(1)=2100
th(2)=1000
th(3)=1000
th(4)=1000
th(5)=1000
th(6)=1000
th(7)=1000
'合并单元格,并把单元格的内容写为R980履带式布料机日报表
=0
Forz=0To7
=z
="R980履带式布料机日报表"
Next
ells=4【Merge合并】
ow(0)=True
'合并单元格
trix(1,0)="编号"【Matrix矩阵,(行,列)】
trix(1,1)="日期"
trix(1,2)="压力"
trix(1,3)="温度"
trix(1,4)="流量"
trix(1,5)="重量"
trix(1,6)="电压"
trix(1,7)="速度"
'trix(Count+2,0)="总和"
trix(Count+3,0)="最大值"
trix(Count+4,0)="最小值"
trix(Count+5,0)="平均值"
gnment(0)=4
gnment(1)=4
gnment(2)=4
gnment(3)=4
gnment(4)=4
gnment(5)=4
gnment(6)=4
gnment(7)=4【对其方式
】
Fori=Count
trix(i+1,0)=i
Next
If(n>0)Then
rst
i=0
EndIf【显示编号下方的信息为从第2行、第0列为1,第3行第0列为2,i的
取值为从1到查询到的数目Count】
n=n+1
ylp=Int(ylp*10^3+0.5)/(10^3)
wdp=Int(wdp*10^3+0.5)/(10^3)
llp=Int(llp*10^3+0.5)/(10^3)
zlp=Int(zlp*10^3+0.5)/(10^3)
dyp=Int(dyp*10^3+0.5)/(10^3)
sdp=Int(sdp*10^3+0.5)/(10^3)
i=i+1
'mi,i+1
t=CStr((0).Value)
Ife=fThen
trix(i+1,1)=Mid(t,11,16)
EndIf
Ife<>fThen
trix(i+1,1)=t
EndIf
a1=CStr((1).Value)
b1=CStr((2).Value)
c1=CStr((3).Value)
d1=CStr((4).Value)
e1=CStr((5).Value)
f1=CStr((6).Value)
a1=Int(a1*10^3+0.5)/(10^3)
b1=Int(b1*10^3+0.5)/(10^3)
c1=Int(c1*10^3+0.5)/(10^3)
d1=Int(d1*10^3+0.5)/(10^3)
e1=Int(e1*10^3+0.5)/(10^3)
f1=Int(f1*10^3+0.5)/(10^3)
trix(i+1,2)=a1
trix(i+1,3)=b1
trix(i+1,4)=c1
trix(i+1,5)=d1
trix(i+1,6)=e1
trix(i+1,7)=f1
trix(Count+3,2)=yld
trix(Count+4,2)=ylx
trix(Count+5,2)=ylp
trix(Count+3,3)=wdd
trix(Count+4,3)=wdx
trix(Count+5,3)=wdp
trix(Count+3,4)=lld
trix(Count+4,4)=llx
trix(Count+5,4)=llp
'*************************************************
trix(Count+3,5)=zld
trix(Count+4,5)=zlx
trix(Count+5,5)=zlp
trix(Count+3,6)=dyd
trix(Count+4,6)=dyx
trix(Count+5,6)=dyp
trix(Count+3,7)=sdd
trix(Count+4,7)=sdx
trix(Count+5,7)=sdp
'*****************************************************
xt
Loop
EndSub
3打印按钮
SubOnClick(ByValItem)
DimExcelApp
DimExcelBook
DimExcelSheet
DimMSFlexGrid1
Dimi,irow,ICOL
Dimz,k
SetMSFlexGrid1=ScreenItems("MSFlexGrid1")
SetExcelApp=CreateObject("ation")
SetExcelBook=
SetExcelSheet=eets(1)
e=True
("A1:H1").Merge
Forirow=-1
ForICOL=-1
z=
(irow+1,icol+1)=Trim(trix(irow,icol))
Next
Next
("A1:H"&z&"").Borders(1).Weight=2
("A1:H"&z&"").Borders(2).Weight=2
("A1:H"&z&"").Borders(3).Weight=2
("A1:H"&z&"").Borders(4).Weight=2
(1).RowHeight=0.75/0.035
t
(1).="宋体"
(1).=True
(1).=16
ntalAlignment=3
'gin=2/0.035
'Margin=2/0.035
'rgin=2/0.035
'argin=2/0.035
Horizontally=2/0.035
review'打印阅览
'ut'打印时用此句
SetExcelApp=Nothing
EndSub
4画面函数打开画面
SubOnOpen()
DimText1,Text2
SetText1=ScreenItems("Text1")
SetText2=ScreenItems("Text2")
=Now
=0
EndSub
本文发布于:2023-01-04 10:33:06,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/90167.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |