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

vb 游标未声明问题

Private Sub ini_mshFlex1()  '数据列表显示:对应车辆显示最后一秒的信息 
    Dim tblName As String  '表名 
    On Error GoTo errHand 
    If Not cntMark Then 
        Call MsgError 
        Exit Sub 
    Else 
For i = 0 To intNumCar - 1 
            tblName = "GPSData" & Format(Now, "yyyymm") 
            strSql = "SELECT top 1 * FROM " & tblName & " where " 
            strSql = strSql & "1=1" 
            strSql = strSql & " and CarNO='" & strListCarNO(i) & "'" 
'            strSql = strSql & " and flag=1" 
            strSql = strSql & " order by BoxTime desc" 
            Set rst = Cn.OpenResultset(strSql, rdOpenStatic)  '就是这里老出现游标未声明的错误 
            If Not rst.EOF Then 
                While Not rst.EOF 
                    MDIfrmMain.msFlex1.Rows = MDIfrmMain.msFlex1.Rows + 1 
                    lngListI = lngListI + 1 
                    MDIfrmMain.msFlex1.Row = lngListI 
                    MDIfrmMain.msFlex1.Col = 0 
                    MDIfrmMain.msFlex1.Text = lngListI 
                    
                    MDIfrmMain.msFlex1.Col = 1 
                    MDIfrmMain.msFlex1.Text = rst!CarNO 
                    
                    MDIfrmMain.msFlex1.Col = 2 
                    MDIfrmMain.msFlex1.Text = rst!Longitude 
                    
                    MDIfrmMain.msFlex1.Col = 3 
                    MDIfrmMain.msFlex1.Text = rst!latitude 
                    
                    MDIfrmMain.msFlex1.Col = 4 
                    MDIfrmMain.msFlex1.Text = rst!BoxSpeed 
                
                    MDIfrmMain.msFlex1.Col = 5 
                    MDIfrmMain.msFlex1.Text = rst!BoxDirec 
                
                    MDIfrmMain.msFlex1.Col = 6 
                    MDIfrmMain.msFlex1.Text = rst!BoxTime 
                
                    MDIfrmMain.msFlex1.Col = 7 
                    MDIfrmMain.msFlex1.Text = IIf(rst!GPSState = 1, "定位", "不定位")      'Gps状态 
                
                    MDIfrmMain.msFlex1.Col = 8 
                    MDIfrmMain.msFlex1.Text = IIf(rst!RelayState = 1, "断油断电", "-")  '继电器状态 
                
                    MDIfrmMain.msFlex1.Col = 9 
                    MDIfrmMain.msFlex1.Text = IIf(rst!AlarmSt1 = 1, "开", "-")    '车门状态 
                
                    MDIfrmMain.msFlex1.Col = 10 
                    MDIfrmMain.msFlex1.Text = IIf(rst!AlarmSt2 = 1, "报警", "-")    '开关量2状态 
                
                    MDIfrmMain.msFlex1.Col = 11 
                    MDIfrmMain.msFlex1.Text = IIf(rst!AlarmSt3 = 1, "报警", "-")  '电源状态 
                
                    MDIfrmMain.msFlex1.Col = 12 
                    MDIfrmMain.msFlex1.Text = IIf(rst!AlarmSt4 = 1, "报警", "-")    '电源低压报警 

                    MDIfrmMain.msFlex1.Col = 13 
                    MDIfrmMain.msFlex1.Text = IIf(rst!AlarmSt5 = 1, "超速", "-")    '超速报警 
                    rst.MoveNext 
                Wend 
            End If 
        Next 
        rst.Close 
    End If 
    Exit Sub 
errHand: 
    Call MsgError 
End Sub 
我以前学的是java,现在工作不景气,好不容易找了份工。前面的前辈留下了份东西,是vb写的。我现在要给它运行起来,可是里面有很多的地方出现游标未声明的错误,不知道为什么!!郁闷了老久了,现在求求大仙们帮忙解决! 

Set rst = Cn.OpenResultset(strSql, rdOpenStatic)  基本每个用到这句的功能模块都出现游标未声明的问题 
Public Cn As rdoConnection      
Public rst As rdoResultset    'rst和cn的定义 --------------------编程问答-------------------- 大哥大姐们求求你们帮忙解答! --------------------编程问答-------------------- rdoConnection
rdoResultset 不熟悉这种类型
--------------------编程问答-------------------- 帖子加到100分,诚求答案 --------------------编程问答-------------------- 改用 rdOpenKeyset 或 rdOpenDynamic 试试,不同的数据库支持的游标不一样。 --------------------编程问答-------------------- 我用的是SqlServer2000 --------------------编程问答-------------------- 你装MSDN了么,里面有一篇文章叫:Choosing an RDO Cursor Type,可以参考一下。 --------------------编程问答-------------------- 英文的 !看不太懂 --------------------编程问答-------------------- 我的MSDN是英文版的,中文版的MSDN里对应的文章是中文的,你搜“RDO 游标类型”应该就能搜到。 --------------------编程问答-------------------- 有没有可能是系统兼容性的问题,我服务端上在我自己的笔记本上运行,用的是xp sp3的系统,客户端实在公司电脑上用的是xp sp2的系统。有没有可能是系统问题! --------------------编程问答-------------------- Set rst = Cn.OpenResultset(strSql, rdOpenStatic)  '就是这里老出现游标未声明的错误 

为什么要这样写,改用下面的,试试

dim cn as New ADODB.Connection
dim rs as New ADODB.Recordset
cn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=数据库;Data Source=."
strSql="......"
rs.Open strSql, cn, adOpenKeyset, adLockOptimistic
--------------------编程问答-------------------- 10楼:看清楚,是 RDO。 --------------------编程问答-------------------- 没用过rdo,如果可能不如改用ado好了...
相应的资料网络上很多,用ado的人也多,应该可以帮上你的人也多。
--------------------编程问答--------------------
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,