当前位置:编程学习 > VB >>

程序运行弹出 对象变量或with变量未设置 错误

Public Sub intTreeData()
Dim objNode As Node
    Dim objRecordset As ADODB.Recordset
    Dim objSubRecordset As ADODB.Recordset
    Dim strSQL As String
    Dim strClass As String
    
    TreeView1.Nodes.Clear
    
    '显示根节点
    strClass = "避雷器在线监测"
    TreeView1.LineStyle = tvwRootLines
    '查询线路
    strSQL = "select distinct 线路 from 参数表 order by 线路"
    Set objRecordset = ExecuteSQL(strSQL)
    '查询参数
    strSQL = "select distinct 线路,参数 from 参数表 order by 线路,参数"
    Set objSubRecordset = ExecuteSQL(strSQL)
    
    objRecordset.MoveFirst       这里显示错误  对象变量或with变量未设置
    '将参数信息添加到TreeView控件中
    Do Until objRecordset.EOF
        objSubRecordset.MoveFirst
        Set objNode = TreeView1.Nodes.Add(, , strClass, objRecordset.Fields(0))
        
        Do While Not objSubRecordset.EOF
            If objSubRecordset.Fields(0) = objRecordset.Fields(0) Then
                Set objNode = TreeView1.Nodes.Add(strClass, tvwChild, , _
                                objSubRecordset.Fields(1))
            End If
            objSubRecordset.MoveNext
        Loop
        
        strClass = strClass & "1"
        objRecordset.MoveNext
    Loop
    
    objSubRecordset.Close
    objRecordset.Close
    Set objRecordset = Nothing
    Set objSubRecordset = Nothing
End Sub

问题出现在红字那里,求各位大神求解 ExecuteSQL没有返回有效的Recordset对象。天知道ExecuteSQL你怎么写的。  objRecordset.MoveFirst       '这一句是多余的。

另外,要解决你的问题,需要查看你的 Connection 对象是否正确打开,以及 ExecuteSQL 函数是否正确执行了 RecordSet 对象的打开操作。

不知道你有没有定义连接对象,可以定义一个dim cn as new ADODB.connection,Set cn = New ADODB.Connection,cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\你的数据库名称.mdb;Jet OLEDB:Database Password=;Persist Security Info=False;",哦,先工程中引用一下,,,仅供参考
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,