报表返回的记录数

WINCC中用listview控件显示用户归档记录,连接数据已成功,通过m = oRs.RecordCount检测到有33个数据,为何在ListView控件中显示的只有一行数据?
部分源程序如下
Dim sPro 
Dim sDsn 
Dim sSer 
Dim sCon 
‘Dim sSq1_1
‘Dim sSq1_2 
Dim oRs 
Dim conn 
Dim oCom 
Dim oItem 
Dim m, n, s
Dim k
Dim ListView1
Dim ListView2

sCon ="Provider=SQLOLEDB.1;"&_
"Integrated Security=SSPI;"&_
"Persist Security InfO=False;"&_
"Initial CataloG=CC_fortest_10_08_22_10_02_39R;"&_
"Data SourcE=.\WinCC"

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_1

Set oRs=oCom.Execute

Set ListView1=ScreenItems("ListView1")
ListView1.View =3
ListView1.ListItems.Clear

m = oRs.RecordCount
ScreenItems("静态文本4").Text="查询结果 "  & oRS.RecordCount    & "个。"


ListView1.ColumnHeaders.Clear
ListView1.ColumnHeaders.Add , , CStr(oRs.Fields(0).Name), 30’批次
ListView1.ColumnHeaders.Add , , CStr(oRs.Fields(1).Name), 60’批次
ListView1.ColumnHeaders.Add , , CStr(oRs.Fields(2).Name), 60’批次
ListView1.ColumnHeaders.Add , , CStr(oRs.Fields(3).Name), 30’批次
ListView1.ColumnHeaders.Add , , CStr(oRs.Fields(4).Name), 50
ListView1.ColumnHeaders.Add , , CStr(oRs.Fields(5).Name), 50

If (m > 0) Then
oRs.MoveFirst

n = 0
Do While Not oRs.EOF

n = n + 1
If (n<1000) Then 

‘s = Left(CStr(oRs.Fields(1).value), 23)
‘s = CDate(oRs.Fields(1).value)
‘k = DateAdd("h", 8, s)
Set ListView1 = ListView1.ListItems.Add()
MsgBox("4")
ListView1.Text=CStr(oRs.Fields(0).Value)
ListView1.SubItems(1) =CStr(oRs.Fields(1).Value)
ListView1.SubItems(2) =CStr(oRs.Fields(2).Value)
ListView1.SubItems(3) =CStr(oRs.Fields(3).Value)
ListView1.SubItems(4) =CStr(oRs.Fields(4).Value)
ListView1.SubItems(5) =CStr(oRs.Fields(5).Value)

End If
‘If (n>1000) Then Exit Do
oRs.MoveNext
Loop
‘ScreenItems("静态文本4").Text="查询结果 "  & oRS.RecordCount    & "个。"
MsgBox("d")
oRs.Close
Else
End If
……

最佳答案

给你一个例子:
Private Sub Form_Load()
 ‘添加 ColumnHeaders。列宽度等于控件宽度
 ‘除以 ColumnHeader 对象的数目。
 ListView1.ColumnHeaders. _
 Add , , "Author", ListView1.Width / 3)
 ListView1.ColumnHeaders. _
 Add , , "Author ID", ListView1.Width / 3, _
 lvwColumnCenter
 ListView1.ColumnHeaders. _
 Add , , "Birthdate", ListView1.Width / 3)
 
 ‘ Set View property to Report.
 ListView1.View = lvwReport 


 ‘为数据访问对象声明对象变量。

Dim myDb As Database, myRs As Recordset
 ‘设置 Database 为 BIBLIO.MDB 数据库。
 ‘ IMPORTANT: the Biblio.mdb must be on your
 ‘ machine, and you must set the correct path to
 ‘ the file in the OpenDatabase function below.
 Set myDb =  DBEngine.Workspaces(0) _
  .OpenDatabase("c:\Program Files\VB\BIBLIO.MDB")
 ‘设置 recordset 为 "Authors" 表。
 Set myRs = _
 myDb.OpenRecordset("Authors", dbOpenDynaset)

‘声明变量以添加 ListItem 对象。
 Dim itmX As ListItem

 ‘若当前记录不是最后一条记录,则添加一个 ListItem 对象。
 ‘ListItem 对象的文本使用 author 字段。
 ‘ListItem 对象的 SubItem(1) 使用 AuthorID 字段。
 ‘ListItem 对象的 SubItem(2) 使用 "Year of Birth" 字段。

 While Not myRs.EOF
  Set itmX = ListView1.ListItems. _
  Add(, , CStr(myRs!Author),1) ‘Author 字段。

‘若 AuthorID 字段不为空,则将 SubItem 1 设置为此字段。
  If Not IsNull(myRs!Au_id) Then
   itmX.SubItems(1) = CStr(myRs!Au_id)   ‘ Author ID。
  End If

  ‘若 birth 字段不为空,则将 SubItem 2 设置为此字段。
  If Not IsNull(myRs![Year Born]) Then
   itmX.SubItems(2) = myRs![Year Born]
  End If
  myRs.MoveNext ‘移动到下一条记录。
 Wend
End Sub

提问者对于答案的评价:
OK

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc267084.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日
下一篇 2019年6月11日

相关推荐

  • wincc7.4 下拉列表选择配方

    wincc7.4 怎么用下拉列表选择配方 钻石用户推荐最佳答案 1、使用组合框功能,可以使用其属性text或者seltext获取选择的配方名称2、使用第三方个的combo…

    SIMATIC WinCC 2021年7月5日
  • wincc登陆后清除密码脚本没有生效

    想实现wincc登陆后清除密码,但是脚本没有生效,想问下那有问题 图片说明:    最佳答案 建议建立内部文本变量用于存放登录用户名和密码,I/O域关联此变量登…

    2021年7月5日
  • 打开WINCC项目时,服务器不可用

    把一个在台式机里可以运行的WINCC项目拷贝到另外一台笔记本电脑。打开该WINCC项目时,出现WINCC资源管理器-服务器不可用对话框,该对话框提示如下“组态的服务器不可用,是否打…

    SIMATIC WinCC 2019年6月11日
  • PCS7 运行报错

    PCS7 V9.0 SP3 在ES站上仿真测试运行时,WinCC画面可以运行,但运行快结束时,会弹出错误窗口,如下 。然后WinCC无法与P…

    2021年7月5日
  • 如何限制键盘的输入值

    我想限制键盘的输入值,假如输入值低于最低限或者高于最高限,如何让其保持原有的数值不变呢? 最佳答案 可以先把键盘输入值保存在数据块DB中。例如键盘输入值为DB1.DBW0,保存在D…

    2017年6月18日
  • wincc flexible 2008 sp4软件工具栏无法显示

    wincc flexible 2008 sp4软件工具栏无法显示,重置布局也不行,重装软件还是不行 钻石用户推荐最佳答案 检查一下wincc&nbsp…

    SIMATIC WinCC 2021年7月5日
  • wincc7.2起动问题

    WIN7.0,WINCC7.2怎样设置一开机就自动运行WINCC。 最佳答案 参考文档,如何组态WinCC 开机自动启动https://support.industry.…

    SIMATIC WinCC 2021年7月5日
  • wincc客户端服务器组态硬件时

    通信使用以太局网,在组建局域网时,IP地址都已设好,应该在c盘的那个文件夹里的那个文件,把局域网内所有的IP地址都加进去,忘了,求大神帮忙!C:\Windows\System32的…

    SIMATIC WinCC 2017年11月12日
  • WinCC中VB脚本调用C语言DLL文件

    WinCC中,目前已经实现C脚本调用C语言编写的DLL文件,现在打算使用VB脚本也实现同样的功能。1. VB脚本是否可以加载C语言的DLL文件(DLL文件复用),如果可以…

    SIMATIC WinCC 2021年7月5日
  • WINCC主窗口下的画面窗口中的控件用VB怎么定义

    WINCC主画面名为“主画面”,画面窗口名为“画面窗口”大小可调,画面窗口中的画面名为“趋势画面”,趋势画面中的控件名为“控件1”,不知道用VB怎么定义到“控件1”的属性“宽度”?…

    SIMATIC WinCC 2021年7月5日