wincc 中的一段代码,大家帮我看看 点击:664 | 回复:5



fengle

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:44帖 | 85回
  • 年度积分:0
  • 历史总积分:267
  • 注册:2007年8月30日
发表于:2007-09-13 08:37:00
楼主
 为什么我这段脚本代码执行后,在数据库中取出来的信息,在Listview中没有 列头 呢也就是列名
 Listview在使用时有什么要注意的吗?  请指点 ,红色部分的代码,谁能给我翻译一下.
    Dim sPro   
    Dim sDsn    
    Dim sSer    
    Dim sCon    
    Dim sSql    
    Dim conn    
    Dim oRs    
    Dim oCom    
    Dim oItem    
    Dim m,s,n
    Dim Control

   sPro="provider=MSDASQL;"
   sDsn="DSN=CC_wincc_sq_07_09_06_10_08_26R;"
   sSer="UID= PWD= "
   sCon=sPro+sDsn+sSer
   
    sSql="select * from AMT"
   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
   
    
   Set oRs=oCom.Execute
   
[color=#FF0000]   m=oRs.Fields.Count
    Set Control=ScreenItems("ListView1")
    Control.ColumnHeaders.Clear
    Control.ColumnHeaders.add, ,CStr(oRs.Fields(1).Name),140
    Control.ColumnHeaders.add, ,CStr(oRs.Fields(2).Name),70
    Control.ColumnHeaders.add, ,CStr(oRs.Fields(3).Name),70

   If(m>0) Then
     oRs.MoveFirst
      n=0
     Do While Not oRs.EOF
     n=n+1
     s=Left(CStr(oRs.Fields(1).Value),23)
     Set oItem=Control.ListItems.Add()
     oItem.text=Left(CStr(oRs.Fields(1).Value),23)
     oItem.SubItems(1)=FormatNumber(oRs.Fields(2).Value,4)
     oItem.SubItems(2)=Hex(ors.Fields(3).Value)
     If(n>1000) Then Exit Do
     oRs.MoveNext[/color]
     Loop
     oRs.Close
     Else
  End If
   set oRs=nothing
   conn.Close
  Set conn=Nothing



yuanle

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 10208回
  • 年度积分:2747
  • 历史总积分:48332
  • 注册:2005年4月22日
发表于:2007-09-13 08:50:00
1楼
m=oRs.Fields.Count //得到返回的数据集条数
    Set Control=ScreenItems("ListView1")
    Control.ColumnHeaders.Clear
    Control.ColumnHeaders.add, ,CStr(oRs.Fields(1).Name),140
    Control.ColumnHeaders.add, ,CStr(oRs.Fields(2).Name),70
    Control.ColumnHeaders.add, ,CStr(oRs.Fields(3).Name),70
//以上代码是填入listview,填入了3个数据,实际就是建立数据表头
   If(m>0) Then   //有数据则执行
     oRs.MoveFirst  //移动指针指向第一条数据
      n=0                  //设立计数器为0
     Do While Not oRs.EOF  //只要没有到结束就继续
     n=n+1
     s=Left(CStr(oRs.Fields(1).Value),23)
     Set oItem=Control.ListItems.Add()
     oItem.text=Left(CStr(oRs.Fields(1).Value),23)
     oItem.SubItems(1)=FormatNumber(oRs.Fields(2).Value,4)
     oItem.SubItems(2)=Hex(ors.Fields(3).Value)
   //以上代码向listview填写数据
     If(n>1000) Then Exit Do //如果大于1000条数据则退出
     oRs.MoveNext  //移向下一条数据。

中尉兄

  • 精华:0帖
  • 求助:0帖
  • 帖子:25帖 | 436回
  • 年度积分:0
  • 历史总积分:647
  • 注册:2006年6月05日
发表于:2007-09-13 10:20:00
2楼
翻译的不错。

feiniaohe

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2008年10月21日
发表于:2008-12-22 10:44:33
3楼
因为你没指定LISTVIEW控件的显示类型在 Control.ColumnHeaders.Clear后加句 listview.VIEW = LVWREPORT就好了

gzgylgl

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 221回
  • 年度积分:0
  • 历史总积分:556
  • 注册:2001年8月30日
发表于:2008-12-25 12:20:50
4楼

1楼翻译得很好!!!!!!!!!!!

LOOKAT

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 311回
  • 年度积分:90
  • 历史总积分:1210
  • 注册:2007年4月30日
发表于:2009-01-23 16:28:11
5楼
xuexile,xiexie!

热门招聘
相关主题

官方公众号

智造工程师