请教:为什么我的rs.find方法失效?
各位大虾:首先我打开一个记录集,代码如下:
l_strSQL = "SELECT UserName, Pass, TrueName,Descrip,cEmployeeNo,dept.部门" & vbNewLine
l_strSQL = l_strSQL & ",CostDept.部门 as CostDeptName" & vbNewLine
l_strSQL = l_strSQL & ",cAddBy" & vbNewLine
l_strSQL = l_strSQL & ",dAddDate" & vbNewLine
l_strSQL = l_strSQL & ",cLastBy" & vbNewLine
l_strSQL = l_strSQL & ",dLastDate" & vbNewLine
l_strSQL = l_strSQL & ",iAutoId" & vbNewLine
l_strSQL = l_strSQL & "FROM users " & vbNewLine
l_strSQL = l_strSQL & "left join Employees" & vbNewLine
l_strSQL = l_strSQL & "on Users.cEmployeeNo=rtrim(Employees.员工编号)" & vbNewLine
l_strSQL = l_strSQL & "left join dept" & vbNewLine
l_strSQL = l_strSQL & "on rtrim(Employees.部门编号)=rtrim(dept.编号)" & vbNewLine
l_strSQL = l_strSQL & "left join dept CostDept" & vbNewLine
l_strSQL = l_strSQL & "on rtrim(users.cCostDeptNo)=rtrim(CostDept.编号)" & vbNewLine
l_strSQL = l_strSQL & "order by users.iAutoId" & vbNewLine
Set m_rs = New ADODB.Recordset
conn.CursorLocation = adUseClient
m_rs.Open l_strSQL, conn, adOpenStatic, adLockReadOnly
conn.CursorLocation = adUseServer
然后在系统的某一处运行:m_rs.find "iAutoId=7",却定位不到这条记录呢?(m_rs.EOF=True)
但在查询分析器中是可以查到这条记录的
注:iAutoId是唯一值
请高手帮忙解决,谢谢!
--------------------编程问答-------------------- 索引支持以及查找、排序和筛选
可能是游标设置问题,请参阅以下内容:
--------------------编程问答-------------------- 能否清晰一些啊,具体该如何解决?你的意思是去掉游标的设置就可以了吗?
'对字段的索引可极大增强新 Recordset 对象的 Find 方法以及 Sort 和 Filter 属性的性能。在 ADO 2.0 中,可通
'过设置 Field 对象的动态 Optimize 属性来为它创建内部索引。将 CursorLocation 设置为 adUseClient 时,该动
'态属性被添加到 Field 对象的 Properties 集合中。请注意该索引内置于 ADO 2.0,因此无法对它进行访问或用于其
'他方面。
'Sort 属性决定移动 Recordset 行的顺序;Filter 属性决定移动行时哪些行是可用的;Find 方法可在 Recordset 已
'索引的列(字段)中快速找出数值。
真的没有人知道吗?急啊 --------------------编程问答-------------------- 我曾经尝试用Filter来解决这个问题,但问题是用了Filter之后Rs.movenext等移动的方法就没有用了 --------------------编程问答-------------------- 不好意思,以上问题已经可以了
但出现了另外一个问题,就是ms_find "iAutoId=7"方法运行之后,再运行m_rs.moveprevious方法就不行了
但m_rs.movenext就可以
是什么原因啊? --------------------编程问答--------------------
Set m_rs = New ADODB.Recordset
'conn.CursorLocation = adUseClient
'第3、4个参数,同样的值在不同的数据库中表现会不一样,用不同组合试试
m_rs.Open l_strSQL, conn, adOpenKeyset, adLockReadOnly, adCmdText
'直接将记录集和连接对象断开,就不会受到 conn 变更的影响
Set m_rs.ActiveConnection = Nothing
'conn.CursorLocation= adUseServer
已打开的连接更改 CursorLocation 是无效的:
补充:VB , 数据库(包含打印,安装,报表)