zichen8716
我行,我行,我行行行!!!
级别: 家园常客
精华主题: 0
发帖数量: 266 个
工控威望: 527 点
下载积分: 4363 分
在线时间: 59(小时)
注册时间: 2010-03-25
最后登录: 2022-12-28
查看zichen8716的 主题 / 回贴
楼主  发表于: 2014-03-27 14:52
Wincc ODBC连接ACCESS数据库, MshflexGird控件显示数据

wincc自带安装SQL数据库,连接不上,退而求其次只能使用ACCESS数据库了,好多人说ODBC方法过时了,但是对于我们这些对数据查询量较小,查询频率较低的高级语言初学者来说,该方法还是比较实用。
MshflexGird控件,个别电脑上可能没有注册,可以在网上下载重新注册,这次尝试了好多次可以注册,但是在添加的时候总是报错,使用较笨的方法安装了VB6.0,
MshflexGird控件的属性比如列数,行数,列宽,列头注释等等。百度一下有好多文档介绍
脚本部分:
Dim objConnection  
Dim strConnectionString
Dim strSQL  
Dim objrs
Dim chaxun
Dim i
Dim j
'定义报表控件
Dim aa
'chaxun=HMIRuntime.Tags("管号查询输入").Read
'数据库连接字符串
strConnectionString = "Provider=MSDASQL;DSN=REPORT;UID=;PWD=;"
  strSQL = "select * from report order by 编号 ASC;"
   Set objConnection = CreateObject("ADODB.Connection")
   objConnection.ConnectionString = strConnectionString
objConnection.Open
   Set objrs = CreateObject("ADODB.RecordSet")
  objrs.open  strSQL,objConnection

  '数据循环写入MSFlexgrid控件
Set aa = ScreenItems("控件5")
aa.rows = 2
'设置列头文字
aa.FormatString = "^序号^管号^管径^管长^壁厚^材质^试压压力Mpa^保压时间S^试压日期^结束时间^开始时间^操作员^班次^结论^标准^规格^温度℃"
'设置列宽度
For j=2 To 14
   aa.ColWidth(j)=1500
Next
j=j+1
aa.ColWidth(1)=2000
aa.ColWidth(15)=2000
   '写入数据
On Error Resume Next
objrs.moveFirst
     Do While Not objrs.eof
     For i=0 To 16
       aa.TextMatrix(aa.Rows-1,i)=objrs.fields(i).value
      Next
      aa.Rows=aa.Rows+1
       objrs.movenext
       Loop
  '释放连接
  objrs.close
Set objrs = Nothing
   objConnection.Close
   Set objConnection = Nothing
失败并不意味你浪费了时间和生命。失败表明你有理由重新开始