报表返回的记录数

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日 上午5:01
下一篇 2019年6月11日 上午5:01

相关推荐