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