Office中国论坛/Access中国论坛

标题: ADO FindFirst 方法出现错误 [打印本页]

作者: doney88    时间: 2015-1-26 16:30
标题: ADO FindFirst 方法出现错误
错误代码: 3251  -  这种对象类型不支持该操作。

缘由是这样的,我窗体中有两个TreeView控件。

我刚开始只有一个的时候运行的好好的,但是在加了第二个。

也就是需要两次利用Dao对两个不同的TreeView加载树的时候,在第一个Dao运用的时候就出现了这个错误提示。

我试着注释掉第一个树控件的加载。结果运行第二个没有问题。

语法全部都一样。很奇怪这是为什么呢?

作者: doney88    时间: 2015-1-26 16:31
代码是这样的:

'==================================
'加载Treeview - DBOM
'==================================
Sub DBOMTreeAdd(ByVal lngProductID As Long, ByRef objTree As TreeView)

Dim db As dao.Database
Dim rst As dao.Recordset

Dim nodCurrent As node
Dim strText$
Dim bk$

    Set rst = CurrentDb.OpenRecordset("tblBOM_Design")
   
    '清空所有树
    objTree.Nodes.Clear
   
    '查找第一个符合标准的值
    rst.FindFirst " FMainID=" & lngProductID
   
    Do Until rst.NoMatch
        
        strText = "[" & DLookup("[FProductCode] & '-' &  [FNote]", "tblProduct", "FProductID=" & rst!FChildID) & _
                    "]--配额:" & rst!FQty & _
                    IIf(IsNull(rs!FNote), "", ";" & rst!FNote)
        bk = rst.Bookmark
        objTree.Nodes.Add , , "a" & rst!FDBOMID, strText, 1, 2
        nodCurrent.Expanded = True
        rst.Bookmark = bk
        rst.FindNext "FMainID=" & lngMaterialID
    Loop
   
Exit_BOMTreeAdd:
    Set rst = Nothing
   
   
End Sub
作者: todaynew    时间: 2015-1-26 16:45
doney88 发表于 2015-1-26 16:31
代码是这样的:

'==================================

写到where子句中应该更简单一些。
作者: doney88    时间: 2015-1-26 17:04
todaynew 发表于 2015-1-26 16:45
写到where子句中应该更简单一些。

谢谢,虽然不知道为什么,但是用你的办法还是成功解决了问题。
作者: 风中漫步    时间: 2015-1-26 17:15
呵呵,斑竹就是有这种化腐朽为神气的功力.建议以后能放个问题库,那样热心人能方便的调试代码为你解决问题
作者: doney88    时间: 2015-1-29 01:05
为了让以后查找贴的人朋友能及时解决问题,我这个问题的最终解决办法,经过测试得出的结论是。

db.Openrecordset 打开表的时候 第二个Type 填入dbOpenDynaset(Recordset对象表类型) 就可以了。

此贴完整了。。
作者: zpy2    时间: 2015-1-29 05:12
https://msdn.microsoft.com/zh-cn/library/windows/apps/ff820966.aspx默认是表集 可能不支持FindFirst




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3