Sub search()
str1 = "select * from sys_v_alldata"
If rs3.State <> 1 Then
rs3.Open str1, Conn, 1, 1
Else
rs3.Requery
End IfIf rs2.State <> 1 Then
str = "SELECT * FROM Sys_V_Popedom2 where users='1'"
rs2.Open str, Conn, 1, 1
Else
rs2.Requery
End Ifj = Val(rs2.Fields(2).value)If ListView1.ListItems.Count > 0 Then
ListView1.ListItems.Clear
End If
For k = 1 To rs3.RecordCount
With ListView1
Set LtItm = .ListItems.Add
LtItm.Text = rs3.Fields(1).value
LtItm.SubItems(1) = rs3.Fields(2).value
LtItm.SubItems(2) = rs3.Fields(3).value
LtItm.SubItems(3) = rs3.Fields(4).value
LtItm.SubItems(4) = rs3.Fields(5).value
LtItm.SubItems(5) = rs3.Fields(6).value
'LtItm.SubItems(6) = rs3.Fields(10).value
For i = 1 To rs2.RecordCount
If IsNull(rs3.Fields(j + 9).value) = False Then
LtItm.SubItems(i + 5) = rs3.Fields(j + 9).value
Else
LtItm.SubItems(i + 5) = ""
End If
rs2.MoveNext
Next i
End With
rs3.MoveNext
Next k
rs3.Close
End Sub问题是那里出错,走到rs2.MoveNext停下来了,说当前记录被册徐
str1 = "select * from sys_v_alldata"
If rs3.State <> 1 Then
rs3.Open str1, Conn, 1, 1
Else
rs3.Requery
End IfIf rs2.State <> 1 Then
str = "SELECT * FROM Sys_V_Popedom2 where users='1'"
rs2.Open str, Conn, 1, 1
Else
rs2.Requery
End Ifj = Val(rs2.Fields(2).value)If ListView1.ListItems.Count > 0 Then
ListView1.ListItems.Clear
End If
For k = 1 To rs3.RecordCount
With ListView1
Set LtItm = .ListItems.Add
LtItm.Text = rs3.Fields(1).value
LtItm.SubItems(1) = rs3.Fields(2).value
LtItm.SubItems(2) = rs3.Fields(3).value
LtItm.SubItems(3) = rs3.Fields(4).value
LtItm.SubItems(4) = rs3.Fields(5).value
LtItm.SubItems(5) = rs3.Fields(6).value
'LtItm.SubItems(6) = rs3.Fields(10).value
For i = 1 To rs2.RecordCount
If IsNull(rs3.Fields(j + 9).value) = False Then
LtItm.SubItems(i + 5) = rs3.Fields(j + 9).value
Else
LtItm.SubItems(i + 5) = ""
End If
rs2.MoveNext
Next i
End With
rs3.MoveNext
Next k
rs3.Close
End Sub问题是那里出错,走到rs2.MoveNext停下来了,说当前记录被册徐
解决方案 »
- 在指定位置修改记录
- vba 执行查找方法,找到后就在找到后的字符串上加批注,但是执行第二个查找方法后,找到了字符串,但是就是执行不了Selection.Comments.Add Range:=Selection.Range。word自动关闭
- List的问题
- VB程序员该走那条路?
- 关于SQLSERVER2000查询分析器中显示数据的控件问题!
- 这是什么问题啊?
- 如何使command控件获得焦点时不显示出虚边框?
- 谁知道vs.net(5张盘)的密码????在线等待
- 想用textbox实现类似excel中输入资料时自动带出以前输入过的旧资料
- vba 控制网页对话框
- VB设计的控件,如何从子窗体中得到控件的按钮属性呢
- 急需解决,在线等!
If IsNull(rs3.Fields(j + 9).value) = False Then
LtItm.SubItems(i + 5) = rs3.Fields(j + 9).value
Else
LtItm.SubItems(i + 5) = ""
End If
rs2.MoveNext
Next i问题出在这里,当这里执行了一遍,rs2就已经移动到数据集最后面了,你外层循环再执行一下,到了这里再用rs2.movenext已经没得移了,在后面加个movefirst就可以了
For i = 1 To rs2.RecordCount
If IsNull(rs3.Fields(j + 9).value) = False Then
LtItm.SubItems(i + 5) = rs3.Fields(j + 9).value
Else
LtItm.SubItems(i + 5) = ""
End If
rs2.MoveNext
Next i
rs2.MoveFirst
表一是用户权限视图Sys_V_Popedom2 rs3
列名name users functioncode三列
name1 1 1
name2 1 2
name3 1 3
表二是总数据视图sys_v_alldata rs2
里面有100多列列名之前已经动态加入
Private Sub Form_Load()
ListView1.View = lvwReport
ListView1.ColumnHeaders.Add 1, , "送样日期"
ListView1.ColumnHeaders.Add 2, , "送样编号"
ListView1.ColumnHeaders.Add 3, , "试样名称及说明"
ListView1.ColumnHeaders.Add 4, , "登记部门"
ListView1.ColumnHeaders.Add 5, , "分类号"
ListView1.ColumnHeaders.Add 6, , "子类号"If Conn.State <> 1 Then
Conn.CursorLocation = adUseClient
Conn.Open LoginDB
End IfIf rs4.State <> 1 Then
str = "SELECT * FROM Sys_V_Popedom2 where users='1'"
rs4.Open str, Conn, 1, 1
Else
rs4.Requery
End IfFor i = 1 To rs4.RecordCount
ListView1.ColumnHeaders.Add Val(rs4.Fields(2)) + 6, , rs4.Fields(0)
rs4.MoveNext
NextsearchEnd Sub第二部是想在这个表循环加入数据Sub search()
str1 = "select * from sys_v_alldata"
If rs3.State <> 1 Then
rs3.Open str1, Conn, 1, 1
Else
rs3.Requery
End If If rs2.State <> 1 Then
str = "SELECT * FROM Sys_V_Popedom2 where users='1'"
rs2.Open str, Conn, 1, 1
Else
rs2.Requery
End If j = Val(rs2.Fields(2).value) If ListView1.ListItems.Count > 0 Then
ListView1.ListItems.Clear
End If
For k = 1 To rs3.RecordCount
With ListView1
Set LtItm = .ListItems.Add
LtItm.Text = rs3.Fields(1).value
LtItm.SubItems(1) = rs3.Fields(2).value
LtItm.SubItems(2) = rs3.Fields(3).value
LtItm.SubItems(3) = rs3.Fields(4).value
LtItm.SubItems(4) = rs3.Fields(5).value
LtItm.SubItems(5) = rs3.Fields(6).value
'LtItm.SubItems(6) = rs3.Fields(10).value
For i = 1 To rs2.RecordCount
If IsNull(rs3.Fields(j + 9).value) = False Then
LtItm.SubItems(i + 5) = rs3.Fields(j + 9).value
Else
LtItm.SubItems(i + 5) = ""
End If
rs2.MoveNext
Next i
End With
rs3.MoveNext
Next k
rs3.Close
End Sub Val(rs2.Fields(2).value)是j的值,也就是表一的functioncode的值,而第j + 9项就是跟表二的列名一一
对应,例如在数据库中第十列是"含沙",所以rs3.Fields(j + 9).value 就是含沙这一列的值
在k = 1的循环中,
对于
For i = 1 To rs2.RecordCount
rs2.MoveNext '取下一条记录
Next i
rs2的记录集的当前记录已经指向记录集的尾部了,
所以在接下来k = 2的循环中
在进行rs2.MoveNext就出错了,因为记录集的尾部后面没有记录了3楼也给出了解决办法,就是在每次进行For i = 1 To rs2.RecordCount之前
都要做rs2.MoveNext 的操作,把rs2的记录集的当前记录重新指向记录集的头部